ansible-config view fixes

pull/28942/head
Brian Coca 7 years ago committed by Brian Coca
parent de2096e3d0
commit c51a4bc57d

@ -26,7 +26,7 @@ import sys
import yaml import yaml
from ansible.cli import CLI from ansible.cli import CLI
from ansible.config.manager import ConfigManager, Setting from ansible.config.manager import ConfigManager, Setting, find_ini_config_file
from ansible.errors import AnsibleError, AnsibleOptionsError from ansible.errors import AnsibleError, AnsibleOptionsError
from ansible.module_utils._text import to_native, to_text, to_bytes from ansible.module_utils._text import to_native, to_text, to_bytes
from ansible.parsing.yaml.dumper import AnsibleDumper from ansible.parsing.yaml.dumper import AnsibleDumper
@ -86,18 +86,18 @@ class ConfigCLI(CLI):
super(ConfigCLI, self).run() super(ConfigCLI, self).run()
if self.options.config_file: if self.options.config_file:
self.config_file = unfrackpath(self.options.config_file, follow=False) self.config_file = to_bytes(unfrackpath(self.options.config_file, follow=False))
self.config = ConfigManager(self.config_file) self.config = ConfigManager(self.config_file)
else: else:
self.config = ConfigManager() self.config = ConfigManager()
self.config_file = to_bytes(self.config.data.get_setting('ANSIBLE_CONFIG')) self.config_file = to_bytes(find_ini_config_file())
try: try:
if not os.path.exists(self.config_file): if not os.path.exists(self.config_file):
raise AnsibleOptionsError("%s does not exist or is not accessible" % (self.config_file)) raise AnsibleOptionsError("%s does not exist or is not accessible" % (self.config_file))
elif not os.path.isfile(self.config_file): elif not os.path.isfile(self.config_file):
raise AnsibleOptionsError("%s is not a valid file" % (self.config_file)) raise AnsibleOptionsError("%s is not a valid file" % (self.config_file))
os.environ['ANSIBLE_CONFIG'] = self.config_file os.environ['ANSIBLE_CONFIG'] = to_native(self.config_file)
except: except:
if self.action in ['view']: if self.action in ['view']:
raise raise

@ -118,6 +118,29 @@ def get_ini_config_value(p, entry):
pass pass
return value return value
def find_ini_config_file():
''' Load INI Config File order(first found is used): ENV, CWD, HOME, /etc/ansible '''
# FIXME: eventually deprecate ini configs
path0 = os.getenv("ANSIBLE_CONFIG", None)
if path0 is not None:
path0 = unfrackpath(path0, follow=False)
if os.path.isdir(path0):
path0 += "/ansible.cfg"
try:
path1 = os.getcwd() + "/ansible.cfg"
except OSError:
path1 = None
path2 = unfrackpath("~/.ansible.cfg", follow=False)
path3 = "/etc/ansible/ansible.cfg"
for path in [path0, path1, path2, path3]:
if path is not None and os.path.exists(path):
break
else:
path = None
return path
class ConfigManager(object): class ConfigManager(object):
@ -145,7 +168,7 @@ class ConfigManager(object):
if self._config_file is None: if self._config_file is None:
# set config using ini # set config using ini
self._config_file = self._find_ini_config_file() self._config_file = find_ini_config_file()
if self._config_file: if self._config_file:
if os.path.exists(self._config_file): if os.path.exists(self._config_file):
@ -182,29 +205,6 @@ class ConfigManager(object):
''' Load YAML Config Files in order, check merge flags, keep origin of settings''' ''' Load YAML Config Files in order, check merge flags, keep origin of settings'''
pass pass
def _find_ini_config_file(self):
''' Load INI Config File order(first found is used): ENV, CWD, HOME, /etc/ansible '''
# FIXME: eventually deprecate ini configs
path0 = os.getenv("ANSIBLE_CONFIG", None)
if path0 is not None:
path0 = unfrackpath(path0, follow=False)
if os.path.isdir(path0):
path0 += "/ansible.cfg"
try:
path1 = os.getcwd() + "/ansible.cfg"
except OSError:
path1 = None
path2 = unfrackpath("~/.ansible.cfg", follow=False)
path3 = "/etc/ansible/ansible.cfg"
for path in [path0, path1, path2, path3]:
if path is not None and os.path.exists(path):
break
else:
path = None
return path
def get_configuration_definitions(self, plugin_type=None, name=None): def get_configuration_definitions(self, plugin_type=None, name=None):
''' just list the possible settings, either base or for specific plugins or plugin ''' ''' just list the possible settings, either base or for specific plugins or plugin '''

Loading…
Cancel
Save