Skip to content

Add domain support #1262

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/scripts/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ if [ "$TEST" = "azure" ]; then
- ./azurite:/etc/pulp\
command: "azurite-blob --blobHost 0.0.0.0"' vars/main.yaml
sed -i -e '$a azure_test: true\
pulp_scenario_settings: null\
pulp_scenario_settings: {"domain_enabled": true}\
pulp_scenario_env: {}\
' vars/main.yaml
fi
Expand Down
1 change: 1 addition & 0 deletions pulp_deb/app/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ class PulpDebPluginAppConfig(PulpPluginAppConfig):
label = "deb"
version = "3.6.0.dev"
python_package_name = "pulp_deb"
domain_compatible = True
172 changes: 172 additions & 0 deletions pulp_deb/app/migrations/0031_add_domains.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
# Generated by Django 4.2.21 on 2025-06-26 07:53

from django.db import migrations, models
import django.db.models.deletion
import pulpcore.app.util


class Migration(migrations.Migration):

dependencies = [
('core', '0131_distribution_checkpoint_publication_checkpoint'),
('deb', '0030_rbac_permissions'),
]

operations = [
migrations.AlterUniqueTogether(
name='genericcontent',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='installerfileindex',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='installerpackage',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='package',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='packageindex',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='packagereleasecomponent',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='release',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='releasearchitecture',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='releasecomponent',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='releasefile',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='sourceindex',
unique_together=set(),
),
migrations.AlterUniqueTogether(
name='sourcepackagereleasecomponent',
unique_together=set(),
),
migrations.AddField(
model_name='genericcontent',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='installerfileindex',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='installerpackage',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='package',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='packageindex',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='packagereleasecomponent',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='release',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='releasearchitecture',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='releasecomponent',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='releasefile',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='sourceindex',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AddField(
model_name='sourcepackagereleasecomponent',
name='_pulp_domain',
field=models.ForeignKey(default=pulpcore.app.util.get_domain_pk, on_delete=django.db.models.deletion.PROTECT, to='core.domain'),
),
migrations.AlterUniqueTogether(
name='genericcontent',
unique_together={('relative_path', 'sha256', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='installerfileindex',
unique_together={('relative_path', 'sha256', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='installerpackage',
unique_together={('relative_path', 'sha256', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='package',
unique_together={('relative_path', 'sha256', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='packageindex',
unique_together={('relative_path', 'sha256', 'artifact_set_sha256', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='packagereleasecomponent',
unique_together={('package', 'release_component', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='release',
unique_together={('codename', 'suite', 'distribution', 'version', 'origin', 'label', 'description', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='releasearchitecture',
unique_together={('distribution', 'architecture', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='releasecomponent',
unique_together={('distribution', 'component', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='releasefile',
unique_together={('codename', 'suite', 'distribution', 'components', 'architectures', 'relative_path', 'sha256', 'artifact_set_sha256', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='sourceindex',
unique_together={('relative_path', 'sha256', '_pulp_domain')},
),
migrations.AlterUniqueTogether(
name='sourcepackagereleasecomponent',
unique_together={('source_package', 'release_component', '_pulp_domain')},
),
]
7 changes: 5 additions & 2 deletions pulp_deb/app/models/content/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from django.db.models import JSONField

from pulpcore.plugin.models import Content
from pulpcore.plugin.util import get_domain_pk

BOOL_CHOICES = [(True, "yes"), (False, "no")]

Expand Down Expand Up @@ -68,6 +69,7 @@ class BasePackage(Content):
sha256 = models.TextField(null=False)

custom_fields = JSONField(null=True)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

@property
def name(self):
Expand All @@ -92,7 +94,7 @@ def filename(self, component=""):

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
unique_together = (("relative_path", "sha256"),)
unique_together = (("relative_path", "sha256", "_pulp_domain"),)
abstract = True


Expand Down Expand Up @@ -141,10 +143,11 @@ class GenericContent(Content):

relative_path = models.TextField(null=False)
sha256 = models.CharField(max_length=255, null=False)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
unique_together = (("relative_path", "sha256"),)
unique_together = (("relative_path", "sha256", "_pulp_domain"),)


class SourcePackage(Content):
Expand Down
13 changes: 12 additions & 1 deletion pulp_deb/app/models/content/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from django.db import models

from pulpcore.plugin.models import Content
from pulpcore.plugin.util import get_domain_pk

from pulp_deb.app.constants import NULL_VALUE

Expand All @@ -28,11 +29,21 @@ class Release(Content):
origin = models.TextField(default=NULL_VALUE)
label = models.TextField(default=NULL_VALUE)
description = models.TextField(default=NULL_VALUE)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

repo_key_fields = ("distribution",)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
unique_together = (
("codename", "suite", "distribution", "version", "origin", "label", "description"),
(
"codename",
"suite",
"distribution",
"version",
"origin",
"label",
"description",
"_pulp_domain",
),
)
13 changes: 9 additions & 4 deletions pulp_deb/app/models/content/structure_content.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from django.db import models

from pulpcore.plugin.models import Content
from pulpcore.plugin.util import get_domain_pk

from pulp_deb.app.models import Package, SourcePackage

Expand All @@ -39,10 +40,11 @@ class ReleaseArchitecture(Content):

distribution = models.TextField()
architecture = models.TextField()
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
unique_together = (("distribution", "architecture"),)
unique_together = (("distribution", "architecture", "_pulp_domain"),)


class ReleaseComponent(Content):
Expand All @@ -57,6 +59,7 @@ class ReleaseComponent(Content):

distribution = models.TextField()
component = models.TextField()
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

@property
def plain_component(self):
Expand All @@ -76,7 +79,7 @@ def plain_component(self):

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
unique_together = (("distribution", "component"),)
unique_together = (("distribution", "component", "_pulp_domain"),)


class PackageReleaseComponent(Content):
Expand All @@ -91,10 +94,11 @@ class PackageReleaseComponent(Content):

package = models.ForeignKey(Package, on_delete=models.CASCADE)
release_component = models.ForeignKey(ReleaseComponent, on_delete=models.CASCADE)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
unique_together = (("package", "release_component"),)
unique_together = (("package", "release_component", "_pulp_domain"),)


class SourcePackageReleaseComponent(Content):
Expand All @@ -109,7 +113,8 @@ class SourcePackageReleaseComponent(Content):

source_package = models.ForeignKey(SourcePackage, on_delete=models.CASCADE)
release_component = models.ForeignKey(ReleaseComponent, on_delete=models.CASCADE)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
unique_together = (("source_package", "release_component"),)
unique_together = (("source_package", "release_component", "_pulp_domain"),)
12 changes: 9 additions & 3 deletions pulp_deb/app/models/content/verbatim_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from django.db import models

from pulpcore.plugin.models import Content
from pulpcore.plugin.util import get_domain_pk


BOOL_CHOICES = [(True, "yes"), (False, "no")]
Expand All @@ -31,6 +32,7 @@ class ReleaseFile(Content):
relative_path = models.TextField()
sha256 = models.CharField(max_length=255)
artifact_set_sha256 = models.CharField(max_length=255)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
Expand All @@ -44,6 +46,7 @@ class Meta:
"relative_path",
"sha256",
"artifact_set_sha256",
"_pulp_domain",
),
)

Expand Down Expand Up @@ -72,11 +75,12 @@ class PackageIndex(Content):
relative_path = models.TextField()
sha256 = models.CharField(max_length=255)
artifact_set_sha256 = models.CharField(max_length=255)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
verbose_name_plural = "PackageIndices"
unique_together = (("relative_path", "sha256", "artifact_set_sha256"),)
unique_together = (("relative_path", "sha256", "artifact_set_sha256", "_pulp_domain"),)

@property
def main_artifact(self):
Expand Down Expand Up @@ -104,11 +108,12 @@ class InstallerFileIndex(Content):
architecture = models.TextField()
relative_path = models.TextField()
sha256 = models.CharField(max_length=255)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
verbose_name_plural = "InstallerFileIndices"
unique_together = (("relative_path", "sha256"),)
unique_together = (("relative_path", "sha256", "_pulp_domain"),)

@property
def main_artifact(self):
Expand All @@ -134,11 +139,12 @@ class SourceIndex(Content):
component = models.CharField(max_length=255)
relative_path = models.TextField()
sha256 = models.CharField(max_length=255)
_pulp_domain = models.ForeignKey("core.Domain", default=get_domain_pk, on_delete=models.PROTECT)

class Meta:
default_related_name = "%(app_label)s_%(model_name)s"
verbose_name_plural = "SourceIndices"
unique_together = (("relative_path", "sha256"),)
unique_together = (("relative_path", "sha256", "_pulp_domain"),)

@property
def main_artifact(self):
Expand Down
Loading
Loading