blob: 26edcdda03b5b015145b93ac580582c463626429 [file] [log] [blame]
#!/usr/bin/env python3
# SPDX-FileCopyrightText: © 2021 Open Networking Foundation <support@opennetworking.org>
# SPDX-License-Identifier: Apache-2.0
# inventory.py
# create an inventory file for a site, in YAML format
# currently aether specific
import nbhelper
from ruamel import yaml
if __name__ == "__main__":
extra_args = {
"--generic": {
"action": "store_true",
"help": "Use generic output, instead of Aether-specific",
},
}
args = nbhelper.initialize(extra_args)
tenant = nbhelper.Tenant()
routers = {}
servers = {}
switches = {}
for device in tenant.get_devices():
dev_name = device.data["name"]
dev_vars = {
"ansible_host": str(device.primary_ip),
}
if device.data.device_role.slug == "router":
routers[dev_name] = dev_vars
elif device.data.device_role.slug == "server":
servers[dev_name] = dev_vars
elif device.data.device_role.slug == "switch":
switches[dev_name] = dev_vars
if args.generic:
groups = {
"routers": {"hosts": routers},
"servers": {"hosts": servers},
"switches": {"hosts": switches},
}
else:
groups = {
"aethermgmt": {"hosts": routers},
"aethercompute": {"hosts": servers},
"aetherfabric": {"hosts": switches},
}
yaml_out = {"all": {"children": groups}}
print(yaml.safe_dump(yaml_out, indent=2))