From d2554909d8d67a58c962a693ef3b3e5a0d3f3ee8 Mon Sep 17 00:00:00 2001 From: e0d Date: Tue, 11 Jun 2013 14:42:39 -0400 Subject: [PATCH 1/3] Adding a new env to handle escalating privileges to run db migrations. --- lms/envs/aws_migrate.py | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 lms/envs/aws_migrate.py diff --git a/lms/envs/aws_migrate.py b/lms/envs/aws_migrate.py new file mode 100644 index 0000000000..6ba81f04e0 --- /dev/null +++ b/lms/envs/aws_migrate.py @@ -0,0 +1,8 @@ +from .aws import * +import os + +USER = os.environ.get('DB_MIGRATION_USER', 'root') +PASSWORD = os.environ.get('DB_MIGRATION_PASS', None) + +DATABASES['default']['USER'] = USER +DATABASES['default']['PASSWORD'] = PASSWORD From 1511ec841a30a7a8adbec2d700502a1e685f6103 Mon Sep 17 00:00:00 2001 From: e0d Date: Tue, 11 Jun 2013 15:00:39 -0400 Subject: [PATCH 2/3] Better error handling. --- lms/envs/aws_migrate.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lms/envs/aws_migrate.py b/lms/envs/aws_migrate.py index 6ba81f04e0..fae928868e 100644 --- a/lms/envs/aws_migrate.py +++ b/lms/envs/aws_migrate.py @@ -4,5 +4,9 @@ import os USER = os.environ.get('DB_MIGRATION_USER', 'root') PASSWORD = os.environ.get('DB_MIGRATION_PASS', None) +if not PASSWORD: + raise ImproperlyConfigured("No database password was provided for running " + "migrations. This is fatal.") + DATABASES['default']['USER'] = USER DATABASES['default']['PASSWORD'] = PASSWORD From c96511a278ad86cbcc5353ea7e3ea74519b73634 Mon Sep 17 00:00:00 2001 From: e0d Date: Tue, 11 Jun 2013 16:37:37 -0400 Subject: [PATCH 3/3] Adding comments. --- lms/envs/aws_migrate.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lms/envs/aws_migrate.py b/lms/envs/aws_migrate.py index fae928868e..595da6d78f 100644 --- a/lms/envs/aws_migrate.py +++ b/lms/envs/aws_migrate.py @@ -1,3 +1,10 @@ +""" +A Django settings file for use on AWS while running +database migrations, since we don't want to normally run the +LMS with enough privileges to modify the database schema. +""" + +# Import everything from .aws so that our settings are based on those. from .aws import * import os