From 23b775921be5a07c402418bce2ec3176a721fba8 Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Thu, 17 Feb 2022 16:47:48 +0000 Subject: [PATCH] Fix print_hostnames of inventory.py When trying to run print_hostnames of inventory.py, it outputs the following error: $ CONFIG_FILE=./test-hosts.yaml python3 ./inventory.py print_hostnames Traceback (most recent call last): File "./inventory.py", line 472, in sys.exit(main()) File "./inventory.py", line 467, in main KubesprayInventory(argv, CONFIG_FILE) File "./inventory.py", line 92, in __init__ self.parse_command(changed_hosts[0], changed_hosts[1:]) File "./inventory.py", line 415, in parse_command self.print_hostnames() File "./inventory.py", line 455, in print_hostnames print(' '.join(self.yaml_config['all']['hosts'].keys())) KeyError: 'all' because it is missed to load a hosts config file before printing hostnames. This fixes the issue. --- contrib/inventory_builder/inventory.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/inventory_builder/inventory.py b/contrib/inventory_builder/inventory.py index 106f9eeea12..1728a08e9a5 100644 --- a/contrib/inventory_builder/inventory.py +++ b/contrib/inventory_builder/inventory.py @@ -88,6 +88,8 @@ def __init__(self, changed_hosts=None, config_file=None): if changed_hosts[0] == "add": loadPreviousConfig = True changed_hosts = changed_hosts[1:] + elif changed_hosts[0] == "print_hostnames": + loadPreviousConfig = True else: self.parse_command(changed_hosts[0], changed_hosts[1:]) sys.exit(0) @@ -105,6 +107,10 @@ def __init__(self, changed_hosts=None, config_file=None): print(e) sys.exit(1) + if changed_hosts[0] == "print_hostnames": + self.print_hostnames() + sys.exit(0) + self.ensure_required_groups(ROLES) if changed_hosts: