diff options
Diffstat (limited to '')
-rw-r--r-- | test/integration/targets/plugin_config_for_inventory/test_inventory.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/test/integration/targets/plugin_config_for_inventory/test_inventory.py b/test/integration/targets/plugin_config_for_inventory/test_inventory.py new file mode 100644 index 0000000..f937c03 --- /dev/null +++ b/test/integration/targets/plugin_config_for_inventory/test_inventory.py @@ -0,0 +1,84 @@ +from __future__ import (absolute_import, division, print_function) + +__metaclass__ = type + +DOCUMENTATION = ''' + name: test_inventory + plugin_type: inventory + authors: + - Pierre-Louis Bonicoli (@pilou-) + short_description: test inventory + description: + - test inventory (fetch parameters using config API) + options: + departments: + description: test parameter + type: list + default: + - seine-et-marne + - haute-garonne + required: False + cache: + description: cache + type: bool + default: false + required: False + cache_plugin: + description: cache plugin + type: str + default: none + required: False + cache_timeout: + description: test cache parameter + type: integer + default: 7 + required: False + cache_connection: + description: cache connection + type: str + default: /tmp/foo + required: False + cache_prefix: + description: cache prefix + type: str + default: prefix_ + required: False +''' + +EXAMPLES = ''' +# Example command line: ansible-inventory --list -i test_inventory.yml + +plugin: test_inventory +departments: + - paris +''' + +from ansible.plugins.inventory import BaseInventoryPlugin + + +class InventoryModule(BaseInventoryPlugin): + NAME = 'test_inventory' + + def verify_file(self, path): + return True + + def parse(self, inventory, loader, path, cache=True): + super(InventoryModule, self).parse(inventory, loader, path) + config_data = self._read_config_data(path=path) + self._consume_options(config_data) + + departments = self.get_option('departments') + + group = 'test_group' + host = 'test_host' + + self.inventory.add_group(group) + self.inventory.add_host(group=group, host=host) + self.inventory.set_variable(host, 'departments', departments) + + # Ensure the timeout we're given gets sent to the cache plugin + if self.get_option('cache'): + given_timeout = self.get_option('cache_timeout') + cache_timeout = self._cache._plugin.get_option('_timeout') + self.inventory.set_variable(host, 'given_timeout', given_timeout) + self.inventory.set_variable(host, 'cache_timeout', cache_timeout) |