--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/4b7f8335-6cba-4916-94f3-c8504fedcc14n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/5a6ad727-56e0-4f6e-abf4-8fc21228bdccn%40googlegroups.com.
import os
import sys
import argparse
import json
class TowerInventory(object):
def __init__(self):
self.inventory = {}
self.read_cli_args()
# Called with `--list`.
if self.args.list:
self.inventory = self.tower_inventory()
# Called with `--host [hostname]`.
elif self.args.host:
# Not implemented, since we return _meta info `--list`.
self.inventory = self.empty_inventory()
# If no groups or vars are present, return an empty inventory.
else:
self.inventory = self.empty_inventory()
print (json.dumps(self.inventory));
# Tower inventory for testing.
def tower_inventory(self):
tmp_inventory = {{ tower_inventory | to_nice_json }}
tmp_inventory = remove_empty_elements(tmp_inventory)
return tmp_inventory
# Empty inventory for testing.
def empty_inventory(self):
return {"_meta": {"hostvars": {}}}
# Read the command line args passed to the script.
def read_cli_args(self):
parser = argparse.ArgumentParser()
parser.add_argument("--list", action = "store_true")
parser.add_argument("--host", action = "store")
self.args = parser.parse_args()
# Remove empty groups and elements from dict
def remove_empty_elements(d):
"""recursively remove empty lists, empty dicts, or None elements from a dictionary"""
def empty(x):
return x is None or x == {} or x == [] or x == [""]
if not isinstance(d, (dict, list)):
return d
elif isinstance(d, list):
return [v for v in (remove_empty_elements(v) for v in d) if not empty(v)]
else:
return {k: v for k, v in ((k, remove_empty_elements(v)) for k, v in list(d.items())) if not empty(v)}
# Get the inventory.
TowerInventory()