From 3b5e5409e6b2cbb406ece8b5a20ec1f19ab18f72 Mon Sep 17 00:00:00 2001
From: Samuel Munilla <smunilla@redhat.com>
Date: Wed, 27 Jul 2016 10:58:48 -0400
Subject: a-o-i: Support for arbitrary host-level variables

This allows the user to set a block containing any variables they want to set per-host
instead of per-role.
---
 utils/src/ooinstall/oo_config.py         | 5 ++++-
 utils/src/ooinstall/openshift_ansible.py | 4 ++++
 2 files changed, 8 insertions(+), 1 deletion(-)

(limited to 'utils/src/ooinstall')

diff --git a/utils/src/ooinstall/oo_config.py b/utils/src/ooinstall/oo_config.py
index fc06a0c4a..e37892c9b 100644
--- a/utils/src/ooinstall/oo_config.py
+++ b/utils/src/ooinstall/oo_config.py
@@ -56,6 +56,8 @@ class Host(object):
         # allowable roles: master, node, etcd, storage, master_lb, new
         self.roles = kwargs.get('roles', [])
 
+        self.other_variables = kwargs.get('other_variables', {})
+
         if self.connect_to is None:
             raise OOConfigInvalidHostError(
                 "You must specify either an ip or hostname as 'connect_to'")
@@ -71,7 +73,8 @@ class Host(object):
         d = {}
 
         for prop in ['ip', 'hostname', 'public_ip', 'public_hostname', 'connect_to',
-                     'preconfigured', 'containerized', 'schedulable', 'roles', 'node_labels']:
+                     'preconfigured', 'containerized', 'schedulable', 'roles', 'node_labels',
+                     'other_variables']:
             # If the property is defined (not None or False), export it:
             if getattr(self, prop):
                 d[prop] = getattr(self, prop)
diff --git a/utils/src/ooinstall/openshift_ansible.py b/utils/src/ooinstall/openshift_ansible.py
index 352955026..df25be40a 100644
--- a/utils/src/ooinstall/openshift_ansible.py
+++ b/utils/src/ooinstall/openshift_ansible.py
@@ -191,6 +191,7 @@ def write_proxy_settings(base_inventory):
         pass
 
 
+# pylint: disable=too-many-branches
 def write_host(host, inventory, schedulable=None):
     global CFG
 
@@ -205,6 +206,9 @@ def write_host(host, inventory, schedulable=None):
         facts += ' openshift_public_hostname={}'.format(host.public_hostname)
     if host.containerized:
         facts += ' containerized={}'.format(host.containerized)
+    if host.other_variables:
+        for variable, value in host.other_variables.iteritems():
+            facts += " {}={}".format(variable, value)
 
     # Distinguish between three states, no schedulability specified (use default),
     # explicitly set to True, or explicitly set to False:
-- 
cgit v1.2.3