From cc45e365ae9e45bfd7e3d56120a5743c8e870822 Mon Sep 17 00:00:00 2001 From: Kenichi Omichi Date: Thu, 17 Feb 2022 13:57:03 -0800 Subject: [PATCH] Fix print_hostnames of inventory.py (#8554) 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 106f9eeea..76e7c0c46 100644 --- a/contrib/inventory_builder/inventory.py +++ b/contrib/inventory_builder/inventory.py @@ -83,11 +83,15 @@ class KubesprayInventory(object): 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 @@ class KubesprayInventory(object): print(e) sys.exit(1) + if printHostnames: + self.print_hostnames() + sys.exit(0) + self.ensure_required_groups(ROLES) if changed_hosts: