mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #6619 from sergevanginderachter/ansible_version_var
Introduce an ansible_version dict as runner variable
This commit is contained in:
commit
48a0236ec6
3 changed files with 30 additions and 0 deletions
|
@ -181,6 +181,8 @@ class PlayBook(object):
|
|||
ansible.callbacks.load_callback_plugins()
|
||||
ansible.callbacks.set_playbook(self.callbacks, self)
|
||||
|
||||
self._ansible_version = utils.version_info(gitinfo=True)
|
||||
|
||||
# *****************************************************
|
||||
|
||||
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({'ansible_version': self._ansible_version})
|
||||
|
||||
if task.async_seconds == 0:
|
||||
results = runner.run()
|
||||
|
|
|
@ -622,6 +622,9 @@ class Runner(object):
|
|||
if self.inventory.src() is not None:
|
||||
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...
|
||||
items = None
|
||||
items_plugin = self.module_vars.get('items_lookup_plugin', None)
|
||||
|
|
|
@ -804,6 +804,30 @@ def version(prog):
|
|||
result = result + " {0}".format(gitinfo)
|
||||
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():
|
||||
''' read in a single character '''
|
||||
fd = sys.stdin.fileno()
|
||||
|
|
Loading…
Reference in a new issue