class TestConfigData(unittest.TestCase): def setUp(self): self.manager = ConfigManager(os.path.join(curdir, 'test.cfg'), os.path.join(curdir, 'test.yml')) def tearDown(self): self.manager = None def test_initial_load(self): self.assertEquals(self.manager.data._global_settings, expected_ini) def test_value_and_origin_from_ini(self): self.assertEquals( self.manager.get_config_value_and_origin('config_entry'), ('fromini', cfg_file)) def test_value_from_ini(self): self.assertEquals(self.manager.get_config_value('config_entry'), 'fromini') def test_value_and_origin_from_alt_ini(self): self.assertEquals( self.manager.get_config_value_and_origin('config_entry', cfile=cfg_file2), ('fromini2', cfg_file2)) def test_value_from_alt_ini(self): self.assertEquals( self.manager.get_config_value('config_entry', cfile=cfg_file2), 'fromini2')
class TestConfigData(unittest.TestCase): def setUp(self): self.manager = ConfigManager(cfg_file, os.path.join(curdir, 'test.yml')) def tearDown(self): self.manager = None def test_initial_load(self): self.assertEquals(self.manager.data._global_settings, expected_ini) def test_ensure_type_list(self): self.assertIsInstance(ensure_type('a,b', 'list'), list) self.assertIsInstance(ensure_type(['a', 'b'], 'list'), list) def test_ensure_type_bool(self): self.assertIsInstance(ensure_type('yes', 'bool'), bool) self.assertIsInstance(ensure_type(True, 'bool'), bool) def test_ensure_type_int(self): self.assertIsInstance(ensure_type('10', 'int'), int) self.assertIsInstance(ensure_type(20, 'int'), int) def test_ensure_type_float(self): self.assertIsInstance(ensure_type('0.10', 'float'), float) self.assertIsInstance(ensure_type(0.2, 'float'), float) def test_find_ini_file(self): cur_config = os.environ['ANSIBLE_CONFIG'] os.environ['ANSIBLE_CONFIG'] = cfg_file self.assertEquals(cfg_file, find_ini_config_file()) os.environ['ANSIBLE_CONFIG'] = cur_config def test_resolve_path(self): self.assertEquals(os.path.join(curdir, 'test.yml'), resolve_path('./test.yml', cfg_file)) def test_resolve_path_cwd(self): self.assertEquals(os.path.join(os.getcwd(), 'test.yml'), resolve_path('{{CWD}}/test.yml')) self.assertEquals(os.path.join(os.getcwd(), 'test.yml'), resolve_path('./test.yml')) def test_get_config_dest(self): pass def test_value_and_origin_from_ini(self): self.assertEquals( self.manager.get_config_value_and_origin('config_entry'), ('fromini', cfg_file)) def test_value_from_ini(self): self.assertEquals(self.manager.get_config_value('config_entry'), 'fromini') def test_value_and_origin_from_alt_ini(self): self.assertEquals( self.manager.get_config_value_and_origin('config_entry', cfile=cfg_file2), ('fromini2', cfg_file2)) def test_value_from_alt_ini(self): self.assertEquals( self.manager.get_config_value('config_entry', cfile=cfg_file2), 'fromini2') def test_value_and_origin_from_yaml(self): pass def test_value_from_yaml(self): pass def test_value_and_origin_from_alt_yaml(self): pass def test_value_from_alt_yaml(self): pass def test_config_type_bool(self): pass def test_config_type_list(self): pass def test_config_default(self): pass def test_deprecated_config(self): pass def test_deprecated_config_source(self): pass def test_multi_precedence(self): pass def test_initialize_plugin_config(self): pass def test_update_config_data(self): pass
class TestConfigData(unittest.TestCase): def setUp(self): self.manager = ConfigManager(cfg_file, os.path.join(curdir, 'test.yml')) def tearDown(self): self.manager = None def test_initial_load(self): self.assertEquals(self.manager.data._global_settings, expected_ini) def test_ensure_type_list(self): self.assertIsInstance(ensure_type('a,b', 'list'), list) self.assertIsInstance(ensure_type(['a', 'b'], 'list'), list) def test_ensure_type_bool(self): self.assertIsInstance(ensure_type('yes', 'bool'), bool) self.assertIsInstance(ensure_type(True, 'bool'), bool) def test_ensure_type_int(self): self.assertIsInstance(ensure_type('10', 'int'), int) self.assertIsInstance(ensure_type(20, 'int'), int) def test_ensure_type_float(self): self.assertIsInstance(ensure_type('0.10', 'float'), float) self.assertIsInstance(ensure_type(0.2, 'float'), float) def test_find_ini_file(self): cur_config = os.environ['ANSIBLE_CONFIG'] os.environ['ANSIBLE_CONFIG'] = cfg_file self.assertEquals(cfg_file, find_ini_config_file()) os.environ['ANSIBLE_CONFIG'] = cur_config def test_resolve_path(self): self.assertEquals(os.path.join(curdir, 'test.yml'), resolve_path('./test.yml', cfg_file)) def test_resolve_path_cwd(self): self.assertEquals(os.path.join(os.getcwd(), 'test.yml'), resolve_path('{{CWD}}/test.yml')) self.assertEquals(os.path.join(os.getcwd(), 'test.yml'), resolve_path('./test.yml')) def test_get_config_dest(self): pass def test_value_and_origin_from_ini(self): self.assertEquals(self.manager.get_config_value_and_origin('config_entry'), ('fromini', cfg_file)) def test_value_from_ini(self): self.assertEquals(self.manager.get_config_value('config_entry'), 'fromini') def test_value_and_origin_from_alt_ini(self): self.assertEquals(self.manager.get_config_value_and_origin('config_entry', cfile=cfg_file2), ('fromini2', cfg_file2)) def test_value_from_alt_ini(self): self.assertEquals(self.manager.get_config_value('config_entry', cfile=cfg_file2), 'fromini2') def test_value_and_origin_from_yaml(self): pass def test_value_from_yaml(self): pass def test_value_and_origin_from_alt_yaml(self): pass def test_value_from_alt_yaml(self): pass def test_config_type_bool(self): pass def test_config_type_list(self): pass def test_config_default(self): pass def test_deprecated_config(self): pass def test_deprecated_config_source(self): pass def test_multi_precedence(self): pass def test_initialize_plugin_config(self): pass def test_update_config_data(self): pass
# ssh TODO: remove ssh_executable=('ansible_ssh_executable', ), ssh_common_args=('ansible_ssh_common_args', ), sftp_extra_args=('ansible_sftp_extra_args', ), scp_extra_args=('ansible_scp_extra_args', ), ssh_extra_args=('ansible_ssh_extra_args', ), ssh_transfer_method=('ansible_ssh_transfer_method', ), # docker TODO: remove docker_extra_args=('ansible_docker_extra_args', ), # become become=('ansible_become', ), become_method=('ansible_become_method', ), become_user=('ansible_become_user', ), become_pass=('ansible_become_password', 'ansible_become_pass'), become_exe=('ansible_become_exe', ), become_flags=('ansible_become_flags', ), ) # POPULATE SETTINGS FROM CONFIG ### config = ConfigManager() # Generate constants from config for setting in config.get_configuration_definitions(): set_constant(setting, config.get_config_value(setting, variables=vars())) for warn in config.WARNINGS: _warning(warn)
class Loader: def __init__(self): self._config = ConfigManager() self._loader = DataLoader() self._file_vault_secrets = {} self._inventory: InventoryManager = None self._variables: VariableManager = None def _load_file_vault_secrets(self, password_file_path=None): if password_file_path is None: password_file_path = self._config.get_config_value( "DEFAULT_VAULT_PASSWORD_FILE") password_file = Path(password_file_path) if password_file.name in self._file_vault_secrets: return if not password_file.is_file(): raise FileNotFoundError(password_file) self._file_vault_secrets[password_file.name] = get_file_vault_secret( filename=password_file, loader=self._loader) self._file_vault_secrets[password_file.name].load() self._loader.set_vault_secrets([ (password_file.name, self._file_vault_secrets[password_file.name]) ]) def _get_inventory(self, source=None): if source is None: source = self._config.get_config_value("DEFAULT_HOST_LIST") if self._inventory is None: self._inventory = InventoryManager(loader=self._loader, sources=source) else: sources = source if isinstance(source, list) else [source] (self._inventory.parse_source(s) for s in sources) self._inventory.reconcile_inventory() return self._inventory def _get_variables(self, source=None): self._load_file_vault_secrets() if self._variables is None: self._variables = VariableManager( loader=self._loader, inventory=self._get_inventory(source)) return self._variables def get_hosts(self, pattern='all', source=None): return self._get_inventory(source).get_hosts(pattern) def get_host(self, hostname, source=None): return self._get_inventory(source).get_host(hostname) def get_vars(self, host, data={}): play = Play.load(data, loader=self._loader, variable_manager=self._get_variables()) return self._get_variables().get_vars(host=host, play=play)