backport inventory fix, ensure all/ungrouped

This commit is contained in:
Brian Coca 2017-03-08 14:58:10 -05:00
parent ac4ce95810
commit 3ba057d28d

View file

@ -21,7 +21,6 @@ __metaclass__ = type
import fnmatch
import os
import subprocess
import sys
import re
import itertools
@ -140,7 +139,6 @@ class Inventory(object):
display.warning("A duplicate localhost-like entry was found (%s). First found localhost was %s" % (h, self.localhost.name))
display.vvvv("Set default localhost to %s" % h)
self.localhost = new_host
all.add_host(new_host)
elif self._loader.path_exists(host_list):
# TODO: switch this to a plugin loader and a 'condition' per plugin on which it should be tried, restoring 'inventory pllugins'
if self.is_directory(host_list):
@ -170,6 +168,16 @@ class Inventory(object):
host.vars = combine_vars(host.vars, self.get_host_variables(host.name))
self.get_host_vars(host)
mygroups = host.get_groups()
# ensure hosts are always in 'all'
if all not in mygroups:
all.add_host(host)
# clear ungrouped of any incorrectly stored by parser
if len(mygroups) > 2 and ungrouped in mygroups:
host.remove_group(ungrouped)
def _match(self, str, pattern_str):
try:
if pattern_str.startswith('~'):