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',
 | |
|         ),
 | |
|     ]
 | 
