mirror of
https://github.com/ansible/awx.git
synced 2026-03-29 14:55:09 -02:30
* Add separate Django app for configuration: awx.conf. * Migrate from existing main.TowerSettings model to conf.Setting. * Add settings wrapper to allow get/set/del via django.conf.settings. * Update existing references to tower_settings to use django.conf.settings. * Add a settings registry to allow for each Django app to register configurable settings. * Support setting validation and conversion using Django REST Framework fields. * Add /api/v1/settings/ to display a list of setting categories. * Add /api/v1/settings/<slug>/ to display all settings in a category as a single object. * Allow PUT/PATCH to update setting singleton, DELETE to reset to defaults. * Add "all" category to display all settings across categories. * Add "changed" category to display only settings configured in the database. * Support per-user settings via "user" category (/api/v1/settings/user/). * Support defaults for user settings via "user-defaults" category (/api/v1/settings/user-defaults/). * Update serializer metadata to support category, category_slug and placeholder on OPTIONS responses. * Update serializer metadata to handle child fields of a list/dict. * Hide raw data form in browsable API for OPTIONS and DELETE. * Combine existing licensing code into single "TaskEnhancer" class. * Move license helper functions from awx.api.license into awx.conf.license. * Update /api/v1/config/ to read/verify/update license using TaskEnhancer and settings wrapper. * Add support for caching settings accessed via settings wrapper. * Invalidate cached settings when Setting model changes or is deleted. * Preload all database settings into cache on first access via settings wrapper. * Add support for read-only settings than can update their value depending on other settings. * Use setting_changed signal whenever a setting changes. * Register configurable authentication, jobs, system and ui settings. * Register configurable LDAP, RADIUS and social auth settings. * Add custom fields and validators for URL, LDAP, RADIUS and social auth settings. * Rewrite existing validator for Credential ssh_private_key to support validating private keys, certs or combinations of both. * Get all unit/functional tests working with above changes. * Add "migrate_to_database_settings" command to determine settings to be migrated into the database and comment them out when set in Python settings files. * Add support for migrating license key from file to database. * Remove database-configuable settings from local_settings.py example files. * Update setup role to no longer install files for database-configurable settings. f 94ff6ee More settings work. f af4c4e0 Even more db settings stuff. f 96ea9c0 More settings, attempt at singleton serializer for settings. f 937c760 More work on singleton/category views in API, add code to comment out settings in Python files, work on command to migrate settings to database. f 425b0d3 Minor fixes for sprint demo. f ea402a4 Add support for read-only settings, cleanup license engine, get license support working with DB settings. f ec289e4 Rename migration, minor fixmes, update setup role. f 603640b Rewrite key/cert validator, finish adding social auth fields, hook up signals for setting_changed, use None to imply a setting is not set. f 67d1b5a Get functional/unit tests passing. f 2919b62 Flake8 fixes. f e62f421 Add redbaron to requirements, get file to database migration working (except for license). f c564508 Add support for migrating license file. f 982f767 Add support for regex in social map fields.
59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
# Copyright (c) 2015 Ansible, Inc.
|
|
# All Rights Reserved
|
|
|
|
import sys
|
|
|
|
from optparse import make_option
|
|
from django.core.management.base import BaseCommand
|
|
from awx.main.ha import is_ha_environment
|
|
from awx.main.task_engine import TaskEnhancer
|
|
|
|
|
|
class Command(BaseCommand):
|
|
"""Return a exit status of 0 if MongoDB should be active, and an
|
|
exit status of 1 otherwise.
|
|
|
|
This script is intended to be used by bash and init scripts to
|
|
conditionally start MongoDB, so its focus is on being bash-friendly.
|
|
"""
|
|
|
|
def __init__(self):
|
|
super(Command, self).__init__()
|
|
BaseCommand.option_list += (make_option('--local',
|
|
dest='local',
|
|
default=False,
|
|
action="store_true",
|
|
help="Only check if mongo should be running locally"),)
|
|
|
|
def handle(self, *args, **kwargs):
|
|
# Get the license data.
|
|
license_data = TaskEnhancer().validate_enhancements()
|
|
|
|
# Does the license have features, at all?
|
|
# If there is no license yet, then all features are clearly off.
|
|
if 'features' not in license_data:
|
|
print('No license available.')
|
|
sys.exit(2)
|
|
|
|
# Does the license contain the system tracking feature?
|
|
# If and only if it does, MongoDB should run.
|
|
system_tracking = license_data['features']['system_tracking']
|
|
|
|
# Okay, do we need MongoDB to be turned on?
|
|
# This is a silly variable assignment right now, but I expect the
|
|
# rules here will grow more complicated over time.
|
|
uses_mongo = system_tracking # noqa
|
|
|
|
if is_ha_environment() and kwargs['local'] and uses_mongo:
|
|
print("HA Configuration detected. Database should be remote")
|
|
uses_mongo = False
|
|
|
|
# If we do not need Mongo, return a non-zero exit status.
|
|
if not uses_mongo:
|
|
print('MongoDB NOT required')
|
|
sys.exit(1)
|
|
|
|
# We do need Mongo, return zero.
|
|
print('MongoDB required')
|
|
sys.exit(0)
|