mirror of
https://github.com/ansible/awx.git
synced 2026-03-22 19:35:02 -02:30
Fix up migration path
These settings aren't available during the initial database migration so we'll use the defaults when bootstrapping the database
This commit is contained in:
@@ -1,9 +1,14 @@
|
|||||||
# Copyright (c) 2015 Ansible, Inc..
|
# Copyright (c) 2015 Ansible, Inc..
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from django.conf import settings as django_settings
|
from django.conf import settings as django_settings
|
||||||
|
from django.db.utils import ProgrammingError
|
||||||
from awx.main.models.configuration import TowerSettings
|
from awx.main.models.configuration import TowerSettings
|
||||||
|
|
||||||
|
logger = logging.getLogger('awx.main.conf')
|
||||||
|
|
||||||
class TowerConfiguration(object):
|
class TowerConfiguration(object):
|
||||||
|
|
||||||
# TODO: Caching so we don't have to hit the database every time for settings
|
# TODO: Caching so we don't have to hit the database every time for settings
|
||||||
@@ -11,14 +16,20 @@ class TowerConfiguration(object):
|
|||||||
settings_manifest = django_settings.TOWER_SETTINGS_MANIFEST
|
settings_manifest = django_settings.TOWER_SETTINGS_MANIFEST
|
||||||
if key not in settings_manifest:
|
if key not in settings_manifest:
|
||||||
raise AttributeError("Tower Setting with key '{0}' is not defined in the manifest".format(key))
|
raise AttributeError("Tower Setting with key '{0}' is not defined in the manifest".format(key))
|
||||||
|
default_value = settings_manifest[key]['default']
|
||||||
ts = TowerSettings.objects.filter(key=key)
|
ts = TowerSettings.objects.filter(key=key)
|
||||||
if not ts.exists():
|
try:
|
||||||
try:
|
if not ts.exists():
|
||||||
val_actual = getattr(django_settings, key)
|
try:
|
||||||
except AttributeError:
|
val_actual = getattr(django_settings, key)
|
||||||
val_actual = settings_manifest[key]['default']
|
except AttributeError:
|
||||||
return val_actual
|
val_actual = default_value
|
||||||
return ts[0].value_converted
|
return val_actual
|
||||||
|
return ts[0].value_converted
|
||||||
|
except ProgrammingError, e:
|
||||||
|
# Database is not available yet, usually during migrations so lets use the default
|
||||||
|
logger.debug("Database settings not available yet, using defaults ({0})".format(e))
|
||||||
|
return default_value
|
||||||
|
|
||||||
def __setattr__(self, key, value):
|
def __setattr__(self, key, value):
|
||||||
settings_manifest = django_settings.TOWER_SETTINGS_MANIFEST
|
settings_manifest = django_settings.TOWER_SETTINGS_MANIFEST
|
||||||
|
|||||||
Reference in New Issue
Block a user