diff --git a/CHANGES/432.feature b/CHANGES/432.feature new file mode 100644 index 000000000..8af09f26e --- /dev/null +++ b/CHANGES/432.feature @@ -0,0 +1 @@ +Add models for container registry sync config diff --git a/galaxy_ng/app/migrations/0016_containerregistryremote_containerregistryrepos_containersynctask.py b/galaxy_ng/app/migrations/0016_containerregistryremote_containerregistryrepos_containersynctask.py new file mode 100644 index 000000000..21b06fc2d --- /dev/null +++ b/galaxy_ng/app/migrations/0016_containerregistryremote_containerregistryrepos_containersynctask.py @@ -0,0 +1,46 @@ +# Generated by Django 2.2.19 on 2021-03-18 00:37 + +from django.db import migrations, models +import django.db.models.deletion +import django_lifecycle.mixins +import galaxy_ng.app.access_control.mixins + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0061_call_handle_artifact_checksums_command'), + ('container', '0018_containerdistribution_description'), + ('galaxy', '0015_containerdistroreadme'), + ] + + operations = [ + migrations.CreateModel( + name='ContainerRegistryRemote', + fields=[ + ('remote_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='galaxy_containerregistryremote', serialize=False, to='core.Remote')), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + }, + bases=('core.remote', galaxy_ng.app.access_control.mixins.GroupModelPermissionsMixin), + ), + migrations.CreateModel( + name='ContainerSyncTask', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('repository', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='container.ContainerRepository')), + ('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Task')), + ], + options={ + 'ordering': ['-task__finished_at'], + }, + ), + migrations.CreateModel( + name='ContainerRegistryRepos', + fields=[ + ('repository_remote', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='container.ContainerRemote')), + ('registry', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='galaxy.ContainerRegistryRemote')), + ], + ), + ] diff --git a/galaxy_ng/app/models/container.py b/galaxy_ng/app/models/container.py index 3460a6659..06303f8b7 100644 --- a/galaxy_ng/app/models/container.py +++ b/galaxy_ng/app/models/container.py @@ -1,5 +1,5 @@ from django.db import models - +from pulpcore.plugin import models as pulp_models from pulp_container.app import models as container_models from django_lifecycle import LifecycleModelMixin @@ -23,3 +23,38 @@ class ContainerDistroReadme(models.Model): created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True, null=True) text = models.TextField(blank=True) + + +class ContainerRegistryRemote( + pulp_models.Remote, + mixins.GroupModelPermissionsMixin, +): + + class Meta: + default_related_name = "%(app_label)s_%(model_name)s" + + +class ContainerRegistryRepos(models.Model): + registry = models.ForeignKey( + ContainerRegistryRemote, + on_delete=models.CASCADE, + ) + repository_remote = models.OneToOneField( + container_models.ContainerRemote, + on_delete=models.CASCADE, + primary_key=True, + ) + + +class ContainerSyncTask(models.Model): + repository = models.ForeignKey( + container_models.ContainerRepository, + on_delete=models.CASCADE, + ) + task = models.ForeignKey( + pulp_models.Task, + on_delete=models.CASCADE, + ) + + class Meta: + ordering = ['-task__finished_at']