diff options
Diffstat (limited to 'roles/openshift_facts/library')
-rwxr-xr-x | roles/openshift_facts/library/openshift_facts.py | 104 |
1 files changed, 29 insertions, 75 deletions
diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index beef77896..844d77255 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -915,6 +915,7 @@ def set_version_facts_if_unset(facts): version_gte_3_4_or_1_4 = version >= LooseVersion('1.4') version_gte_3_5_or_1_5 = version >= LooseVersion('1.5') version_gte_3_6 = version >= LooseVersion('3.6') + version_gte_3_7 = version >= LooseVersion('3.7') else: version_gte_3_1_or_1_1 = version >= LooseVersion('3.0.2.905') version_gte_3_1_1_or_1_1_1 = version >= LooseVersion('3.1.1') @@ -923,6 +924,7 @@ def set_version_facts_if_unset(facts): version_gte_3_4_or_1_4 = version >= LooseVersion('3.4') version_gte_3_5_or_1_5 = version >= LooseVersion('3.5') version_gte_3_6 = version >= LooseVersion('3.6') + version_gte_3_7 = version >= LooseVersion('3.7') else: # 'Latest' version is set to True, 'Next' versions set to False version_gte_3_1_or_1_1 = True @@ -932,6 +934,7 @@ def set_version_facts_if_unset(facts): version_gte_3_4_or_1_4 = True version_gte_3_5_or_1_5 = True version_gte_3_6 = True + version_gte_3_7 = False facts['common']['version_gte_3_1_or_1_1'] = version_gte_3_1_or_1_1 facts['common']['version_gte_3_1_1_or_1_1_1'] = version_gte_3_1_1_or_1_1_1 facts['common']['version_gte_3_2_or_1_2'] = version_gte_3_2_or_1_2 @@ -939,8 +942,11 @@ def set_version_facts_if_unset(facts): facts['common']['version_gte_3_4_or_1_4'] = version_gte_3_4_or_1_4 facts['common']['version_gte_3_5_or_1_5'] = version_gte_3_5_or_1_5 facts['common']['version_gte_3_6'] = version_gte_3_6 + facts['common']['version_gte_3_7'] = version_gte_3_7 - if version_gte_3_6: + if version_gte_3_7: + examples_content_version = 'v3.7' + elif version_gte_3_6: examples_content_version = 'v3.6' elif version_gte_3_5_or_1_5: examples_content_version = 'v1.5' @@ -1642,75 +1648,27 @@ 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'] = [] + + # See https://bugzilla.redhat.com/show_bug.cgi?id=1466783 + # masters behind a proxy need to connect to etcd via IP + if 'no_proxy_etcd_host_ips' in common: + if isinstance(common['no_proxy_etcd_host_ips'], string_types): + common['no_proxy'].extend(common['no_proxy_etcd_host_ips'].split(',')) + + 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 @@ -2270,14 +2228,10 @@ class OpenShiftFacts(object): product_version = self.system_facts['ansible_product_version'] virt_type = self.system_facts['ansible_virtualization_type'] virt_role = self.system_facts['ansible_virtualization_role'] + bios_vendor = self.system_facts['ansible_system_vendor'] provider = None metadata = None - # TODO: this is not exposed through module_utils/facts.py in ansible, - # need to create PR for ansible to expose it - bios_vendor = get_file_content( # noqa: F405 - '/sys/devices/virtual/dmi/id/bios_vendor' - ) if bios_vendor == 'Google': provider = 'gce' metadata_url = ('http://metadata.google.internal/' |