diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index f8349ea7440..a416a6fad0e 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -656,6 +656,9 @@ class StrategyBase: self.run_handlers(iterator, play_context) elif meta_action == 'refresh_inventory': self._inventory.refresh_inventory() + elif meta_action == 'clear_facts': + for host in iterator._host_states: + self._variable_manager.clear_facts(host) #elif meta_action == 'reset_connection': # connection_info.connection.close() elif meta_action == 'clear_host_errors': diff --git a/lib/ansible/vars/__init__.py b/lib/ansible/vars/__init__.py index 361ab5670a0..edaedbbd634 100644 --- a/lib/ansible/vars/__init__.py +++ b/lib/ansible/vars/__init__.py @@ -568,6 +568,13 @@ class VariableManager: else: return dict() + def clear_facts(self, hostname): + ''' + Clears the facts for a host + ''' + if hostname in self._fact_cache: + del self._fact_cache[hostname] + def set_host_facts(self, host, facts): ''' Sets or updates the given facts for a host in the fact cache.