|
@@ -837,6 +837,25 @@ def set_sdn_facts_if_unset(facts, system_facts):
|
|
|
|
|
|
return facts
|
|
|
|
|
|
+def migrate_oauth_template_facts(facts):
|
|
|
+ """
|
|
|
+ Migrate an old oauth template fact to a newer format if it's present.
|
|
|
+
|
|
|
+ The legacy 'oauth_template' fact was just a filename, and assumed you were
|
|
|
+ setting the 'login' template.
|
|
|
+
|
|
|
+ The new pluralized 'oauth_templates' fact is a dict mapping the template
|
|
|
+ name to a filename.
|
|
|
+
|
|
|
+ Simplify the code after this by merging the old fact into the new.
|
|
|
+ """
|
|
|
+ if 'master' in facts and 'oauth_template' in facts['master']:
|
|
|
+ if 'oauth_templates' not in facts['master']:
|
|
|
+ facts['master']['oauth_templates'] = {"login": facts['master']['oauth_template']}
|
|
|
+ elif 'login' not in facts['master']['oauth_templates']:
|
|
|
+ facts['master']['oauth_templates']['login'] = facts['master']['oauth_template']
|
|
|
+ return facts
|
|
|
+
|
|
|
def format_url(use_ssl, hostname, port, path=''):
|
|
|
""" Format url based on ssl flag, hostname, port and path
|
|
|
|
|
@@ -1118,12 +1137,21 @@ def merge_facts(orig, new, additive_facts_to_overwrite, protected_facts_to_overw
|
|
|
"""
|
|
|
additive_facts = ['named_certificates']
|
|
|
protected_facts = ['ha', 'master_count']
|
|
|
+
|
|
|
+ # Facts we do not ever want to merge. These originate in inventory variables
|
|
|
+ # and typically contain JSON dicts. We don't ever want to trigger a merge
|
|
|
+ # here, just completely overwrite with the new if they are present there.
|
|
|
+ overwrite_facts = ['admission_plugin_config',
|
|
|
+ 'kube_admission_plugin_config']
|
|
|
+
|
|
|
facts = dict()
|
|
|
for key, value in orig.iteritems():
|
|
|
# Key exists in both old and new facts.
|
|
|
if key in new:
|
|
|
+ if key in overwrite_facts:
|
|
|
+ facts[key] = copy.deepcopy(new[key])
|
|
|
# Continue to recurse if old and new fact is a dictionary.
|
|
|
- if isinstance(value, dict) and isinstance(new[key], dict):
|
|
|
+ elif isinstance(value, dict) and isinstance(new[key], dict):
|
|
|
# Collect the subset of additive facts to overwrite if
|
|
|
# key matches. These will be passed to the subsequent
|
|
|
# merge_facts call.
|
|
@@ -1441,6 +1469,7 @@ class OpenShiftFacts(object):
|
|
|
local_facts,
|
|
|
additive_facts_to_overwrite,
|
|
|
protected_facts_to_overwrite)
|
|
|
+ facts = migrate_oauth_template_facts(facts)
|
|
|
facts['current_config'] = get_current_config(facts)
|
|
|
facts = set_url_facts_if_unset(facts)
|
|
|
facts = set_project_cfg_facts_if_unset(facts)
|