[oe-commits] [bitbake] 04/09: toaster: Remove DATABASE_URL being passed around as an environment var

git at git.openembedded.org git at git.openembedded.org
Fri May 20 09:13:23 UTC 2016


rpurdie pushed a commit to branch master
in repository bitbake.

commit 973c740404ca6a09feea250d3433075995067fe0
Author: Michael Wood <michael.g.wood at intel.com>
AuthorDate: Thu May 19 13:59:28 2016 +0100

    toaster: Remove DATABASE_URL being passed around as an environment var
    
    We don't need to pass the DATABASE_URL around and read it back if we
    setup the django framework in the correct way.
    We make the default sqlite database path a full path so that the
    database isn't being assumed to be in CWD.
    
    Also add some more useful comments on the database settings.
    
    This is preparation work to migrate the build tests and be able to
    trigger builds on differently configured databases.
    
    Signed-off-by: Michael Wood <michael.g.wood at intel.com>
    Signed-off-by: Elliot Smith <elliot.smith at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 bin/toaster                                        |  2 -
 lib/bb/ui/buildinfohelper.py                       | 20 +++----
 .../toastermain/management/commands/get-dburl.py   |  9 ---
 lib/toaster/toastermain/settings.py                | 67 ++++------------------
 4 files changed, 20 insertions(+), 78 deletions(-)

diff --git a/bin/toaster b/bin/toaster
index 921164c..05b7935 100755
--- a/bin/toaster
+++ b/bin/toaster
@@ -100,7 +100,6 @@ stop_system()
     fi
     webserverKillAll
     # unset exported variables
-    unset DATABASE_URL
     unset TOASTER_CONF
     unset TOASTER_DIR
     unset BITBAKE_UI
@@ -278,7 +277,6 @@ case $CMD in
             return 4
         fi
         export BITBAKE_UI='toasterui'
-        export DATABASE_URL=`$MANAGE get-dburl`
         $MANAGE runbuilds & echo $! >${BUILDDIR}/.runbuilds.pid
         # set fail safe stop system on terminal exit
         trap stop_system SIGHUP
diff --git a/lib/bb/ui/buildinfohelper.py b/lib/bb/ui/buildinfohelper.py
index c5368f6..cea53e0 100644
--- a/lib/bb/ui/buildinfohelper.py
+++ b/lib/bb/ui/buildinfohelper.py
@@ -21,19 +21,19 @@ import bb
 import re
 import os
 
-os.environ["DJANGO_SETTINGS_MODULE"] = "toaster.toastermain.settings"
-
-
 import django
 from django.utils import timezone
 
+import toaster
+# Add toaster module to the search path to help django.setup() find the right
+# modules
+sys.path.insert(0, os.path.dirname(toaster.__file__))
 
-def _configure_toaster():
-    """ Add toaster to sys path for importing modules
-    """
-    sys.path.append(os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'toaster'))
-_configure_toaster()
-
+#Set the DJANGO_SETTINGS_MODULE if it's not already set
+os.environ["DJANGO_SETTINGS_MODULE"] =\
+    os.environ.get("DJANGO_SETTINGS_MODULE",
+                   "toaster.toastermain.settings")
+# Setup django framework (needs to be done before importing modules)
 django.setup()
 
 from orm.models import Build, Task, Recipe, Layer_Version, Layer, Target, LogMessage, HelpText
@@ -54,11 +54,11 @@ from datetime import datetime, timedelta
 
 from django.db import transaction, connection
 
+
 # pylint: disable=invalid-name
 # the logger name is standard throughout BitBake
 logger = logging.getLogger("ToasterLogger")
 
-
 class NotExisting(Exception):
     pass
 
diff --git a/lib/toaster/toastermain/management/commands/get-dburl.py b/lib/toaster/toastermain/management/commands/get-dburl.py
deleted file mode 100644
index 911296f..0000000
--- a/lib/toaster/toastermain/management/commands/get-dburl.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from toastermain.settings import getDATABASE_URL
-from django.core.management.base import NoArgsCommand
-
-class Command(NoArgsCommand):
-    args    = ""
-    help    = "get database url"
-
-    def handle_noargs(self,**options):
-        print(getDATABASE_URL())
diff --git a/lib/toaster/toastermain/settings.py b/lib/toaster/toastermain/settings.py
index 78702fa..c7edff2 100644
--- a/lib/toaster/toastermain/settings.py
+++ b/lib/toaster/toastermain/settings.py
@@ -21,7 +21,7 @@
 
 # Django settings for Toaster project.
 
-import os, re
+import os
 
 DEBUG = True
 TEMPLATE_DEBUG = DEBUG
@@ -38,14 +38,19 @@ ADMINS = (
 
 MANAGERS = ADMINS
 
+TOASTER_SQLITE_DEFAULT_DIR = os.path.join(os.environ.get('TOASTER_DIR', ''),
+                                          'build')
+
 DATABASES = {
     'default': {
-        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
-        'NAME': 'toaster.sqlite',                      # Or path to database file if using sqlite3.
+        # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
+        'ENGINE': 'django.db.backends.sqlite3',
+        # DB name or full path to database file if using sqlite3.
+        'NAME': "%s/toaster.sqlite" % TOASTER_SQLITE_DEFAULT_DIR,
         'USER': '',
         'PASSWORD': '',
-        'HOST': '127.0.0.1',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
-        'PORT': '3306',                      # Set to empty string for default.
+        #'HOST': '127.0.0.1', # e.g. mysql server
+        #'PORT': '3306', # e.g. mysql port
     }
 }
 
@@ -55,58 +60,6 @@ DATABASES = {
 if 'sqlite' in DATABASES['default']['ENGINE']:
     DATABASES['default']['OPTIONS'] = { 'timeout': 20 }
 
-# Reinterpret database settings if we have DATABASE_URL environment variable defined
-
-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)
-
-
-# Allows current database settings to be exported as a DATABASE_URL environment variable value
-
-def getDATABASE_URL():
-    d = DATABASES['default']
-    if d['ENGINE'] == 'django.db.backends.sqlite3':
-        if d['NAME'] == ':memory:':
-            return 'sqlite3://:memory:'
-        elif d['NAME'].startswith("/"):
-            return 'sqlite3://' + d['NAME']
-        return "sqlite3://" + os.path.join(os.getcwd(), d['NAME'])
-
-    elif d['ENGINE'] == 'django.db.backends.mysql':
-        return "mysql://" + d['USER'] + ":" + d['PASSWORD'] + "@" + d['HOST'] + ":" + d['PORT'] + "/" + d['NAME']
-
-    raise Exception("FIXME: Please implement missing database url schema for engine: %s" % d['ENGINE'])
-
-
-
 # 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 = []

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list