From 2fa3b196793be29b3076b3805a53eee616e7f0c4 Mon Sep 17 00:00:00 2001 From: Stefano Alberto Russo <stefano.russo@gmail.com> Date: Thu, 28 May 2020 17:53:19 +0200 Subject: [PATCH] Committed the migrations. --- .../webapp/code/migrations_vanilla/README.txt | 3 - .../webapp/code/rosetta/core_app/migrations | 1 - .../core_app/migrations/0001_initial.py | 124 ++++++++++++++++++ .../core_app/migrations}/__init__.py | 0 services/webapp/prestartup_webapp.sh | 43 ------ 5 files changed, 124 insertions(+), 47 deletions(-) delete mode 100644 services/webapp/code/migrations_vanilla/README.txt delete mode 120000 services/webapp/code/rosetta/core_app/migrations create mode 100644 services/webapp/code/rosetta/core_app/migrations/0001_initial.py rename services/webapp/code/{migrations_vanilla => rosetta/core_app/migrations}/__init__.py (100%) diff --git a/services/webapp/code/migrations_vanilla/README.txt b/services/webapp/code/migrations_vanilla/README.txt deleted file mode 100644 index dd64186..0000000 --- a/services/webapp/code/migrations_vanilla/README.txt +++ /dev/null @@ -1,3 +0,0 @@ - -This is a folder with just an __init__.py file, used to initialize the migrations. - diff --git a/services/webapp/code/rosetta/core_app/migrations b/services/webapp/code/rosetta/core_app/migrations deleted file mode 120000 index e459246..0000000 --- a/services/webapp/code/rosetta/core_app/migrations +++ /dev/null @@ -1 +0,0 @@ -/data/migrations/core_app \ No newline at end of file diff --git a/services/webapp/code/rosetta/core_app/migrations/0001_initial.py b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py new file mode 100644 index 0000000..40576cf --- /dev/null +++ b/services/webapp/code/rosetta/core_app/migrations/0001_initial.py @@ -0,0 +1,124 @@ +# Generated by Django 2.2.1 on 2020-05-28 15:12 + +from django.conf import settings +import django.contrib.postgres.fields.jsonb +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import uuid + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Computing', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255, verbose_name='Computing Name')), + ('type', models.CharField(max_length=255, verbose_name='Computing Type')), + ('requires_sys_conf', models.BooleanField(default=False)), + ('requires_user_conf', models.BooleanField(default=False)), + ('requires_user_keys', models.BooleanField(default=False)), + ('supports_docker', models.BooleanField(default=False)), + ('supports_singularity', models.BooleanField(default=False)), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Container', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=255, verbose_name='Container Name')), + ('image', models.CharField(max_length=255, verbose_name='Container image')), + ('type', models.CharField(max_length=36, verbose_name='Container type')), + ('registry', models.CharField(max_length=255, verbose_name='Container registry')), + ('ports', models.CharField(blank=True, max_length=36, null=True, verbose_name='Container ports')), + ('supports_dynamic_ports', models.BooleanField(default=False)), + ('supports_user_auth', models.BooleanField(default=False)), + ('supports_pass_auth', models.BooleanField(default=False)), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['name'], + }, + ), + migrations.CreateModel( + name='Task', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('tid', models.CharField(blank=True, max_length=64, null=True, verbose_name='Task ID')), + ('name', models.CharField(max_length=36, verbose_name='Task name')), + ('status', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task status')), + ('created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Created on')), + ('pid', models.IntegerField(blank=True, null=True, verbose_name='Task pid')), + ('port', models.IntegerField(blank=True, null=True, verbose_name='Task port')), + ('ip', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task ip address')), + ('tunnel_port', models.IntegerField(blank=True, null=True, verbose_name='Task tunnel port')), + ('extra_binds', models.CharField(blank=True, max_length=4096, null=True, verbose_name='Extra binds')), + ('auth_user', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task auth user')), + ('auth_pass', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task auth pass')), + ('access_method', models.CharField(blank=True, max_length=36, null=True, verbose_name='Task access method')), + ('computing_options', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)), + ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')), + ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Container')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'ordering': ['-created'], + }, + ), + migrations.CreateModel( + name='Profile', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('timezone', models.CharField(default='UTC', max_length=36, verbose_name='User Timezone')), + ('authtoken', models.CharField(blank=True, max_length=36, null=True, verbose_name='User auth token')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='LoginToken', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('token', models.CharField(max_length=36, verbose_name='Login token')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='KeyPair', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('private_key_file', models.CharField(max_length=4096, verbose_name='Private key file')), + ('public_key_file', models.CharField(max_length=4096, verbose_name='Public key file')), + ('default', models.BooleanField(default=False, verbose_name='Default keys?')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='ComputingUserConf', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)), + ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')), + ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='ComputingSysConf', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('data', django.contrib.postgres.fields.jsonb.JSONField(blank=True, null=True)), + ('computing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='core_app.Computing')), + ], + ), + ] diff --git a/services/webapp/code/migrations_vanilla/__init__.py b/services/webapp/code/rosetta/core_app/migrations/__init__.py similarity index 100% rename from services/webapp/code/migrations_vanilla/__init__.py rename to services/webapp/code/rosetta/core_app/migrations/__init__.py diff --git a/services/webapp/prestartup_webapp.sh b/services/webapp/prestartup_webapp.sh index 0339f0c..f48c532 100644 --- a/services/webapp/prestartup_webapp.sh +++ b/services/webapp/prestartup_webapp.sh @@ -8,46 +8,3 @@ chown rosetta:rosetta /var/log/webapp mkdir -p /data/resources chown rosetta:rosetta /data/resources - -#----------------------------- -# Set migrations data folder -#----------------------------- - -if [[ "xDJANGO_DB_NAME" == "x:memory:" ]] ; then - # Use the /tmp directory via links to use ephemeral data - mkdir -p /tmp/migrations - $MIGRATIONS_DATA_FOLDER=/tmp/migrations - echo "Using temporary migrations in $MIGRATIONS_DATA_FOLDER" -else - # Use the /data directory via links to use data persistency - MIGRATIONS_DATA_FOLDER="/data/migrations" - # Also if the migrations folder in /data does not exist, create it now - mkdir -p /data/migrations - echo "Persisting migrations in $MIGRATIONS_DATA_FOLDER" -fi - - -#----------------------------- -# Handle Base App migrations -#----------------------------- - -# Remove potential leftovers -rm -f /opt/webapp_code/rosetta/core_app/migrations - -# If migrations were not already initialized, do it now -if [ ! -d "$MIGRATIONS_DATA_FOLDER/core_app" ] ; then - echo "Initializing migrations for core_app"... - mkdir $MIGRATIONS_DATA_FOLDER/core_app && chown rosetta:rosetta $MIGRATIONS_DATA_FOLDER/core_app - touch $MIGRATIONS_DATA_FOLDER/core_app/__init__.py && chown rosetta:rosetta $MIGRATIONS_DATA_FOLDER/core_app/__init__.py -fi - -# Use the right migrations folder -ln -s $MIGRATIONS_DATA_FOLDER/core_app /opt/webapp_code/rosetta/core_app/migrations - - - - - - - - -- GitLab