74 lines
3.4 KiB
Python
74 lines
3.4 KiB
Python
|
# 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',
|
||
|
),
|
||
|
]
|