summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Bielawa <tbielawa@redhat.com>2017-07-17 15:51:35 -0400
committerTim Bielawa <tbielawa@redhat.com>2017-07-19 13:26:26 -0400
commite0a9899d4bbc3073c5c05d4017183876534281e9 (patch)
tree6ac806931401f96e089465e89a845e31c58d8b0a
parentf1711875170934936895fe24ac1f7ab721608c5a (diff)
downloadopenshift-e0a9899d4bbc3073c5c05d4017183876534281e9.tar.gz
openshift-e0a9899d4bbc3073c5c05d4017183876534281e9.tar.bz2
openshift-e0a9899d4bbc3073c5c05d4017183876534281e9.tar.xz
openshift-e0a9899d4bbc3073c5c05d4017183876534281e9.zip
Hopefully finally fix the no_proxy settings
Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1467776 Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466783 Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1472244 Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1468424 Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1470165 Some of there were 'fixed' before but that commit was merged too soon. This actually fixes the needful.
-rwxr-xr-xroles/openshift_facts/library/openshift_facts.py83
1 files changed, 14 insertions, 69 deletions
diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py
index beef77896..4712ca3a8 100755
--- a/roles/openshift_facts/library/openshift_facts.py
+++ b/roles/openshift_facts/library/openshift_facts.py
@@ -1642,75 +1642,20 @@ def set_proxy_facts(facts):
"""
if 'common' in facts:
common = facts['common']
-
- ######################################################################
- # We can exit early now if we don't need to set any proxy facts
- proxy_params = ['no_proxy', 'https_proxy', 'http_proxy']
- # If any of the known Proxy Params (pp) are defined
- proxy_settings_defined = any(
- [True for pp in proxy_params if pp in common]
- )
-
- if not proxy_settings_defined:
- common['no_proxy'] = ''
- return facts
-
- # As of 3.6 if ANY of the proxy parameters are defined in the
- # inventory then we MUST add certain domains to the NO_PROXY
- # environment variable.
-
- ######################################################################
-
- # Spot to build up some data we may insert later
- raw_no_proxy_list = []
-
- # Automatic 3.6 NO_PROXY additions if a proxy is in use
- svc_cluster_name = ['.svc', '.' + common['dns_domain'], common['hostname']]
-
- # auto_hosts: Added to NO_PROXY list if any proxy params are
- # set in the inventory. This a list of the FQDNs of all
- # cluster hosts:
- auto_hosts = common['no_proxy_internal_hostnames'].split(',')
-
- # custom_no_proxy_hosts: If you define openshift_no_proxy in
- # inventory we automatically add those hosts to the list:
- if 'no_proxy' in common:
- custom_no_proxy_hosts = common['no_proxy'].split(',')
- else:
- custom_no_proxy_hosts = []
-
- # This should exist no matter what. Defaults to true.
- if 'generate_no_proxy_hosts' in common:
- generate_no_proxy_hosts = safe_get_bool(common['generate_no_proxy_hosts'])
-
- ######################################################################
-
- # You set a proxy var. Now we are obliged to add some things
- raw_no_proxy_list = svc_cluster_name + custom_no_proxy_hosts
-
- # You did not turn openshift_generate_no_proxy_hosts to False
- if generate_no_proxy_hosts:
- raw_no_proxy_list.extend(auto_hosts)
-
- ######################################################################
-
- # Was anything actually added? There should be something by now.
- processed_no_proxy_list = sort_unique(raw_no_proxy_list)
- if processed_no_proxy_list != list():
- common['no_proxy'] = ','.join(processed_no_proxy_list)
- else:
- # Somehow we got an empty list. This should have been
- # skipped by now in the 'return' earlier. If
- # common['no_proxy'] is DEFINED it will cause unexpected
- # behavior and bad templating. Ensure it does not
- # exist. Even an empty list or string will have undesired
- # side-effects.
- del common['no_proxy']
-
- ######################################################################
- # In case you were wondering, because 'common' is a reference
- # to the object facts['common'], there is no need to re-assign
- # it.
+ if 'http_proxy' in common or 'https_proxy' in common or 'no_proxy' in common:
+ if 'no_proxy' in common and isinstance(common['no_proxy'], string_types):
+ common['no_proxy'] = common['no_proxy'].split(",")
+ elif 'no_proxy' not in common:
+ common['no_proxy'] = []
+ if 'generate_no_proxy_hosts' in common and safe_get_bool(common['generate_no_proxy_hosts']):
+ if 'no_proxy_internal_hostnames' in common:
+ common['no_proxy'].extend(common['no_proxy_internal_hostnames'].split(','))
+ # We always add local dns domain and ourselves no matter what
+ common['no_proxy'].append('.' + common['dns_domain'])
+ common['no_proxy'].append('.svc')
+ common['no_proxy'].append(common['hostname'])
+ common['no_proxy'] = ','.join(sort_unique(common['no_proxy']))
+ facts['common'] = common
return facts