From c4cff44e772e8b4631386243169d164bc0b0937c Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Tue, 7 Mar 2017 11:57:20 -0500 Subject: [PATCH] fix 'ungrouped' issue with some inventory formats --- lib/ansible/inventory/__init__.py | 5 +++++ lib/ansible/inventory/group.py | 6 ++++++ lib/ansible/inventory/host.py | 4 ++++ 3 files changed, 15 insertions(+) diff --git a/lib/ansible/inventory/__init__.py b/lib/ansible/inventory/__init__.py index 1f0317c454..fc808e3ca3 100644 --- a/lib/ansible/inventory/__init__.py +++ b/lib/ansible/inventory/__init__.py @@ -170,6 +170,11 @@ class Inventory(object): host.vars = combine_vars(host.vars, self.get_host_variables(host.name)) self.get_host_vars(host) + # clear ungrouped of any incorrectly stored by parser + mygroups = host.get_groups() + if len(mygroups) > 2 and ungrouped in mygroups: + host.remove_group(ungrouped) + def _match(self, str, pattern_str): try: if pattern_str.startswith('~'): diff --git a/lib/ansible/inventory/group.py b/lib/ansible/inventory/group.py index a6ab35c3e9..73d432e545 100644 --- a/lib/ansible/inventory/group.py +++ b/lib/ansible/inventory/group.py @@ -114,6 +114,12 @@ class Group: host.add_group(self) self.clear_hosts_cache() + def remove_host(self, host): + + self.hosts.remove(host) + host.remove_group(self) + self.clear_hosts_cache() + def set_variable(self, key, value): self.vars[key] = value diff --git a/lib/ansible/inventory/host.py b/lib/ansible/inventory/host.py index 8d0fc9a52c..3902471e54 100644 --- a/lib/ansible/inventory/host.py +++ b/lib/ansible/inventory/host.py @@ -110,6 +110,10 @@ class Host: self.groups.append(group) + def remove_group(self, group): + + self.groups.remove(group) + def set_variable(self, key, value): self.vars[key]=value