From 1092c302a0ef8f86b6c396060508ee71085ce14a 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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/contrib/inventory_builder/inventory.py b/contrib/inventory_builder/inventory.py index 106f9eeea12..76e7c0c4664 100644 --- a/contrib/inventory_builder/inventory.py +++ b/contrib/inventory_builder/inventory.py @@ -83,11 +83,15 @@ def __init__(self, changed_hosts=None, config_file=None): self.config_file = config_file self.yaml_config = {} loadPreviousConfig = False + printHostnames = False # See whether there are any commands to process if changed_hosts and changed_hosts[0] in AVAILABLE_COMMANDS: if changed_hosts[0] == "add": loadPreviousConfig = True changed_hosts = changed_hosts[1:] + elif changed_hosts[0] == "print_hostnames": + loadPreviousConfig = True + printHostnames = True else: self.parse_command(changed_hosts[0], changed_hosts[1:]) sys.exit(0) @@ -105,6 +109,10 @@ def __init__(self, changed_hosts=None, config_file=None): print(e) sys.exit(1) + if printHostnames: + self.print_hostnames() + sys.exit(0) + self.ensure_required_groups(ROLES) if changed_hosts: