def config_dump(parsed_args, host=None, hosts=None, var_name=None, facts=None, extra_vars=None, tags=None, verbose_level=None): dump_dir = tempfile.mkdtemp() try: if not extra_vars: extra_vars = {} extra_vars["dump_path"] = dump_dir if host or hosts: extra_vars["dump_hosts"] = host or hosts if var_name: extra_vars["dump_var_name"] = var_name if facts is not None: extra_vars["dump_facts"] = facts # Don't use check mode for configuration dumps as we won't get any # results back. playbook_path = utils.get_data_files_path("ansible", "dump-config.yml") run_playbook(parsed_args, playbook_path, extra_vars=extra_vars, tags=tags, check_output=True, verbose_level=verbose_level, check=False) hostvars = {} for path in os.listdir(dump_dir): LOG.debug("Found dump file %s", path) inventory_hostname, ext = os.path.splitext(path) if ext == ".yml": hvars = utils.read_yaml_file(os.path.join(dump_dir, path)) if host: return hvars else: hostvars[inventory_hostname] = hvars else: LOG.warning("Unexpected extension on config dump file %s", path) return hostvars finally: shutil.rmtree(dump_dir)
def config_dump(parsed_args, host=None, hosts=None, var_name=None, facts=None, extra_vars=None, verbose_level=None): dump_dir = tempfile.mkdtemp() try: if not extra_vars: extra_vars = {} extra_vars["dump_path"] = dump_dir if host or hosts: extra_vars["dump_hosts"] = host or hosts if var_name: extra_vars["dump_var_name"] = var_name if facts is not None: extra_vars["dump_facts"] = facts # Don't use check mode for configuration dumps as we won't get any # results back. run_playbook(parsed_args, "ansible/dump-config.yml", extra_vars=extra_vars, quiet=True, verbose_level=verbose_level, check=False) hostvars = {} for path in os.listdir(dump_dir): LOG.debug("Found dump file %s", path) inventory_hostname, ext = os.path.splitext(path) if ext == ".yml": hvars = utils.read_yaml_file(os.path.join(dump_dir, path)) if host: return hvars else: hostvars[inventory_hostname] = hvars else: LOG.warning("Unexpected extension on config dump file %s", path) return hostvars finally: shutil.rmtree(dump_dir)
def test_read_yaml_file(self, mock_read): mock_read.return_value = """--- key1: value1 key2: value2 """ result = utils.read_yaml_file("/path/to/file") self.assertEqual(result, {"key1": "value1", "key2": "value2"}) mock_read.assert_called_once_with("/path/to/file")
def test_read_yaml_file(self, mock_load, mock_read): config = """--- key1: value1 key2: value2 """ mock_read.return_value = config result = utils.read_yaml_file("/path/to/file") self.assertEqual(result, {"key1": "value1", "key2": "value2"}) mock_read.assert_called_once_with("/path/to/file") mock_load.assert_called_once_with(config)