# Generated by Django 3.1.3 on 2020-11-04 09:11 import uuid import django.db.models.deletion from django.apps.registry import Apps from django.db import migrations, models from django.db.backends.base.schema import BaseDatabaseSchemaEditor def migrate_to_service_connection(apps: Apps, schema_editor: BaseDatabaseSchemaEditor): db_alias = schema_editor.connection.alias Outpost = apps.get_model("passbook_outposts", "Outpost") DockerServiceConnection = apps.get_model("passbook_outposts", "DockerServiceConnection") KubernetesServiceConnection = apps.get_model("passbook_outposts", "KubernetesServiceConnection") from passbook.outposts.apps import PassbookOutpostConfig # Ensure that local connection have been created PassbookOutpostConfig.init_local_connection(None) docker = DockerServiceConnection.objects.filter(local=True) k8s = KubernetesServiceConnection.objects.filter(local=True) for outpost in Outpost.objects.using(db_alias).all().exclude(deployment_type="custom"): if outpost.deployment_type == "kubernetes": outpost.service_connection = k8s elif outpost.deployment_type == "docker": outpost.service_connection = docker outpost.save() class Migration(migrations.Migration): dependencies = [ ('passbook_outposts', '0009_fix_missing_token_identifier'), ] operations = [ migrations.CreateModel( name='OutpostServiceConnection', fields=[ ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('name', models.TextField()), ('local', models.BooleanField(default=False, help_text='If enabled, use the local connection. Required Docker socket/Kubernetes Integration', unique=True)), ], ), migrations.CreateModel( name='DockerServiceConnection', fields=[ ('outpostserviceconnection_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='passbook_outposts.outpostserviceconnection')), ('url', models.TextField()), ('tls', models.BooleanField()), ], bases=('passbook_outposts.outpostserviceconnection',), ), migrations.CreateModel( name='KubernetesServiceConnection', fields=[ ('outpostserviceconnection_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='passbook_outposts.outpostserviceconnection')), ('config', models.JSONField()), ], bases=('passbook_outposts.outpostserviceconnection',), ), migrations.AddField( model_name='outpost', name='service_connection', field=models.ForeignKey(blank=True, default=None, help_text='Select Service-Connection passbook should use to manage this outpost. Leave empty if passbook should not handle the deployment.', null=True, on_delete=django.db.models.deletion.SET_DEFAULT, to='passbook_outposts.outpostserviceconnection'), ), migrations.RunPython(migrate_to_service_connection), migrations.RemoveField( model_name='outpost', name='deployment_type', ), ]