diff --git a/pulp_ansible/app/migrations/0001_initial.py b/pulp_ansible/app/migrations/0001_initial.py deleted file mode 100644 index c37505dbf..000000000 --- a/pulp_ansible/app/migrations/0001_initial.py +++ /dev/null @@ -1,75 +0,0 @@ -# Generated by Django 4.2.16 on 2024-12-05 12:33 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('core', '0091_systemid'), - ] - - operations = [ - migrations.CreateModel( - name='AnsibleRemote', - fields=[ - ('remote_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.remote')), - ], - options={ - 'abstract': False, - }, - bases=('core.remote',), - ), - migrations.CreateModel( - name='CollectionRemote', - fields=[ - ('remote_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.remote')), - ('whitelist', models.TextField()), - ], - options={ - 'abstract': False, - }, - bases=('core.remote',), - ), - migrations.CreateModel( - name='Role', - fields=[ - ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), - ('namespace', models.CharField(max_length=64)), - ('name', models.CharField(max_length=64)), - ('version', models.CharField(max_length=128)), - ], - options={ - 'unique_together': {('version', 'name', 'namespace')}, - }, - bases=('core.content',), - ), - migrations.CreateModel( - name='Collection', - fields=[ - ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), - ('namespace', models.CharField(max_length=64)), - ('name', models.CharField(max_length=64)), - ('version', models.CharField(max_length=128)), - ], - options={ - 'unique_together': {('namespace', 'name', 'version')}, - }, - bases=('core.content',), - ), - migrations.CreateModel( - name='AnsibleDistribution', - fields=[ - ('basedistribution_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.basedistribution')), - ('repository', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.repository')), - ('repository_version', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='core.repositoryversion')), - ], - options={ - 'abstract': False, - }, - bases=('core.basedistribution',), - ), - ] diff --git a/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py b/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py index a1b7a10b3..488129a2d 100644 --- a/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py +++ b/pulp_ansible/app/migrations/0001_initial_squashed_0040_ansiblerepository_keyring.py @@ -9,49 +9,6 @@ class Migration(migrations.Migration): - replaces = [ - ("ansible", "0001_initial"), - ("ansible", "0002_advanced_collections"), - ("ansible", "0003_add_tags_and_collectionversion_fields"), - ("ansible", "0004_add_fulltext_search_indexes"), - ("ansible", "0005_collectionversion_is_highest"), - ("ansible", "0006_remove_whitelist_and_alter_collection_version_name"), - ("ansible", "0007_collectionversion_is_certified"), - ("ansible", "0008_collectionremote_requirements_file"), - ("ansible", "0009_collectionimport"), - ("ansible", "0010_ansible_related_names"), - ("ansible", "0011_collectionimport"), - ("ansible", "0012_auto_20190906_2253"), - ("ansible", "0013_pulp_fields"), - ("ansible", "0014_certification_enum"), - ("ansible", "0015_ansiblerepository"), - ("ansible", "0016_add_extension"), - ("ansible", "0017_increase_length_collectionversion_fields"), - ("ansible", "0018_fix_collection_relative_path"), - ("ansible", "0019_collection_token"), - ("ansible", "0020_auto_20200810_1926"), - ("ansible", "0021_rename_role_remote"), - ("ansible", "0022_URLField_to_CharField"), - ("ansible", "0023_alter_requirements_file_field"), - ("ansible", "0024_remove_collectionversion_certification"), - ("ansible", "0025_increase_collection_version_version_size"), - ("ansible", "0026_deprecation_per_repository"), - ("ansible", "0027_tag_length"), - ("ansible", "0028_collectionversion_namespace_length"), - ("ansible", "0029_manifest_and_files_json_fields"), - ("ansible", "0030_collectionversion_requires_ansible"), - ("ansible", "0031_ansiblerepository_last_synced_metadata_time"), - ("ansible", "0032_collectionremote_sync_dependencies"), - ("ansible", "0033_swap_distribution_model"), - ("ansible", "0034_handle_jsonfield_warnings"), - ("ansible", "0035_deprecation_content"), - ("ansible", "0036_update_repository_content"), - ("ansible", "0037_gitremote"), - ("ansible", "0038_collectionversionsignature"), - ("ansible", "0039_collectionremote_signed_only"), - ("ansible", "0040_ansiblerepository_keyring"), - ] - dependencies = [ ("core", "0091_systemid"), ] diff --git a/pulp_ansible/app/migrations/0001_squashed_0054_split_collection_version_numbers.py b/pulp_ansible/app/migrations/0001_squashed_0054_split_collection_version_numbers.py new file mode 100644 index 000000000..53c90388a --- /dev/null +++ b/pulp_ansible/app/migrations/0001_squashed_0054_split_collection_version_numbers.py @@ -0,0 +1,312 @@ +# Generated by Django 5.2.12 on 2026-04-15 08:15 + +import django.contrib.postgres.fields +import django.contrib.postgres.fields.hstore +import django.contrib.postgres.search +import django.db.models.deletion +import django_lifecycle.mixins +import pulpcore.app.models.base +import pulpcore.app.models.fields +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + replaces = [('ansible', '0001_initial_squashed_0040_ansiblerepository_keyring'), ('ansible', '0041_alter_collectionversion_collection'), ('ansible', '0042_ansiblerepository_gpgkey'), ('ansible', '0043_alter_collectionversionsignature_data'), ('ansible', '0044_alter_collectionremote_token'), ('ansible', '0045_downloadlog'), ('ansible', '0046_add_fulltext_search_fix'), ('ansible', '0047_ansible_namespace'), ('ansible', '0048_collectionversionmark'), ('ansible', '0049_rbac_permissions'), ('ansible', '0050_crossrepositorycollectionversionindex'), ('ansible', '0051_cvindex_build'), ('ansible', '0052_alter_ansiblecollectiondeprecated_content_ptr_and_more'), ('ansible', '0053_collectiondownloadcount'), ('ansible', '0054_split_collection_version_numbers')] + + initial = True + + dependencies = [ + ('core', '0106_alter_artifactdistribution_distribution_ptr_and_more'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Collection', + fields=[ + ('pulp_id', models.UUIDField(default=pulpcore.app.models.base.pulp_uuid, editable=False, primary_key=True, serialize=False)), + ('pulp_created', models.DateTimeField(auto_now_add=True)), + ('pulp_last_updated', models.DateTimeField(auto_now=True, null=True)), + ('namespace', models.CharField(editable=False, max_length=64)), + ('name', models.CharField(editable=False, max_length=64)), + ], + options={ + 'unique_together': {('namespace', 'name')}, + }, + ), + migrations.CreateModel( + name='Tag', + fields=[ + ('pulp_id', models.UUIDField(default=pulpcore.app.models.base.pulp_uuid, editable=False, primary_key=True, serialize=False)), + ('pulp_created', models.DateTimeField(auto_now_add=True)), + ('pulp_last_updated', models.DateTimeField(auto_now=True, null=True)), + ('name', models.CharField(editable=False, max_length=64, unique=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='CollectionImport', + fields=[ + ('messages', models.JSONField(default=list, editable=False)), + ('task', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='+', serialize=False, to='core.task')), + ], + options={ + 'abstract': False, + 'ordering': ['task__pulp_created'], + }, + ), + migrations.CreateModel( + name='collectionversion', + fields=[ + ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), + ('version', models.CharField(editable=False, max_length=128)), + ('contents', models.JSONField(default=list, editable=False)), + ('collection', models.ForeignKey(editable=False, on_delete=django.db.models.deletion.PROTECT, related_name='versions', to='ansible.collection')), + ('authors', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), default=list, editable=False, size=None)), + ('dependencies', models.JSONField(default=dict, editable=False)), + ('description', models.TextField(blank=True, default='', editable=False)), + ('docs_blob', models.JSONField(default=dict, editable=False)), + ('documentation', models.CharField(blank=True, default='', editable=False, max_length=2000)), + ('homepage', models.CharField(blank=True, default='', editable=False, max_length=2000)), + ('issues', models.CharField(blank=True, default='', editable=False, max_length=2000)), + ('license', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=32), default=list, editable=False, size=None)), + ('name', models.CharField(editable=False, max_length=64)), + ('namespace', models.CharField(editable=False, max_length=64)), + ('repository', models.CharField(blank=True, default='', editable=False, max_length=2000)), + ('tags', models.ManyToManyField(editable=False, to='ansible.tag')), + ('search_vector', django.contrib.postgres.search.SearchVectorField(default='')), + ('is_highest', models.BooleanField(default=False, editable=False)), + ('files', models.JSONField(default=dict, editable=False)), + ('manifest', models.JSONField(default=dict, editable=False)), + ('requires_ansible', models.CharField(max_length=255, null=True)), + ('version_major', models.IntegerField()), + ('version_minor', models.IntegerField()), + ('version_patch', models.IntegerField()), + ('version_prerelease', models.CharField(max_length=128)), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'unique_together': {('namespace', 'name', 'version')}, + }, + bases=('core.content',), + ), + migrations.CreateModel( + name='AnsibleNamespace', + fields=[ + ('pulp_id', models.UUIDField(default=pulpcore.app.models.base.pulp_uuid, editable=False, primary_key=True, serialize=False)), + ('pulp_created', models.DateTimeField(auto_now_add=True)), + ('pulp_last_updated', models.DateTimeField(auto_now=True, null=True)), + ('name', models.CharField(max_length=64, unique=True)), + ], + options={ + 'abstract': False, + }, + bases=(django_lifecycle.mixins.LifecycleModelMixin, models.Model), + ), + migrations.CreateModel( + name='AnsibleNamespaceMetadata', + fields=[ + ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), + ('name', models.CharField(max_length=64)), + ('company', models.CharField(blank=True, default='', max_length=64)), + ('email', models.CharField(blank=True, default='', max_length=256)), + ('description', models.CharField(blank=True, default='', max_length=256)), + ('resources', models.TextField(blank=True, default='')), + ('links', django.contrib.postgres.fields.hstore.HStoreField(default=dict)), + ('avatar_sha256', models.CharField(max_length=64, null=True)), + ('metadata_sha256', models.CharField(db_index=True, max_length=64)), + ('namespace', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='metadatas', to='ansible.ansiblenamespace')), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'unique_together': {('metadata_sha256',)}, + }, + bases=('core.content',), + ), + migrations.CreateModel( + name='AnsibleDistribution', + fields=[ + ('distribution_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.distribution')), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'permissions': [('manage_roles_ansibledistribution', 'Can manage roles on distributions')], + }, + bases=('core.distribution',), + ), + migrations.CreateModel( + name='AnsibleRepository', + fields=[ + ('repository_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.repository')), + ('last_synced_metadata_time', models.DateTimeField(null=True)), + ('gpgkey', models.TextField(null=True)), + ('private', models.BooleanField(default=False)), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'permissions': [('rebuild_metadata_ansiblerepository', 'Can rebuild metadata on the repository'), ('repair_ansiblerepository', 'Can repair the repository'), ('sign_ansiblerepository', 'Can sign content on the repository'), ('sync_ansiblerepository', 'Can start a sync task on the repository'), ('manage_roles_ansiblerepository', 'Can manage roles on repositories'), ('modify_ansible_repo_content', 'Can modify repository content')], + }, + bases=('core.repository',), + ), + migrations.CreateModel( + name='CollectionRemote', + fields=[ + ('remote_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.remote')), + ('requirements_file', models.TextField(null=True)), + ('auth_url', models.CharField(max_length=255, null=True)), + ('sync_dependencies', models.BooleanField(default=True)), + ('signed_only', models.BooleanField(default=False)), + ('token', pulpcore.app.models.fields.EncryptedTextField(null=True)), + ], + options={ + 'abstract': False, + 'default_related_name': '%(app_label)s_%(model_name)s', + 'permissions': (('manage_roles_collectionremote', 'Can manage roles on collection remotes'),), + }, + bases=('core.remote',), + ), + migrations.CreateModel( + name='CollectionVersionMark', + fields=[ + ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), + ('value', models.SlugField()), + ('marked_collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='marks', to='ansible.collectionversion')), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'unique_together': {('value', 'marked_collection')}, + }, + bases=('core.content',), + ), + migrations.CreateModel( + name='CollectionVersionSignature', + fields=[ + ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), + ('digest', models.CharField(max_length=64)), + ('pubkey_fingerprint', models.CharField(max_length=64)), + ('signed_collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='signatures', to='ansible.collectionversion')), + ('signing_service', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='signatures', to='core.signingservice')), + ('data', models.TextField()), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'unique_together': {('pubkey_fingerprint', 'signed_collection')}, + }, + bases=('core.content',), + ), + migrations.CreateModel( + name='CrossRepositoryCollectionVersionIndex', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_deprecated', models.BooleanField()), + ('is_signed', models.BooleanField()), + ('is_highest', models.BooleanField()), + ('collection_version', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ansible.collectionversion')), + ('namespace_metadata', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='ansible.ansiblenamespacemetadata')), + ('repository', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ansible.ansiblerepository')), + ('repository_version', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.repositoryversion')), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'unique_together': {('repository', 'repository_version', 'collection_version')}, + }, + ), + migrations.CreateModel( + name='CollectionDownloadCount', + fields=[ + ('pulp_id', models.UUIDField(default=pulpcore.app.models.base.pulp_uuid, editable=False, primary_key=True, serialize=False)), + ('pulp_created', models.DateTimeField(auto_now_add=True)), + ('pulp_last_updated', models.DateTimeField(auto_now=True, null=True)), + ('namespace', models.CharField(db_index=True, editable=False, max_length=64)), + ('name', models.CharField(db_index=True, editable=False, max_length=64)), + ('download_count', models.BigIntegerField(default=0)), + ], + options={ + 'unique_together': {('namespace', 'name')}, + }, + bases=(django_lifecycle.mixins.LifecycleModelMixin, models.Model), + ), + migrations.CreateModel( + name='DownloadLog', + fields=[ + ('pulp_id', models.UUIDField(default=pulpcore.app.models.base.pulp_uuid, editable=False, primary_key=True, serialize=False)), + ('pulp_created', models.DateTimeField(auto_now_add=True)), + ('pulp_last_updated', models.DateTimeField(auto_now=True, null=True)), + ('ip', models.GenericIPAddressField()), + ('extra_data', models.JSONField(null=True)), + ('user_agent', models.TextField()), + ('content_unit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='download_logs', to='core.content')), + ('repository', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='download_logs', to='core.repository')), + ('repository_version', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='download_logs', to='core.repositoryversion')), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='download_logs', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'abstract': False, + }, + bases=(django_lifecycle.mixins.LifecycleModelMixin, models.Model), + ), + migrations.CreateModel( + name='GitRemote', + fields=[ + ('remote_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.remote')), + ('metadata_only', models.BooleanField(default=False)), + ('git_ref', models.TextField()), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'permissions': [('manage_roles_gitremote', 'Can manage roles on git remotes')], + }, + bases=('core.remote',), + ), + migrations.CreateModel( + name='Role', + fields=[ + ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), + ('namespace', models.CharField(max_length=64)), + ('name', models.CharField(max_length=64)), + ('version', models.CharField(max_length=128)), + ], + options={ + 'unique_together': {('version', 'name', 'namespace')}, + 'default_related_name': '%(app_label)s_%(model_name)s', + }, + bases=('core.content',), + ), + migrations.CreateModel( + name='RoleRemote', + fields=[ + ('remote_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.remote')), + ], + options={ + 'abstract': False, + 'default_related_name': '%(app_label)s_%(model_name)s', + 'permissions': [('manage_roles_roleremote', 'Can manage roles on role remotes')], + }, + bases=('core.remote',), + ), + migrations.CreateModel( + name='AnsibleCollectionDeprecated', + fields=[ + ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='core.content')), + ('namespace', models.CharField(editable=False, max_length=64)), + ('name', models.CharField(editable=False, max_length=64)), + ], + options={ + 'default_related_name': '%(app_label)s_%(model_name)s', + 'unique_together': {('namespace', 'name')}, + }, + bases=('core.content',), + ), + migrations.AddConstraint( + model_name='collectionversion', + constraint=models.UniqueConstraint(condition=models.Q(('is_highest', True)), fields=('collection', 'is_highest'), name='unique_is_highest'), + ), + migrations.RunSQL( + sql='\nCREATE OR REPLACE FUNCTION update_collection_ts_vector()\n RETURNS TRIGGER AS\n$$\nBEGIN\n NEW.search_vector := (\n SELECT \n setweight(to_tsvector(coalesce(namespace,\'\')), \'A\')\n || setweight(to_tsvector(coalesce(name, \'\')), \'A\')\n || (\n SELECT\n setweight(to_tsvector(\n coalesce(string_agg("ansible_tag"."name", \' \'), \'\')\n ), \'B\')\n FROM\n "ansible_tag" INNER JOIN "ansible_collectionversion_tags"\n ON\n ("ansible_tag"."pulp_id" = "ansible_collectionversion_tags"."tag_id" )\n WHERE\n "ansible_collectionversion_tags"."collectionversion_id" = cv.content_ptr_id\n )\n || (\n SELECT\n setweight(to_tsvector(\n coalesce(string_agg(cvc ->> \'name\', \' \'), \'\')\n ), \'C\')\n FROM jsonb_array_elements(cv.contents) AS cvc\n )\n || setweight(to_tsvector(coalesce(description, \'\')), \'D\')\n\n FROM ansible_collectionversion cv\n WHERE cv.content_ptr_id = NEW.content_ptr_id\n );\n RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\nDROP TRIGGER IF EXISTS update_ts_vector ON ansible_collectionversion;\nCREATE TRIGGER update_ts_vector\n BEFORE UPDATE\n ON ansible_collectionversion\n FOR EACH ROW\nEXECUTE PROCEDURE update_collection_ts_vector();\n', + reverse_sql='\nDROP TRIGGER IF EXISTS update_ts_vector ON ansible_collectionversion;\nDROP FUNCTION IF EXISTS update_collection_ts_vector();\n', + ), + ] diff --git a/pulp_ansible/app/migrations/0002_advanced_collections.py b/pulp_ansible/app/migrations/0002_advanced_collections.py deleted file mode 100644 index f2045b949..000000000 --- a/pulp_ansible/app/migrations/0002_advanced_collections.py +++ /dev/null @@ -1,96 +0,0 @@ -import uuid - -from django.contrib.postgres import fields as psql_fields -from django.db import migrations -from django.db import models - - -def migrate_collections(apps, schema_editor): - Collection = apps.get_model("ansible", "Collection") - CollectionVersion = apps.get_model("ansible", "CollectionVersion") - versions = CollectionVersion.objects.order_by("namespace", "name").all() - for version in versions: - collection, _ = Collection.objects.get_or_create( - namespace=version.namespace, name=version.name - ) - version.collection = collection - # Reset `_type` value to regenerate it on `save()`. - version._type = None - version.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0001_initial'), - ] - - operations = [ - migrations.RenameModel(old_name="collection", new_name="collectionversion"), - migrations.AlterField( - model_name="collectionversion", - name="version", - field=models.CharField(max_length=128, editable=False), - ), - migrations.AddField( - model_name="collectionversion", - name="contents", - field=psql_fields.JSONField(default=list, editable=False), - ), - migrations.AddField( - model_name="collectionversion", - name="metadata", - field=psql_fields.JSONField(default=dict, editable=False), - ), - migrations.AddField( - model_name="collectionversion", - name="quality_score", - field=models.FloatField(null=True, editable=False), - ), - migrations.CreateModel( - name="Collection", - fields=[ - ( - "_id", - models.UUIDField( - default=uuid.uuid4, - editable=False, - primary_key=True, - serialize=False, - ), - ), - ("_created", models.DateTimeField(auto_now_add=True)), - ("_last_updated", models.DateTimeField(auto_now=True, null=True)), - ("namespace", models.CharField(max_length=64, editable=False)), - ("name", models.CharField(max_length=64, editable=False)), - ("deprecated", models.BooleanField(default=False)), - ], - options={"unique_together": {("namespace", "name")}}, - ), - migrations.AddField( - model_name="collectionversion", - name="collection", - field=models.ForeignKey( - to="ansible.Collection", - on_delete=models.CASCADE, - related_name="versions", - null=True, - ), - ), - migrations.RunPython(code=migrate_collections, elidable=True), - migrations.AlterField( - model_name="collectionversion", - name="collection", - field=models.ForeignKey( - to="ansible.Collection", - on_delete=models.CASCADE, - related_name="versions", - editable=False, - ), - ), - migrations.AlterUniqueTogether( - name="collectionversion", unique_together={("collection", "version")} - ), - migrations.RemoveField(model_name="collectionversion", name="name"), - migrations.RemoveField(model_name="collectionversion", name="namespace"), - ] diff --git a/pulp_ansible/app/migrations/0003_add_tags_and_collectionversion_fields.py b/pulp_ansible/app/migrations/0003_add_tags_and_collectionversion_fields.py deleted file mode 100644 index 7d4de4e64..000000000 --- a/pulp_ansible/app/migrations/0003_add_tags_and_collectionversion_fields.py +++ /dev/null @@ -1,107 +0,0 @@ -# Generated by Django 2.2.3 on 2019-08-02 12:00 - -import django.contrib.postgres.fields -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models -import uuid - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0002_advanced_collections'), - ] - - operations = [ - migrations.CreateModel( - name='Tag', - fields=[ - ('_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('_created', models.DateTimeField(auto_now_add=True)), - ('_last_updated', models.DateTimeField(auto_now=True, null=True)), - ('name', models.CharField(editable=False, max_length=32, unique=True)), - ], - options={ - 'abstract': False, - }, - ), - migrations.AddField( - model_name='collectionversion', - name='authors', - field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=64), default=list, editable=False, size=None), - ), - migrations.AddField( - model_name='collectionversion', - name='dependencies', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False), - ), - migrations.AddField( - model_name='collectionversion', - name='description', - field=models.TextField(blank=True, default='', editable=False), - ), - migrations.AddField( - model_name='collectionversion', - name='docs_blob', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False), - ), - migrations.AddField( - model_name='collectionversion', - name='documentation', - field=models.URLField(blank=True, default='', editable=False, max_length=128), - ), - migrations.AddField( - model_name='collectionversion', - name='homepage', - field=models.URLField(blank=True, default='', editable=False, max_length=128), - ), - migrations.AddField( - model_name='collectionversion', - name='issues', - field=models.URLField(blank=True, default='', editable=False, max_length=128), - ), - migrations.AddField( - model_name='collectionversion', - name='license', - field=django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=32), default=list, editable=False, size=None), - ), - migrations.AddField( - model_name='collectionversion', - name='name', - field=models.CharField(default='', editable=False, max_length=32), - preserve_default=False, - ), - migrations.AddField( - model_name='collectionversion', - name='namespace', - field=models.CharField(default='', editable=False, max_length=32), - preserve_default=False, - ), - migrations.AddField( - model_name='collectionversion', - name='repository', - field=models.URLField(blank=True, default='', editable=False, max_length=128), - ), - migrations.AlterField( - model_name='collectionversion', - name='version', - field=models.CharField(editable=False, max_length=32), - ), - migrations.AlterUniqueTogether( - name='collectionversion', - unique_together={('namespace', 'name', 'version')}, - ), - migrations.RemoveField( - model_name='collectionversion', - name='metadata', - ), - migrations.RemoveField( - model_name='collectionversion', - name='quality_score', - ), - migrations.AddField( - model_name='collectionversion', - name='tags', - field=models.ManyToManyField(editable=False, to='ansible.Tag'), - ), - ] diff --git a/pulp_ansible/app/migrations/0004_add_fulltext_search_indexes.py b/pulp_ansible/app/migrations/0004_add_fulltext_search_indexes.py deleted file mode 100644 index ec787a803..000000000 --- a/pulp_ansible/app/migrations/0004_add_fulltext_search_indexes.py +++ /dev/null @@ -1,101 +0,0 @@ -from django.contrib.postgres import search as psql_search -from django.db import migrations - - -# This query generates full text search index based -# the following data ranked from A to D: -# - Namespace name (weight A) -# - Collection name (weight A) -# - Collection tags (weight B) -# - Collection content names (weight C) -# - Collection description (weight D) -TS_VECTOR_SELECT = ''' - setweight(to_tsvector(coalesce(namespace,'')), 'A') - || setweight(to_tsvector(coalesce(name, '')), 'A') - || ( - SELECT - setweight(to_tsvector( - coalesce(string_agg("ansible_tag"."name", ' '), '') - ), 'B') - FROM - "ansible_tag" INNER JOIN "ansible_collectionversion_tags" ON ("ansible_tag"."pulp_id" = "ansible_collectionversion_tags"."tag_id") - ) - || ( - SELECT - setweight(to_tsvector( - coalesce(string_agg(cvc ->> 'name', ' '), '') - ), 'C') - FROM jsonb_array_elements(cv.contents) AS cvc - ) - || setweight(to_tsvector(coalesce(description, '')), 'D') -''' - -# Generates search vector for existing CollectionVersion objects in the database. -POPULATE_COLLECTIONS_TS_VECTOR = f''' -UPDATE ansible_collectionversion AS c -SET search_vector = ( - SELECT {TS_VECTOR_SELECT} - FROM ansible_collectionversion cv - WHERE c.content_ptr_id = cv.content_ptr_id -) -''' - - -# Creates a database function and a trigger to update collection search -# vector field when a collection reference to a newer version is updated. -# -# Since it's not possible to insert a collection version before a collection, a latest_version_id -# always gets updated as a separated query after collectionversion is inserted. Thus only `ON -# UPDATE` trigger is required. -CREATE_COLLECTIONS_TS_VECTOR_TRIGGER = f''' -CREATE OR REPLACE FUNCTION update_collection_ts_vector() - RETURNS TRIGGER AS -$$ -BEGIN - NEW.search_vector := ( - SELECT {TS_VECTOR_SELECT} - FROM ansible_collectionversion cv - WHERE cv.content_ptr_id = NEW.content_ptr_id - ); - RETURN NEW; -END; -$$ LANGUAGE plpgsql; -CREATE TRIGGER update_ts_vector - BEFORE UPDATE - ON ansible_collectionversion - FOR EACH ROW -EXECUTE PROCEDURE update_collection_ts_vector(); -''' - -DROP_COLLECTIONS_TS_VECTOR_TRIGGER = ''' -DROP TRIGGER IF EXISTS update_ts_vector ON ansible_collectionversion; -DROP FUNCTION IF EXISTS update_collection_ts_vector(); -''' - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0003_add_tags_and_collectionversion_fields'), - ] - - operations = [ - migrations.RenameField( - model_name='tag', - old_name='_id', - new_name='pulp_id', - ), - migrations.AddField( - model_name='collectionversion', - name='search_vector', - field=psql_search.SearchVectorField(default=''), - ), - migrations.RunSQL( - sql=POPULATE_COLLECTIONS_TS_VECTOR, - reverse_sql=migrations.RunSQL.noop, - ), - migrations.RunSQL( - sql=CREATE_COLLECTIONS_TS_VECTOR_TRIGGER, - reverse_sql=DROP_COLLECTIONS_TS_VECTOR_TRIGGER, - ) - ] diff --git a/pulp_ansible/app/migrations/0005_collectionversion_is_highest.py b/pulp_ansible/app/migrations/0005_collectionversion_is_highest.py deleted file mode 100644 index e1fb57574..000000000 --- a/pulp_ansible/app/migrations/0005_collectionversion_is_highest.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.db import migrations -from django.db import models -from django.db.models import UniqueConstraint, Q -import semantic_version as semver - - -def migrate_collection_versions(apps, schema_editor): - Collection = apps.get_model("ansible", "Collection") - collections = Collection.objects.only("pk").all() - for collection in collections: - versions = collection.versions.only("pk", "version").all() - highest = max(versions, key=lambda x: semver.Version(x.version)) - highest.is_highest = True - highest.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("ansible", "0004_add_fulltext_search_indexes"), - ] - - operations = [ - migrations.AddField( - model_name="collectionversion", - name="is_highest", - field=models.BooleanField(default=False, editable=False), - ), - migrations.AddConstraint( - model_name="collectionversion", - constraint=UniqueConstraint( - fields=("collection", "is_highest"), - name="unique_is_highest", - condition=Q(is_highest=True), - ), - ), - migrations.RunPython( - code=migrate_collection_versions, reverse_code=migrations.RunPython.noop, elidable=True - ), - ] diff --git a/pulp_ansible/app/migrations/0006_remove_whitelist_and_alter_collection_version_name.py b/pulp_ansible/app/migrations/0006_remove_whitelist_and_alter_collection_version_name.py deleted file mode 100644 index 6d99ee28b..000000000 --- a/pulp_ansible/app/migrations/0006_remove_whitelist_and_alter_collection_version_name.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 2.2.4 on 2019-08-02 22:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0005_collectionversion_is_highest'), - ] - - operations = [ - migrations.AlterField( - model_name='collectionversion', - name='name', - field=models.CharField(editable=False, max_length=64), - ), - migrations.RemoveField( - model_name='collectionremote', - name='whitelist', - ), - ] diff --git a/pulp_ansible/app/migrations/0007_collectionversion_is_certified.py b/pulp_ansible/app/migrations/0007_collectionversion_is_certified.py deleted file mode 100644 index 4fc56a9cd..000000000 --- a/pulp_ansible/app/migrations/0007_collectionversion_is_certified.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.3 on 2019-08-15 13:38 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0006_remove_whitelist_and_alter_collection_version_name'), - ] - - operations = [ - migrations.AddField( - model_name='collectionversion', - name='is_certified', - field=models.BooleanField(default=False), - ), - ] diff --git a/pulp_ansible/app/migrations/0008_collectionremote_requirements_file.py b/pulp_ansible/app/migrations/0008_collectionremote_requirements_file.py deleted file mode 100644 index 7cd17ac3d..000000000 --- a/pulp_ansible/app/migrations/0008_collectionremote_requirements_file.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.4 on 2019-08-14 21:08 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0007_collectionversion_is_certified'), - ] - - operations = [ - migrations.AddField( - model_name='collectionremote', - name='requirements_file', - field=models.TextField(max_length=255, null=True), - ), - ] diff --git a/pulp_ansible/app/migrations/0009_collectionimport.py b/pulp_ansible/app/migrations/0009_collectionimport.py deleted file mode 100644 index 33b1652a3..000000000 --- a/pulp_ansible/app/migrations/0009_collectionimport.py +++ /dev/null @@ -1,32 +0,0 @@ -# Generated by Django 4.2.16 on 2024-12-05 12:33 - -import django.contrib.postgres.fields.jsonb -from django.db import migrations, models -import django.db.models.deletion -import uuid - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0008_collectionremote_requirements_file'), - ] - - operations = [ - migrations.CreateModel( - name='CollectionImport', - fields=[ - ('_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('_created', models.DateTimeField(auto_now_add=True)), - ('_last_updated', models.DateTimeField(auto_now=True, null=True)), - ('namespace', models.CharField(editable=False, max_length=64)), - ('name', models.CharField(editable=False, max_length=64)), - ('version', models.CharField(editable=False, max_length=32)), - ('messages', django.contrib.postgres.fields.jsonb.JSONField(default=list, editable=False)), - ('task', models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core.task')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/pulp_ansible/app/migrations/0010_ansible_related_names.py b/pulp_ansible/app/migrations/0010_ansible_related_names.py deleted file mode 100644 index 553079e59..000000000 --- a/pulp_ansible/app/migrations/0010_ansible_related_names.py +++ /dev/null @@ -1,74 +0,0 @@ -# Generated by Django 2.2.4 on 2019-08-19 19:07 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0009_collectionimport'), - ] - - operations = [ - migrations.AlterModelOptions( - name='ansibledistribution', - options={'default_related_name': '%(app_label)s_%(model_name)s'}, - ), - migrations.AlterModelOptions( - name='ansibleremote', - options={'default_related_name': '%(app_label)s_%(model_name)s'}, - ), - migrations.AlterModelOptions( - name='collectionremote', - options={'default_related_name': '%(app_label)s_%(model_name)s'}, - ), - migrations.AlterModelOptions( - name='collectionversion', - options={'default_related_name': '%(app_label)s_%(model_name)s'}, - ), - migrations.AlterModelOptions( - name='role', - options={'default_related_name': '%(app_label)s_%(model_name)s'}, - ), - migrations.AlterField( - model_name='ansibledistribution', - name='basedistribution_ptr', - field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_ansibledistribution', serialize=False, to='core.BaseDistribution'), - ), - migrations.AlterField( - model_name='ansibledistribution', - name='repository', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ansible_ansibledistribution', to='core.Repository'), - ), - migrations.AlterField( - model_name='ansibledistribution', - name='repository_version', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ansible_ansibledistribution', to='core.RepositoryVersion'), - ), - migrations.AlterField( - model_name='ansibleremote', - name='remote_ptr', - field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_ansibleremote', serialize=False, to='core.Remote'), - ), - migrations.AlterField( - model_name='collectionremote', - name='remote_ptr', - field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_collectionremote', serialize=False, to='core.Remote'), - ), - migrations.AlterField( - model_name='collectionversion', - name='content_ptr', - field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_collectionversion', serialize=False, to='core.Content'), - ), - migrations.AlterField( - model_name='collectionversion', - name='tags', - field=models.ManyToManyField(editable=False, related_name='ansible_collectionversion', to='ansible.Tag'), - ), - migrations.AlterField( - model_name='role', - name='content_ptr', - field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_role', serialize=False, to='core.Content'), - ), - ] diff --git a/pulp_ansible/app/migrations/0011_collectionimport.py b/pulp_ansible/app/migrations/0011_collectionimport.py deleted file mode 100644 index 7ea78a1bb..000000000 --- a/pulp_ansible/app/migrations/0011_collectionimport.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 2.2.3 on 2019-08-26 13:20 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0010_ansible_related_names'), - ] - - operations = [ - migrations.AlterModelOptions( - name='collectionimport', - options={'ordering': ['task__created']}, - ), - migrations.RemoveField( - model_name='collectionimport', - name='_created', - ), - migrations.RemoveField( - model_name='collectionimport', - name='_id', - ), - migrations.RemoveField( - model_name='collectionimport', - name='_last_updated', - ), - migrations.AlterField( - model_name='collectionimport', - name='task', - field=models.OneToOneField(editable=False, on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='+', serialize=False, to='core.Task'), - ), - ] diff --git a/pulp_ansible/app/migrations/0012_auto_20190906_2253.py b/pulp_ansible/app/migrations/0012_auto_20190906_2253.py deleted file mode 100644 index 8ce58a4e0..000000000 --- a/pulp_ansible/app/migrations/0012_auto_20190906_2253.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 2.2.4 on 2019-09-06 22:53 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0011_collectionimport'), - ] - - operations = [ - migrations.AlterModelOptions( - name='collectionimport', - options={'ordering': ['task___created']}, - ), - migrations.RemoveField( - model_name='collectionimport', - name='name', - ), - migrations.RemoveField( - model_name='collectionimport', - name='namespace', - ), - migrations.RemoveField( - model_name='collectionimport', - name='version', - ), - ] diff --git a/pulp_ansible/app/migrations/0013_pulp_fields.py b/pulp_ansible/app/migrations/0013_pulp_fields.py deleted file mode 100644 index 2869fb95c..000000000 --- a/pulp_ansible/app/migrations/0013_pulp_fields.py +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by Django 2.2.6 on 2019-10-03 15:05 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0012_auto_20190906_2253'), - ] - - operations = [ - migrations.AlterModelOptions( - name='collectionimport', - options={'ordering': ['task__pulp_created']}, - ), - migrations.RenameField( - model_name='collection', - old_name='_created', - new_name='pulp_created', - ), - migrations.RenameField( - model_name='collection', - old_name='_id', - new_name='pulp_id', - ), - migrations.RenameField( - model_name='collection', - old_name='_last_updated', - new_name='pulp_last_updated', - ), - migrations.RenameField( - model_name='tag', - old_name='_created', - new_name='pulp_created', - ), - migrations.RenameField( - model_name='tag', - old_name='_last_updated', - new_name='pulp_last_updated', - ), - migrations.AlterField( - model_name='collectionversion', - name='collection', - field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='versions', to='ansible.Collection', to_field='pulp_id'), - ), - ] diff --git a/pulp_ansible/app/migrations/0014_certification_enum.py b/pulp_ansible/app/migrations/0014_certification_enum.py deleted file mode 100644 index 8438c5a8a..000000000 --- a/pulp_ansible/app/migrations/0014_certification_enum.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 2.2.6 on 2019-10-18 16:56 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0013_pulp_fields'), - ] - - operations = [ - migrations.RemoveField( - model_name='collectionversion', - name='is_certified', - ), - migrations.AddField( - model_name='collectionversion', - name='certification', - field=models.CharField(choices=[('certified', 'certified'), ('not_certified', 'not_certified'), ('needs_review', 'needs_review')], default='needs_review', max_length=13), - ), - ] diff --git a/pulp_ansible/app/migrations/0015_ansiblerepository.py b/pulp_ansible/app/migrations/0015_ansiblerepository.py deleted file mode 100644 index e074d402f..000000000 --- a/pulp_ansible/app/migrations/0015_ansiblerepository.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 4.2.16 on 2024-12-05 12:33 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0014_certification_enum'), - ] - - operations = [ - migrations.CreateModel( - name='AnsibleRepository', - fields=[ - ('repository_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_ansiblerepository', serialize=False, to='core.repository')), - ], - options={ - 'default_related_name': '%(app_label)s_%(model_name)s', - }, - bases=('core.repository',), - ), - ] diff --git a/pulp_ansible/app/migrations/0016_add_extension.py b/pulp_ansible/app/migrations/0016_add_extension.py deleted file mode 100644 index 58f839662..000000000 --- a/pulp_ansible/app/migrations/0016_add_extension.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 2.2.11 on 2020-03-06 15:46 - -from django.db import migrations, transaction -from django.db.models.functions import Concat -from django.db.models import CharField, F, Value - - -def add_extension(apps, schema_editor): - # re: https://pulp.plan.io/issues/6223 - with transaction.atomic(): - ContentArtifact = apps.get_model('core', 'ContentArtifact') - CollectionVersion = apps.get_model('ansible', 'CollectionVersion') - ContentArtifact.objects.exclude(relative_path__endswith='.tar.gz').filter( - content__in=CollectionVersion.objects.all() - ).all().update(relative_path=Concat(F('relative_path'), Value('.tar.gz'), output_field=CharField())) - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0015_ansiblerepository'), - ] - - operations = [ - migrations.RunPython(add_extension, elidable=True), - ] diff --git a/pulp_ansible/app/migrations/0017_increase_length_collectionversion_fields.py b/pulp_ansible/app/migrations/0017_increase_length_collectionversion_fields.py deleted file mode 100644 index 1191d4cda..000000000 --- a/pulp_ansible/app/migrations/0017_increase_length_collectionversion_fields.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 2.2.12 on 2020-05-14 17:48 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0016_add_extension'), - ] - - operations = [ - migrations.AlterField( - model_name='collectionversion', - name='documentation', - field=models.URLField(blank=True, default='', editable=False, max_length=2000), - ), - migrations.AlterField( - model_name='collectionversion', - name='homepage', - field=models.URLField(blank=True, default='', editable=False, max_length=2000), - ), - migrations.AlterField( - model_name='collectionversion', - name='issues', - field=models.URLField(blank=True, default='', editable=False, max_length=2000), - ), - migrations.AlterField( - model_name='collectionversion', - name='repository', - field=models.URLField(blank=True, default='', editable=False, max_length=2000), - ), - ] diff --git a/pulp_ansible/app/migrations/0018_fix_collection_relative_path.py b/pulp_ansible/app/migrations/0018_fix_collection_relative_path.py deleted file mode 100644 index 4b2532c80..000000000 --- a/pulp_ansible/app/migrations/0018_fix_collection_relative_path.py +++ /dev/null @@ -1,35 +0,0 @@ -from django.db import migrations, models - - -def migrate_artifact_relative_path(apps, schema_editor): - ContentArtifact = apps.get_model("core", "ContentArtifact") - CollectionVersion = apps.get_model("ansible", "CollectionVersion") - - artifacts = ( - ContentArtifact.objects.select_related("content", "content__ansible_collectionversion",) - .filter(content__ansible_collectionversion__isnull=False) - .only( - "content__ansible_collectionversion__namespace", - "content__ansible_collectionversion__name", - "content__ansible_collectionversion__version", - ) - .all() - ) - - for artifact in artifacts: - cv = artifact.content.ansible_collectionversion - artifact.relative_path = "{namespace}-{name}-{version}.tar.gz".format( - namespace=cv.namespace, name=cv.name, version=cv.version - ) - ContentArtifact.objects.bulk_update(artifacts, ["relative_path"]) - - -class Migration(migrations.Migration): - - dependencies = [ - ("ansible", "0017_increase_length_collectionversion_fields"), - ] - - operations = [ - migrations.RunPython(code=migrate_artifact_relative_path, elidable=True), - ] diff --git a/pulp_ansible/app/migrations/0019_collection_token.py b/pulp_ansible/app/migrations/0019_collection_token.py deleted file mode 100644 index d32c4099d..000000000 --- a/pulp_ansible/app/migrations/0019_collection_token.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2.13 on 2020-06-09 21:13 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0018_fix_collection_relative_path'), - ] - - operations = [ - migrations.AddField( - model_name='collectionremote', - name='auth_url', - field=models.CharField(max_length=255, null=True), - ), - migrations.AddField( - model_name='collectionremote', - name='token', - field=models.TextField(max_length=2000, null=True), - ), - ] diff --git a/pulp_ansible/app/migrations/0020_auto_20200810_1926.py b/pulp_ansible/app/migrations/0020_auto_20200810_1926.py deleted file mode 100644 index d0b18e4e8..000000000 --- a/pulp_ansible/app/migrations/0020_auto_20200810_1926.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.2.15 on 2020-08-10 19:26 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0019_collection_token'), - ] - - operations = [ - migrations.AlterModelOptions( - name='ansiblerepository', - options={'default_related_name': '%(app_label)s_%(model_name)s', 'permissions': (('modify_ansible_repo_content', 'Can modify ansible repository content'),)}, - ), - ] diff --git a/pulp_ansible/app/migrations/0021_rename_role_remote.py b/pulp_ansible/app/migrations/0021_rename_role_remote.py deleted file mode 100644 index eb9c6c988..000000000 --- a/pulp_ansible/app/migrations/0021_rename_role_remote.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 2.2.13 on 2020-08-11 17:51 - -import django -from django.db import migrations, models, transaction - - -def update_pulp_type(apps, schema_editor): - with transaction.atomic(): - Remote = apps.get_model('core', 'Remote') - Remote.objects.filter(pulp_type="ansible.ansible").update(pulp_type="ansible.role") - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0020_auto_20200810_1926'), - ] - - operations = [ - migrations.RenameModel('AnsibleRemote', 'RoleRemote'), - migrations.AlterField( - model_name='roleremote', - name='remote_ptr', - field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_roleremote', serialize=False, to='core.Remote'), - ), - migrations.RunPython(update_pulp_type, elidable=True), - ] diff --git a/pulp_ansible/app/migrations/0022_URLField_to_CharField.py b/pulp_ansible/app/migrations/0022_URLField_to_CharField.py deleted file mode 100644 index f4bc143ab..000000000 --- a/pulp_ansible/app/migrations/0022_URLField_to_CharField.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 2.2.15 on 2020-08-27 21:37 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0021_rename_role_remote'), - ] - - operations = [ - migrations.AlterField( - model_name='collectionversion', - name='documentation', - field=models.CharField(blank=True, default='', editable=False, max_length=2000), - ), - migrations.AlterField( - model_name='collectionversion', - name='homepage', - field=models.CharField(blank=True, default='', editable=False, max_length=2000), - ), - migrations.AlterField( - model_name='collectionversion', - name='issues', - field=models.CharField(blank=True, default='', editable=False, max_length=2000), - ), - migrations.AlterField( - model_name='collectionversion', - name='repository', - field=models.CharField(blank=True, default='', editable=False, max_length=2000), - ), - ] diff --git a/pulp_ansible/app/migrations/0023_alter_requirements_file_field.py b/pulp_ansible/app/migrations/0023_alter_requirements_file_field.py deleted file mode 100644 index f47cce59f..000000000 --- a/pulp_ansible/app/migrations/0023_alter_requirements_file_field.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.15 on 2020-09-01 13:12 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0022_URLField_to_CharField'), - ] - - operations = [ - migrations.AlterField( - model_name='collectionremote', - name='requirements_file', - field=models.TextField(null=True), - ), - ] diff --git a/pulp_ansible/app/migrations/0024_remove_collectionversion_certification.py b/pulp_ansible/app/migrations/0024_remove_collectionversion_certification.py deleted file mode 100644 index cfd9797c1..000000000 --- a/pulp_ansible/app/migrations/0024_remove_collectionversion_certification.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.2.16 on 2020-09-22 20:59 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0023_alter_requirements_file_field'), - ] - - operations = [ - migrations.RemoveField( - model_name='collectionversion', - name='certification', - ), - ] diff --git a/pulp_ansible/app/migrations/0025_increase_collection_version_version_size.py b/pulp_ansible/app/migrations/0025_increase_collection_version_version_size.py deleted file mode 100644 index 8c4cc7224..000000000 --- a/pulp_ansible/app/migrations/0025_increase_collection_version_version_size.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.16 on 2020-10-26 12:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0024_remove_collectionversion_certification'), - ] - - operations = [ - migrations.AlterField( - model_name='collectionversion', - name='version', - field=models.CharField(editable=False, max_length=128), - ), - ] diff --git a/pulp_ansible/app/migrations/0026_deprecation_per_repository.py b/pulp_ansible/app/migrations/0026_deprecation_per_repository.py deleted file mode 100644 index 7e65cdbc6..000000000 --- a/pulp_ansible/app/migrations/0026_deprecation_per_repository.py +++ /dev/null @@ -1,54 +0,0 @@ -# Generated by Django 2.2.16 on 2020-10-03 16:17 - -from django.db import migrations, models -import django.db.models.deletion -import django_lifecycle.mixins -import uuid - - -def migrate_deprecated(apps, schema_editor): - Collection = apps.get_model('ansible', 'Collection') - AnsibleCollectionDeprecated = apps.get_model('ansible', 'AnsibleCollectionDeprecated') - RepositoryVersion = apps.get_model('core', 'RepositoryVersion') - for collection in Collection.objects.filter(deprecated=True): - for cv in collection.versions.all(): - for repository_content in cv.version_memberships.all(): - version_removed_kwarg = {} - if repository_content.version_removed: - version_removed_kwarg['number__lte'] = repository_content.version_removed.number - for repository_version in RepositoryVersion.objects.filter( - repository=repository_content.repository, - number__gte=repository_content.version_added.number, - **version_removed_kwarg): - AnsibleCollectionDeprecated.objects.get_or_create( - collection=collection, repository_version=repository_version - ) - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0025_increase_collection_version_version_size'), - ] - - operations = [ - migrations.CreateModel( - name='AnsibleCollectionDeprecated', - fields=[ - ('pulp_id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('pulp_created', models.DateTimeField(auto_now_add=True)), - ('pulp_last_updated', models.DateTimeField(auto_now=True, null=True)), - ('collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ansible.Collection')), - ('repository_version', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='collection_memberships', to='core.RepositoryVersion')), - ], - options={ - 'unique_together': {('collection', 'repository_version')}, - }, - bases=(django_lifecycle.mixins.LifecycleModelMixin, models.Model), - ), - migrations.RunPython(migrate_deprecated, elidable=True), - migrations.RemoveField( - model_name='collection', - name='deprecated', - ), - ] diff --git a/pulp_ansible/app/migrations/0027_tag_length.py b/pulp_ansible/app/migrations/0027_tag_length.py deleted file mode 100644 index 839097792..000000000 --- a/pulp_ansible/app/migrations/0027_tag_length.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.16 on 2020-11-20 14:35 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0026_deprecation_per_repository'), - ] - - operations = [ - migrations.AlterField( - model_name='tag', - name='name', - field=models.CharField(editable=False, max_length=64, unique=True), - ), - ] diff --git a/pulp_ansible/app/migrations/0028_collectionversion_namespace_length.py b/pulp_ansible/app/migrations/0028_collectionversion_namespace_length.py deleted file mode 100644 index aa8b0cf7a..000000000 --- a/pulp_ansible/app/migrations/0028_collectionversion_namespace_length.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.17 on 2021-01-25 22:03 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0027_tag_length'), - ] - - operations = [ - migrations.AlterField( - model_name='collectionversion', - name='namespace', - field=models.CharField(editable=False, max_length=64), - ), - ] diff --git a/pulp_ansible/app/migrations/0029_manifest_and_files_json_fields.py b/pulp_ansible/app/migrations/0029_manifest_and_files_json_fields.py deleted file mode 100644 index d551c491e..000000000 --- a/pulp_ansible/app/migrations/0029_manifest_and_files_json_fields.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2.17 on 2020-12-10 15:04 -import django.contrib.postgres.fields.jsonb -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0028_collectionversion_namespace_length'), - ] - - operations = [ - migrations.AddField( - model_name='collectionversion', - name='files', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False), - ), - migrations.AddField( - model_name='collectionversion', - name='manifest', - field=django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False), - ), - ] diff --git a/pulp_ansible/app/migrations/0030_collectionversion_requires_ansible.py b/pulp_ansible/app/migrations/0030_collectionversion_requires_ansible.py deleted file mode 100644 index d86b59434..000000000 --- a/pulp_ansible/app/migrations/0030_collectionversion_requires_ansible.py +++ /dev/null @@ -1,97 +0,0 @@ -# Generated by Django 2.2.17 on 2020-12-09 20:22 -import logging -import json -import tarfile -import yaml -from json import JSONDecodeError -from yaml.error import YAMLError -from django.db import migrations, models - -from pulp_ansible.app.tasks.utils import get_file_obj_from_tarball - -log = logging.getLogger(__name__) - - -def set_requires_ansible_and_manifest_and_files_json(apps, schema_editor): - CollectionVersion = apps.get_model("ansible", "CollectionVersion") - for collection_version in CollectionVersion.objects.all(): - artifact = collection_version.contentartifact_set.get().artifact - with artifact.file.open() as artifact_file, tarfile.open( - fileobj=artifact_file, mode="r" - ) as tar: - runtime_metadata = get_file_obj_from_tarball( - tar, "meta/runtime.yml", artifact.file.name, raise_exc=False - ) - if runtime_metadata: - try: - runtime_yaml = yaml.safe_load(runtime_metadata) - except YAMLError: - log.warning( - "CollectionVersion: '{namespace}.{name}-{version}' - 'meta/runtime.yml' is invalid yaml.".format( - namespace=collection_version.namespace, - name=collection_version.name, - version=collection_version.version, - ) - ) - else: - try: - collection_version.requires_ansible = runtime_yaml.get("requires_ansible") - except AttributeError: - log.warning( - "CollectionVersion: '{namespace}.{name}-{version}' - 'meta/runtime.yml' is missing key 'requires_ansible'.".format( - namespace=collection_version.namespace, - name=collection_version.name, - version=collection_version.version, - ) - ) - - manifest = get_file_obj_from_tarball( - tar, "MANIFEST.json", artifact.file.name, raise_exc=False - ) - if manifest: - try: - collection_version.manifest = json.load(manifest) - except JSONDecodeError: - log.warning( - "CollectionVersion: '{namespace}.{name}-{version}' - 'MANIFEST.json' is invalid json.".format( - namespace=collection_version.namespace, - name=collection_version.name, - version=collection_version.version, - ) - ) - - files = get_file_obj_from_tarball( - tar, "FILES.json", artifact.file.name, raise_exc=False - ) - if files: - try: - collection_version.files = json.load(files) - except JSONDecodeError: - log.warning( - "CollectionVersion: '{namespace}.{name}-{version}' - 'FILES.json' is invalid json.".format( - namespace=collection_version.namespace, - name=collection_version.name, - version=collection_version.version, - ) - ) - collection_version.save() - - -class Migration(migrations.Migration): - - dependencies = [ - ("ansible", "0029_manifest_and_files_json_fields"), - ] - - operations = [ - migrations.AddField( - model_name="collectionversion", - name="requires_ansible", - field=models.CharField(max_length=255, null=True), - ), - migrations.RunPython( - code=set_requires_ansible_and_manifest_and_files_json, - reverse_code=migrations.RunPython.noop, - elidable=True, - ), - ] diff --git a/pulp_ansible/app/migrations/0031_ansiblerepository_last_synced_metadata_time.py b/pulp_ansible/app/migrations/0031_ansiblerepository_last_synced_metadata_time.py deleted file mode 100644 index 48a7f06e6..000000000 --- a/pulp_ansible/app/migrations/0031_ansiblerepository_last_synced_metadata_time.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.17 on 2021-01-29 18:29 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0030_collectionversion_requires_ansible'), - ] - - operations = [ - migrations.AddField( - model_name='ansiblerepository', - name='last_synced_metadata_time', - field=models.DateTimeField(null=True), - ), - ] diff --git a/pulp_ansible/app/migrations/0032_collectionremote_sync_dependencies.py b/pulp_ansible/app/migrations/0032_collectionremote_sync_dependencies.py deleted file mode 100644 index e86e30e6a..000000000 --- a/pulp_ansible/app/migrations/0032_collectionremote_sync_dependencies.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.2.19 on 2021-03-11 23:27 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0031_ansiblerepository_last_synced_metadata_time'), - ] - - operations = [ - migrations.AddField( - model_name='collectionremote', - name='sync_dependencies', - field=models.BooleanField(default=True), - ), - ] diff --git a/pulp_ansible/app/migrations/0033_swap_distribution_model.py b/pulp_ansible/app/migrations/0033_swap_distribution_model.py deleted file mode 100644 index 7aadb9898..000000000 --- a/pulp_ansible/app/migrations/0033_swap_distribution_model.py +++ /dev/null @@ -1,90 +0,0 @@ -# Generated by Django 2.2.19 on 2021-03-19 17:42 - -from django.db import migrations, models, transaction -import django.db.models.deletion - - -def migrate_data_from_old_model_to_new_model_up(apps, schema_editor): - """Move objects from AnsibleDistribution to NewAnsibleDistribution.""" - AnsibleDistribution = apps.get_model("ansible", "AnsibleDistribution") - NewAnsibleDistribution = apps.get_model("ansible", "NewAnsibleDistribution") - for ansible_distribution in AnsibleDistribution.objects.all(): - with transaction.atomic(): - NewAnsibleDistribution( - pulp_id=ansible_distribution.pulp_id, - pulp_created=ansible_distribution.pulp_created, - pulp_last_updated=ansible_distribution.pulp_last_updated, - pulp_type=ansible_distribution.pulp_type, - name=ansible_distribution.name, - base_path=ansible_distribution.base_path, - content_guard=ansible_distribution.content_guard, - remote=ansible_distribution.remote, - repository_version=ansible_distribution.repository_version, - repository=ansible_distribution.repository, - ).save() - ansible_distribution.delete() - - -def migrate_data_from_old_model_to_new_model_down(apps, schema_editor): - """Move objects from NewAnsibleDistribution to AnsibleDistribution.""" - AnsibleDistribution = apps.get_model("ansible", "AnsibleDistribution") - NewAnsibleDistribution = apps.get_model("ansible", "NewAnsibleDistribution") - for ansible_distribution in NewAnsibleDistribution.objects.all(): - with transaction.atomic(): - AnsibleDistribution( - pulp_id=ansible_distribution.pulp_id, - pulp_created=ansible_distribution.pulp_created, - pulp_last_updated=ansible_distribution.pulp_last_updated, - pulp_type=ansible_distribution.pulp_type, - name=ansible_distribution.name, - base_path=ansible_distribution.base_path, - content_guard=ansible_distribution.content_guard, - remote=ansible_distribution.remote, - repository_version=ansible_distribution.repository_version, - repository=ansible_distribution.repository, - ).save() - ansible_distribution.delete() - - -class Migration(migrations.Migration): - atomic = False - - dependencies = [ - ("ansible", "0032_collectionremote_sync_dependencies"), - ] - - operations = [ - migrations.CreateModel( - name="NewAnsibleDistribution", - fields=[ - ( - "distribution_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - related_name="ansible_ansibledistribution", - serialize=False, - to="core.Distribution", - ), - ), - ], - options={ - "default_related_name": "%(app_label)s_%(model_name)s", - }, - bases=("core.distribution",), - ), - migrations.RunPython( - code=migrate_data_from_old_model_to_new_model_up, - reverse_code=migrate_data_from_old_model_to_new_model_down, - elidable=True, - ), - migrations.DeleteModel( - name="AnsibleDistribution", - ), - migrations.RenameModel( - old_name="NewAnsibleDistribution", - new_name="AnsibleDistribution", - ), - ] diff --git a/pulp_ansible/app/migrations/0034_handle_jsonfield_warnings.py b/pulp_ansible/app/migrations/0034_handle_jsonfield_warnings.py deleted file mode 100644 index ced5e1d75..000000000 --- a/pulp_ansible/app/migrations/0034_handle_jsonfield_warnings.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 3.2.5 on 2021-07-23 19:56 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0033_swap_distribution_model'), - ] - - operations = [ - migrations.AlterField( - model_name='collectionimport', - name='messages', - field=models.JSONField(default=list, editable=False), - ), - migrations.AlterField( - model_name='collectionversion', - name='contents', - field=models.JSONField(default=list, editable=False), - ), - migrations.AlterField( - model_name='collectionversion', - name='dependencies', - field=models.JSONField(default=dict, editable=False), - ), - migrations.AlterField( - model_name='collectionversion', - name='docs_blob', - field=models.JSONField(default=dict, editable=False), - ), - migrations.AlterField( - model_name='collectionversion', - name='files', - field=models.JSONField(default=dict, editable=False), - ), - migrations.AlterField( - model_name='collectionversion', - name='manifest', - field=models.JSONField(default=dict, editable=False), - ), - ] diff --git a/pulp_ansible/app/migrations/0035_deprecation_content.py b/pulp_ansible/app/migrations/0035_deprecation_content.py deleted file mode 100644 index 99a0ecd82..000000000 --- a/pulp_ansible/app/migrations/0035_deprecation_content.py +++ /dev/null @@ -1,150 +0,0 @@ -# Generated by Django 2.2.24 on 2021-07-07 17:46 - -from collections import defaultdict -from django.db import migrations, models -import django.db.models.deletion - - -def migrate_data_from_old_model_to_new_model_up(apps, schema_editor): - """ Move objects from AnsibleCollectionDeprecated to NewAnsibleCollectionDeprecated.""" - AnsibleCollectionDeprecated = apps.get_model('ansible', 'AnsibleCollectionDeprecated') - NewAnsibleCollectionDeprecated = apps.get_model('ansible', 'NewAnsibleCollectionDeprecated') - AnsibleRepository = apps.get_model('ansible', 'AnsibleRepository') - latest_repo_versions = [] - for repo in AnsibleRepository.objects.all(): - latest_repo_versions.append(repo.versions.exclude(complete=False).latest().pk) - - for deprecated_collection in AnsibleCollectionDeprecated.objects.filter(repository_version_id__in=latest_repo_versions): - NewAnsibleCollectionDeprecated( - namespace=deprecated_collection.collection.namespace, - name=deprecated_collection.collection.name, - pulp_type="ansible.collection_deprecation", - collection_id=deprecated_collection.collection_id, - repository_id=deprecated_collection.repository_version.repository.pk, - version_added_id=deprecated_collection.repository_version.pk, - ).save() - - -def migrate_data_from_old_model_to_new_model_down(apps, schema_editor): - """ Move objects from NewAnsibleCollectionDeprecated to AnsibleCollectionDeprecated.""" - AnsibleCollectionDeprecated = apps.get_model('ansible', 'AnsibleCollectionDeprecated') - NewAnsibleCollectionDeprecated = apps.get_model('ansible', 'NewAnsibleCollectionDeprecated') - RepositoryVersionContentDetails = apps.get_model('core', 'RepositoryVersionContentDetails') - for deprecation in NewAnsibleCollectionDeprecated.objects.all(): - AnsibleCollectionDeprecated( - collection_id=deprecation.collection_id, - repository_version_id=deprecation.version_added_id, - ).save() - deprecation.version_memberships.all().delete() - RepositoryVersionContentDetails.objects.filter(content_type="ansible.collection_deprecation").delete() - - -def create_repository_content_for_deprecation(apps, schema_editor): - """ Create RepositoryContent for AnsibleCollectionDeprecated.""" - AnsibleCollectionDeprecated = apps.get_model('ansible', 'AnsibleCollectionDeprecated') - RepositoryContent = apps.get_model('core', 'RepositoryContent') - RepositoryVersionContentDetails = apps.get_model('core', 'RepositoryVersionContentDetails') - repo_content = [] - counts_list = [] - count = defaultdict(int) - - # Create RepositoryContent with deduplicated deprecation items - for name, namespace in AnsibleCollectionDeprecated.objects.values_list("name", "namespace").distinct(): - new_deprecation = AnsibleCollectionDeprecated.objects.create(pulp_type="ansible.collection_deprecation", name=name, namespace=namespace) - for deprecation in AnsibleCollectionDeprecated.objects.filter(name=name, namespace=namespace, repository_id__isnull=False): - repo_content.append(RepositoryContent( - content=new_deprecation, - repository_id=deprecation.repository_id, - version_added_id=deprecation.version_added_id, - )) - count[deprecation.version_added_id] += 1 - if len(repo_content) >= 1024: - RepositoryContent.objects.bulk_create(repo_content) - repo_content.clear() - RepositoryContent.objects.bulk_create(repo_content) - repo_content.clear() - AnsibleCollectionDeprecated.objects.filter(repository_id__isnull=False).delete() - - # Update Repository content counts - for repo_version_id, total in count.items(): - count_obj = RepositoryVersionContentDetails( - content_type="ansible.collection_deprecation", - repository_version_id=repo_version_id, - count=total, - count_type="A", # Added - ) - counts_list.append(count_obj) - - count_obj = RepositoryVersionContentDetails( - content_type="ansible.collection_deprecation", - repository_version_id=repo_version_id, - count=total, - count_type="P", # Present - ) - counts_list.append(count_obj) - if len(counts_list) >= 1024: - RepositoryVersionContentDetails.objects.bulk_create(counts_list) - counts_list.clear() - - RepositoryVersionContentDetails.objects.bulk_create(counts_list) - - -def create_deprecation_from_repository_content(apps, schema_editor): - """ Create AnsibleCollectionDeprecated from RepositoryContent.""" - AnsibleCollectionDeprecated = apps.get_model('ansible', 'AnsibleCollectionDeprecated') - Collection = apps.get_model('ansible', 'Collection') - - for deprecation in AnsibleCollectionDeprecated.objects.all(): - col = Collection.objects.get(namespace=deprecation.namespace, name=deprecation.name) - for repo_content in deprecation.version_memberships.all(): - AnsibleCollectionDeprecated.objects.create( - name=deprecation.name, - namespace=deprecation.namespace, - collection_id=col.pk, - repository_id=repo_content.repository_id, - version_added_id = repo_content.version_added_id, - ) - - AnsibleCollectionDeprecated.objects.filter(repository_id__isnull=True).delete() - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0034_handle_jsonfield_warnings'), - ] - - operations = [ - migrations.CreateModel( - name='NewAnsibleCollectionDeprecated', - fields=[ - ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_ansiblecollectiondeprecated', serialize=False, to='core.Content')), - ('namespace', models.CharField(editable=False, max_length=64)), - ('name', models.CharField(editable=False, max_length=64)), - ('collection_id', models.UUIDField(editable=False, primary_key=False, serialize=False, null=True)), - ('repository_id', models.UUIDField(editable=False, primary_key=False, serialize=False, null=True)), - ('version_added_id', models.UUIDField(editable=False, primary_key=False, serialize=False, null=True)), - ], - options={ - 'default_related_name': '%(app_label)s_%(model_name)s', - }, - bases=('core.content',), - ), - migrations.RunPython( - code=migrate_data_from_old_model_to_new_model_up, - reverse_code=migrate_data_from_old_model_to_new_model_down, - elidable=True, - ), - migrations.DeleteModel( - name='AnsibleCollectionDeprecated', - ), - migrations.RenameModel( - old_name='NewAnsibleCollectionDeprecated', - new_name='AnsibleCollectionDeprecated', - ), - migrations.RunPython( - code=create_repository_content_for_deprecation, - reverse_code=create_deprecation_from_repository_content, - elidable=True, - ), - ] diff --git a/pulp_ansible/app/migrations/0036_update_repository_content.py b/pulp_ansible/app/migrations/0036_update_repository_content.py deleted file mode 100644 index 761c2c4ab..000000000 --- a/pulp_ansible/app/migrations/0036_update_repository_content.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 4.2.16 on 2024-12-05 12:33 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0035_deprecation_content'), - ] - - operations = [ - migrations.AlterUniqueTogether( - name='ansiblecollectiondeprecated', - unique_together={('namespace', 'name')}, - ), - migrations.RemoveField( - model_name='ansiblecollectiondeprecated', - name='collection_id', - ), - migrations.RemoveField( - model_name='ansiblecollectiondeprecated', - name='repository_id', - ), - migrations.RemoveField( - model_name='ansiblecollectiondeprecated', - name='version_added_id', - ), - ] diff --git a/pulp_ansible/app/migrations/0037_gitremote.py b/pulp_ansible/app/migrations/0037_gitremote.py deleted file mode 100644 index 222b96992..000000000 --- a/pulp_ansible/app/migrations/0037_gitremote.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 4.2.16 on 2024-12-05 12:33 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0036_update_repository_content'), - ] - - operations = [ - migrations.CreateModel( - name='GitRemote', - fields=[ - ('remote_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_gitremote', serialize=False, to='core.remote')), - ('metadata_only', models.BooleanField(default=False)), - ('git_ref', models.TextField()), - ], - options={ - 'default_related_name': '%(app_label)s_%(model_name)s', - }, - bases=('core.remote',), - ), - ] diff --git a/pulp_ansible/app/migrations/0038_collectionversionsignature.py b/pulp_ansible/app/migrations/0038_collectionversionsignature.py deleted file mode 100644 index 33e916b35..000000000 --- a/pulp_ansible/app/migrations/0038_collectionversionsignature.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 4.2.16 on 2024-12-05 12:33 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0037_gitremote'), - ] - - operations = [ - migrations.CreateModel( - name='CollectionVersionSignature', - fields=[ - ('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='ansible_collectionversionsignature', serialize=False, to='core.content')), - ('data', models.BinaryField()), - ('digest', models.CharField(max_length=64)), - ('pubkey_fingerprint', models.CharField(max_length=64)), - ('signed_collection', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='signatures', to='ansible.collectionversion')), - ('signing_service', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='signatures', to='core.signingservice')), - ], - options={ - 'default_related_name': '%(app_label)s_%(model_name)s', - 'unique_together': {('pubkey_fingerprint', 'signed_collection')}, - }, - bases=('core.content',), - ), - ] diff --git a/pulp_ansible/app/migrations/0039_collectionremote_signed_only.py b/pulp_ansible/app/migrations/0039_collectionremote_signed_only.py deleted file mode 100644 index 096650cbb..000000000 --- a/pulp_ansible/app/migrations/0039_collectionremote_signed_only.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.11 on 2022-01-10 21:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0038_collectionversionsignature'), - ] - - operations = [ - migrations.AddField( - model_name='collectionremote', - name='signed_only', - field=models.BooleanField(default=False), - ), - ] diff --git a/pulp_ansible/app/migrations/0040_ansiblerepository_keyring.py b/pulp_ansible/app/migrations/0040_ansiblerepository_keyring.py deleted file mode 100644 index c49b67d32..000000000 --- a/pulp_ansible/app/migrations/0040_ansiblerepository_keyring.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.11 on 2022-02-25 20:39 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('ansible', '0039_collectionremote_signed_only'), - ] - - operations = [ - migrations.AddField( - model_name='ansiblerepository', - name='keyring', - field=models.FilePathField(blank=True, path='/etc/pulp/certs/', recursive=True), - ), - ] diff --git a/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py b/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py index 678a0e92f..022fccecb 100644 --- a/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py +++ b/pulp_ansible/app/migrations/0041_alter_collectionversion_collection.py @@ -7,7 +7,7 @@ class Migration(migrations.Migration): dependencies = [ - ('ansible', '0040_ansiblerepository_keyring'), + ('ansible', '0001_initial_squashed_0040_ansiblerepository_keyring'), ] operations = [