Introduce an ansible_version dict as runner variable
Given the version: "1.6 (ansible_version_var14499e8bf3
) last updated 2014/03/21 17:07:50 (GMT +200)" We get the special variable: "ansible_version": { "full": "1.6", "major": 1, "minor": 6, "revision": 0, "string": "1.6 (ansible_version_var14499e8bf3
) last updated 2014/03/21 17:07:50 (GMT +200)" } modified: lib/ansible/playbook/__init__.py modified: lib/ansible/runner/__init__.py modified: lib/ansible/utils/__init__.py
This commit is contained in:
parent
db90f308ca
commit
d240e2b9fb
3 changed files with 30 additions and 0 deletions
|
@ -177,6 +177,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 _load_playbook_from_file(self, path, vars={}):
|
def _load_playbook_from_file(self, path, vars={}):
|
||||||
|
@ -371,6 +373,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()
|
||||||
|
|
|
@ -578,6 +578,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)
|
||||||
|
|
|
@ -647,6 +647,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…
Add table
Reference in a new issue