summaryrefslogtreecommitdiffstats
path: root/roles/openshift_facts
diff options
context:
space:
mode:
authorBrenton Leanhardt <bleanhar@redhat.com>2016-04-13 10:36:58 -0400
committerBrenton Leanhardt <bleanhar@redhat.com>2016-04-14 14:39:26 -0400
commitc298560ff539d23f60a83876feba83c970283ce7 (patch)
treed723e6ea32ad9410d50163049242b3dc5e183c05 /roles/openshift_facts
parentee3f0205333840e18c4796e53b0f061fec666333 (diff)
downloadopenshift-c298560ff539d23f60a83876feba83c970283ce7.tar.gz
openshift-c298560ff539d23f60a83876feba83c970283ce7.tar.bz2
openshift-c298560ff539d23f60a83876feba83c970283ce7.tar.xz
openshift-c298560ff539d23f60a83876feba83c970283ce7.zip
The openshift_docker role must set the version facts for containerized installs
QE found that for fresh installs we were basing the docker version facts of the images that could be pulled prior to configuring /etc/sysconfig/docker. This is an edge case but something we need to fix.
Diffstat (limited to 'roles/openshift_facts')
-rwxr-xr-xroles/openshift_facts/library/openshift_facts.py38
1 files changed, 8 insertions, 30 deletions
diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py
index 6de2c1496..9218e12ae 100755
--- a/roles/openshift_facts/library/openshift_facts.py
+++ b/roles/openshift_facts/library/openshift_facts.py
@@ -1048,7 +1048,7 @@ def get_docker_version_info():
}
return result
-def get_openshift_version(facts, cli_image=None):
+def get_openshift_version(facts):
""" Get current version of openshift on the host
Args:
@@ -1070,32 +1070,14 @@ def get_openshift_version(facts, cli_image=None):
_, output, _ = module.run_command(['/usr/bin/openshift', 'version'])
version = parse_openshift_version(output)
+ # openshift_facts runs before openshift_docker_facts. However, it will be
+ # called again and set properly throughout the playbook run. This could be
+ # refactored to simply set the openshift.common.version in the
+ # openshift_docker_facts role but it would take reworking some assumptions
+ # on how get_openshift_version is called.
if 'is_containerized' in facts['common'] and safe_get_bool(facts['common']['is_containerized']):
- container = None
- if 'master' in facts:
- if 'cluster_method' in facts['master']:
- container = facts['common']['service_type'] + '-master-api'
- else:
- container = facts['common']['service_type'] + '-master'
- elif 'node' in facts:
- container = facts['common']['service_type'] + '-node'
-
- # Try to get the version fromthe available cli image _before_ resorting
- # to exec'ing in to the running container. This is to be more fault
- # tolerant in environments where the container is not running.
- if version is None and cli_image is not None:
- # Assume we haven't installed the environment yet and we need
- # to query the latest image, but only if docker is installed
- if 'docker' in facts and 'version' in facts['docker']:
- exit_code, output, _ = module.run_command(['docker', 'run', '--rm', cli_image, 'version'])
- version = parse_openshift_version(output)
-
- if version is None and container is not None:
- exit_code, output, _ = module.run_command(['docker', 'exec', container, 'openshift', 'version'])
- # if for some reason the container is installed but not running
- # we'll fall back to using docker run later in this method.
- if exit_code == 0:
- version = parse_openshift_version(output)
+ if 'docker' in facts and 'openshift_version' in facts['docker']:
+ version = facts['docker']['openshift_version']
return version
@@ -1359,10 +1341,6 @@ def set_container_facts_if_unset(facts):
if safe_get_bool(facts['common']['is_containerized']):
facts['common']['admin_binary'] = '/usr/local/bin/oadm'
facts['common']['client_binary'] = '/usr/local/bin/oc'
- openshift_version = get_openshift_version(facts, cli_image)
- if openshift_version is not None and openshift_version is not "":
- base_version = openshift_version.split('-')[0]
- facts['common']['image_tag'] = "v" + base_version
return facts