aboutsummaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2014-06-03 16:26:13 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-06-06 10:32:54 +0100
commit89fe052949f7f6dbcca0ec69ff1a1c6735650f4b (patch)
tree33c79a1b92b633a35d3e6b83e801dfdc023b3456 /bitbake/lib
parent506b5bd729920d7bab694f28d674888d1b7398db (diff)
downloadopenembedded-core-contrib-89fe052949f7f6dbcca0ec69ff1a1c6735650f4b.tar.gz
bitbake: toaster: read database settings from the environment
We add the capability to read the database settings for Toaster from the environment. The DATABASE_URL is intepreted and used to override the default settings. This capability is essential for easy deployment of Toaster in a managed hosted environment, and for creating build environments with custom database settings. (Bitbake rev: d16d19dafb83448fc214fce4fbdc2bcbf4bf9ce3) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/toaster/toastermain/settings.py35
1 files changed, 34 insertions, 1 deletions
diff --git a/bitbake/lib/toaster/toastermain/settings.py b/bitbake/lib/toaster/toastermain/settings.py
index 645f32746d..adaa56ca17 100644
--- a/bitbake/lib/toaster/toastermain/settings.py
+++ b/bitbake/lib/toaster/toastermain/settings.py
@@ -41,6 +41,39 @@ DATABASES = {
}
}
+# Reinterpret database settings if we have DATABASE_URL environment variable defined
+import os, re
+
+if 'DATABASE_URL' in os.environ:
+ dburl = os.environ['DATABASE_URL']
+ if dburl.startswith('sqlite3://'):
+ result = re.match('sqlite3://(.*)', dburl)
+ if result is None:
+ raise Exception("ERROR: Could not read sqlite database url: %s" % dburl)
+ DATABASES['default'] = {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': result.group(1),
+ 'USER': '',
+ 'PASSWORD': '',
+ 'HOST': '',
+ 'PORT': '',
+ }
+ elif dburl.startswith('mysql://'):
+ # URL must be in this form: mysql://user:pass@host:port/name
+ result = re.match(r"mysql://([^:]*):([^@]*)@([^:]*):(\d+)/([^/]*)", dburl)
+ if result is None:
+ raise Exception("ERROR: Could not read mysql database url: %s" % dburl)
+ DATABASES['default'] = {
+ 'ENGINE': 'django.db.backends.mysql',
+ 'NAME': result.group(5),
+ 'USER': result.group(1),
+ 'PASSWORD': result.group(2),
+ 'HOST': result.group(3),
+ 'PORT': result.group(4),
+ }
+ else:
+ raise Exception("FIXME: Please implement missing database url schema for url: %s" % dburl)
+
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
ALLOWED_HOSTS = []
@@ -51,7 +84,7 @@ ALLOWED_HOSTS = []
# In a Windows environment this must be set to your system time zone.
# Always use local computer's time zone, find
-import os, hashlib
+import hashlib
if 'TZ' in os.environ:
TIME_ZONE = os.environ['TZ']
else: