From 27958e42475bffb29236bcf146f65c6676e05ce9 Mon Sep 17 00:00:00 2001
From: Remous-Aris Koutsiamanis <1357969+ariskou@users.noreply.github.com>
Date: Wed, 10 Apr 2019 14:52:14 +0200
Subject: [PATCH] Fix "Prevent inventory.py from configuring an even number of
 nodes in etcd" #4399 (#4465)

by making clusters with fewer than 3 nodes have only 1 etcd node
---
 contrib/inventory_builder/inventory.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/contrib/inventory_builder/inventory.py b/contrib/inventory_builder/inventory.py
index a457d627c..f9379b68e 100644
--- a/contrib/inventory_builder/inventory.py
+++ b/contrib/inventory_builder/inventory.py
@@ -93,14 +93,15 @@ class KubesprayInventory(object):
             self.purge_invalid_hosts(self.hosts.keys(), PROTECTED_NAMES)
             self.set_all(self.hosts)
             self.set_k8s_cluster()
-            self.set_etcd(list(self.hosts.keys())[:3])
+            etcd_hosts_count = 3 if len(self.hosts.keys()) >= 3 else 1
+            self.set_etcd(list(self.hosts.keys())[:etcd_hosts_count])
             if len(self.hosts) >= SCALE_THRESHOLD:
-                self.set_kube_master(list(self.hosts.keys())[3:5])
+                self.set_kube_master(list(self.hosts.keys())[etcd_hosts_count:5])
             else:
                 self.set_kube_master(list(self.hosts.keys())[:2])
             self.set_kube_node(self.hosts.keys())
             if len(self.hosts) >= SCALE_THRESHOLD:
-                self.set_calico_rr(list(self.hosts.keys())[:3])
+                self.set_calico_rr(list(self.hosts.keys())[:etcd_hosts_count])
         else:  # Show help if no options
             self.show_help()
             sys.exit(0)
-- 
GitLab