From 8d4bc2003f4b157bb40b61cdcc115388e645d5a7 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Mon, 1 Feb 2016 16:55:40 -0500 Subject: [PATCH] better fix for ansible-pull inventory handling now it mirrors what it did in previous versions and properly uses inventory and limit options --- lib/ansible/cli/__init__.py | 2 +- lib/ansible/cli/pull.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/ansible/cli/__init__.py b/lib/ansible/cli/__init__.py index b9d320cec7a..ed4a2dd5db8 100644 --- a/lib/ansible/cli/__init__.py +++ b/lib/ansible/cli/__init__.py @@ -224,7 +224,7 @@ class CLI(object): if inventory_opts: parser.add_option('-i', '--inventory-file', dest='inventory', - help="specify inventory host path (default=%s) or comma separated host list" % C.DEFAULT_HOST_LIST, + help="specify inventory host path (default=%s) or comma separated host list." % C.DEFAULT_HOST_LIST, default=C.DEFAULT_HOST_LIST, action="callback", callback=CLI.expand_tilde, type=str) parser.add_option('--list-hosts', dest='listhosts', action='store_true', help='outputs a list of matching hosts; does not execute anything else') diff --git a/lib/ansible/cli/pull.py b/lib/ansible/cli/pull.py index e099555f3ec..f9a131be433 100644 --- a/lib/ansible/cli/pull.py +++ b/lib/ansible/cli/pull.py @@ -92,6 +92,9 @@ class PullCLI(CLI): help='verify GPG signature of checked out commit, if it fails abort running the playbook.' ' This needs the corresponding VCS module to support such an operation') + # for pull we don't wan't a default + self.parser.set_defaults(inventory=None) + self.options, self.args = self.parser.parse_args(self.args[1:]) if not self.options.dest: @@ -136,8 +139,8 @@ class PullCLI(CLI): base_opts += ' -%s' % ''.join([ "v" for x in range(0, self.options.verbosity) ]) # Attempt to use the inventory passed in as an argument - # It might not yet have been downloaded so use localhost if note - if not self.options.inventory or not os.path.exists(self.options.inventory): + # It might not yet have been downloaded so use localhost as default + if not self.options.inventory or ( ',' not in self.options.inventory and not os.path.exists(self.options.inventory)): inv_opts = 'localhost,' else: inv_opts = self.options.inventory @@ -166,7 +169,7 @@ class PullCLI(CLI): bin_path = os.path.dirname(os.path.abspath(sys.argv[0])) # hardcode local and inventory/host as this is just meant to fetch the repo - cmd = '%s/ansible -i "localhost," -c local %s -m %s -a "%s" all' % (bin_path, base_opts, self.options.module_name, repo_opts) + cmd = '%s/ansible -i "%s" %s -m %s -a "%s" all -l "%s"' % (bin_path, inv_opts, base_opts, self.options.module_name, repo_opts, limit_opts) for ev in self.options.extra_vars: cmd += ' -e "%s"' % ev @@ -208,6 +211,8 @@ class PullCLI(CLI): cmd += ' -t "%s"' % self.options.tags if self.options.subset: cmd += ' -l "%s"' % self.options.subset + else: + cmd += ' -l "%s"' % limit_opts os.chdir(self.options.dest)