from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable from ansible.utils.display import Display display = Display() os_logger = logging.getLogger("openstack") try: # Due to the name shadowing we should import other way import importlib sdk = importlib.import_module('openstack') sdk_inventory = importlib.import_module('openstack.cloud.inventory') client_config = importlib.import_module('openstack.config.loader') sdk_exceptions = importlib.import_module("openstack.exceptions") HAS_SDK = True except ImportError: display.vvvv("Couldn't import Openstack SDK modules") HAS_SDK = False class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable): ''' Host inventory provider for ansible using OpenStack clouds. ''' NAME = 'openstack.cloud.openstack' def parse(self, inventory, loader, path, cache=True): super(InventoryModule, self).parse(inventory, loader, path) cache_key = self._get_cache_prefix(path) # file is config file