Merge pull request #6619 from sergevanginderachter/ansible_version_var

Introduce an ansible_version dict as runner variable
pull/7842/merge
Michael DeHaan 10 years ago
commit 48a0236ec6

@ -181,6 +181,8 @@ class PlayBook(object):
ansible.callbacks.load_callback_plugins() ansible.callbacks.load_callback_plugins()
ansible.callbacks.set_playbook(self.callbacks, self) ansible.callbacks.set_playbook(self.callbacks, self)
self._ansible_version = utils.version_info(gitinfo=True)
# ***************************************************** # *****************************************************
def _get_playbook_vars(self, play_ds, existing_vars): def _get_playbook_vars(self, play_ds, existing_vars):
@ -409,6 +411,7 @@ class PlayBook(object):
) )
runner.module_vars.update({'play_hosts': hosts}) runner.module_vars.update({'play_hosts': hosts})
runner.module_vars.update({'ansible_version': self._ansible_version})
if task.async_seconds == 0: if task.async_seconds == 0:
results = runner.run() results = runner.run()

@ -622,6 +622,9 @@ class Runner(object):
if self.inventory.src() is not None: if self.inventory.src() is not None:
inject['inventory_file'] = self.inventory.src() inject['inventory_file'] = self.inventory.src()
# could be already set by playbook code
inject.setdefault('ansible_version', utils.version_info(gitinfo=False))
# allow with_foo to work in playbooks... # allow with_foo to work in playbooks...
items = None items = None
items_plugin = self.module_vars.get('items_lookup_plugin', None) items_plugin = self.module_vars.get('items_lookup_plugin', None)

@ -804,6 +804,30 @@ def version(prog):
result = result + " {0}".format(gitinfo) result = result + " {0}".format(gitinfo)
return result return result
def version_info(gitinfo=False):
if gitinfo:
# expensive call, user with care
ansible_version_string = version('')
else:
ansible_version_string = __version__
ansible_version = ansible_version_string.split()[0]
ansible_versions = ansible_version.split('.')
for counter in range(len(ansible_versions)):
if ansible_versions[counter] == "":
ansible_versions[counter] = 0
try:
ansible_versions[counter] = int(ansible_versions[counter])
except:
pass
if len(ansible_versions) < 3:
for counter in range(len(ansible_versions), 3):
ansible_versions.append(0)
return {'string': ansible_version_string.strip(),
'full': ansible_version,
'major': ansible_versions[0],
'minor': ansible_versions[1],
'revision': ansible_versions[2]}
def getch(): def getch():
''' read in a single character ''' ''' read in a single character '''
fd = sys.stdin.fileno() fd = sys.stdin.fileno()

Loading…
Cancel
Save