From ca71a50459aa77133b1b7afc416e7e98840dd089 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Wed, 25 Oct 2017 19:55:48 -0400 Subject: [PATCH] Avoid default inventory proccessing for pull (#32135) * Avoid default inventory proccessing for pull - now pull's own special inventory processing should work correctly - also removed ineffective set_defaults fixes #31449 * use class property instead * only do localhost for adhoc (cherry picked from commit aad5d1432583c4aa4105b774f38c80498e85de59) --- lib/ansible/cli/__init__.py | 9 ++++----- lib/ansible/cli/pull.py | 10 ++++------ 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/lib/ansible/cli/__init__.py b/lib/ansible/cli/__init__.py index 7aef18e8b4..6be28d5762 100644 --- a/lib/ansible/cli/__init__.py +++ b/lib/ansible/cli/__init__.py @@ -112,6 +112,7 @@ class CLI(with_metaclass(ABCMeta, object)): # -F (quit-if-one-screen) -R (allow raw ansi control chars) # -S (chop long lines) -X (disable termcap init and de-init) LESS_OPTS = 'FRSX' + SKIP_INVENTORY_DEFAULTS = False def __init__(self, args, callback=None): """ @@ -424,8 +425,7 @@ class CLI(with_metaclass(ABCMeta, object)): if inventory_opts: parser.add_option('-i', '--inventory', '--inventory-file', dest='inventory', action="append", - help="specify inventory host path (default=[%s]) or comma separated host list. " - "--inventory-file is deprecated" % C.DEFAULT_HOST_LIST) + help="specify inventory host path or comma separated host list. --inventory-file is deprecated") parser.add_option('--list-hosts', dest='listhosts', action='store_true', help='outputs a list of matching hosts; does not execute anything else') parser.add_option('-l', '--limit', default=C.DEFAULT_SUBSET, dest='subset', @@ -605,8 +605,8 @@ class CLI(with_metaclass(ABCMeta, object)): skip_tags.add(tag.strip()) self.options.skip_tags = list(skip_tags) - # process inventory options - if hasattr(self.options, 'inventory'): + # process inventory options except for CLIs that require their own processing + if hasattr(self.options, 'inventory') and not self.SKIP_INVENTORY_DEFAULTS: if self.options.inventory: @@ -616,7 +616,6 @@ class CLI(with_metaclass(ABCMeta, object)): # Ensure full paths when needed self.options.inventory = [unfrackpath(opt, follow=False) if ',' not in opt else opt for opt in self.options.inventory] - else: self.options.inventory = C.DEFAULT_HOST_LIST diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py index 08bfa4ab75..d4cd3a180a 100644 --- a/lib/ansible/cli/pull.py +++ b/lib/ansible/cli/pull.py @@ -67,6 +67,8 @@ class PullCLI(CLI): "look for a playbook based on the host's fully-qualified domain name," 'on the host hostname and finally a playbook named *local.yml*.', } + SKIP_INVENTORY_DEFAULTS = True + def _get_inv_cli(self): inv_opts = '' @@ -77,9 +79,6 @@ class PullCLI(CLI): elif ',' in inv or os.path.exists(inv): inv_opts += ' -i %s ' % inv - if not inv_opts: - inv_opts = " -i localhost, " - return inv_opts def parse(self): @@ -125,9 +124,6 @@ class PullCLI(CLI): self.parser.add_option("--check", default=False, dest='check', action='store_true', help="don't make any changes; instead, try to predict some of the changes that may occur") - # for pull we don't want a default - self.parser.set_defaults(inventory=None) - super(PullCLI, self).parse() if not self.options.dest: @@ -177,6 +173,8 @@ class PullCLI(CLI): # Attempt to use the inventory passed in as an argument # It might not yet have been downloaded so use localhost as default inv_opts = self._get_inv_cli() + if not inv_opts: + inv_opts = " -i localhost, " # FIXME: enable more repo modules hg/svn? if self.options.module_name == 'git':