horizon/openstack_dashboard/api/rest/config.py
Travis Tripp 3a59bec6a7 [Launch Instance Fix] Settings for volume name
This patch provides the rest API needed to
get settings that allow conditionally
displaying the volume device name
and admin password.

Examples:

settingsService.ifEnabled('setting').then(doThis);
settingsService.ifEnabled('setting', 'expected', 'default').then(doThis, elseThis);

Change-Id: I8d16f4b974786157c5aa562e2675e6e60aabc412
Partial-Bug: #1439906
Partial-Bug: #1439905
2015-04-09 21:00:47 -06:00

98 lines
3.2 KiB
Python

# Copyright 2015 IBM Corp.
# Copyright 2015, Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from django.conf import settings
from django.views import generic
from horizon import conf
from openstack_dashboard.api.rest import urls
from openstack_dashboard.api.rest import utils as rest_utils
# properties we know are admin config
admin_configs = ['ajax_queue_limit', 'ajax_poll_interval',
'user_home', 'help_url',
'password_autocomplete', 'disable_password_reveal']
# settings that we allow to be retrieved via REST API
# these settings are available to the client and are not secured.
# *** THEY SHOULD BE TREATED WITH EXTREME CAUTION ***
settings_required = getattr(settings, 'REST_API_REQUIRED_SETTINGS', [])
settings_additional = getattr(settings, 'REST_API_ADDITIONAL_SETTINGS', [])
settings_allowed = settings_required + settings_additional
# properties we know are user config
# this is a white list of keys under HORIZON_CONFIG in settings.pys
# that we want to pass onto client
user_configs = ['auto_fade_alerts', 'modal_backdrop']
@urls.register
class DefaultUserConfigs(generic.View):
"""API for retrieving user configurations.
This API returns read-only-default configuration values.
This configuration object is ideally fetched once per application life
or when a user needs to restore the default values.
Examples of user config: modal_backdrop, disable_password_reveal
"""
url_regex = r'config/user/$'
@rest_utils.ajax()
def get(self, request):
"""Get default user configurations
"""
config = {}
for key in user_configs:
config[key] = conf.HORIZON_CONFIG.get(key, None)
return config
@urls.register
class AdminConfigs(generic.View):
"""API for retrieving admin configurations.
This API returns read-only admin configuration values.
This configuration object can be fetched as needed.
Examples of admin config: help_url, user_home
"""
url_regex = r'config/admin/$'
@rest_utils.ajax()
def get(self, request):
"""Get read-only admin configurations
"""
config = {}
for key in admin_configs:
config[key] = conf.HORIZON_CONFIG.get(key, None)
return config
@urls.register
class Settings(generic.View):
"""API for retrieving settings.
This API returns read-only settings values.
This configuration object can be fetched as needed.
Examples of settings: OPENSTACK_HYPERVISOR_FEATURES
"""
url_regex = r'settings/$'
@rest_utils.ajax()
def get(self, request):
return {k: getattr(settings, k, None) for k in settings_allowed}