def _get_global_configs(self): config = self.config.get_configuration_definitions(ignore_private=True).copy() for setting in config.keys(): v, o = C.config.get_config_value_and_origin(setting, cfile=self.config_file, variables=get_constants()) config[setting] = Setting(setting, v, o, None) return self._render_settings(config)
def _get_plugin_configs(self, ptype, plugins): # prep loading loader = getattr(plugin_loader, '%s_loader' % ptype) # acumulators text = [] config_entries = {} # build list if plugins: plugin_cs = [] for plugin in plugins: p = loader.get(plugin, class_only=True) if p is None: display.warning("Skipping %s as we could not find matching plugin" % plugin) else: plugin_cs.append(loader.get(plugin, class_only=True)) else: plugin_cs = loader.all(class_only=True) for plugin in plugin_cs: # in case of deprecastion they diverge finalname = name = plugin._load_name if name.startswith('_'): if os.path.islink(plugin._original_path): # skip alias continue # deprecated, but use 'nice name' finalname = name.replace('_', '', 1) + ' (DEPRECATED)' # default entries per plugin config_entries[finalname] = self.config.get_configuration_definitions(ptype, name) try: # populate config entries by loading plugin dump = loader.get(name, class_only=True) except Exception as e: display.warning('Skipping "%s" %s plugin, as we cannot load plugin to check config due to : %s' % (name, ptype, to_native(e))) continue # actually get the values for setting in config_entries[finalname].keys(): try: v, o = C.config.get_config_value_and_origin(setting, plugin_type=ptype, plugin_name=name) except AnsibleError as e: if to_text(e).startswith('No setting was provided for required configuration'): v = None o = 'REQUIRED' else: raise e config_entries[finalname][setting] = Setting(setting, v, o, None) # pretty please! results = self._render_settings(config_entries[finalname]) if results: # avoid header for empty lists (only changed!) text.append('\n%s:\n%s' % (finalname, '_' * len(finalname))) text.extend(results) return text
from __future__ import (absolute_import, division, print_function) __metaclass__ = type import os from ansible.compat.tests import unittest from ansible.config.manager import ConfigManager, Setting, ensure_type, resolve_path, find_ini_config_file curdir = os.path.dirname(__file__) cfg_file = os.path.join(curdir, 'test.cfg') cfg_file2 = os.path.join(curdir, 'test2.cfg') expected_ini = { 'CONFIG_FILE': Setting(name='CONFIG_FILE', value=cfg_file, origin='', type='string'), 'config_entry': Setting(name='config_entry', value=u'fromini', origin=cfg_file, type='string'), 'config_entry_bool': Setting(name='config_entry_bool', value=False, origin=cfg_file, type='bool'), 'config_entry_list': Setting(name='config_entry_list', value=['fromini'], origin=cfg_file, type='list'),
# Make coding more python3-ish from __future__ import (absolute_import, division, print_function) __metaclass__ = type from ansible.compat.tests import unittest from ansible.config.data import ConfigData from ansible.config.manager import Setting mykey = Setting('mykey', 'myvalue', 'test', 'string') mykey2 = Setting('mykey2', 'myvalue2', ['test', 'test2'], 'list') mykey3 = Setting('mykey3', 'myvalue3', 11111111111, 'integer') class TestConfigData(unittest.TestCase): def setUp(self): self.cdata = ConfigData() def tearDown(self): self.cdata = None def test_update_setting(self): for setting in [mykey, mykey2, mykey3]: self.cdata.update_setting(setting) self.assertEqual(setting, self.cdata._global_settings.get(setting.name)) def test_update_setting_with_plugin(self): pass