mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-08-06 14:14:22 -07:00
Fix collision in random filter name by merging functionality
Merges the functionality of the original jinja2 random filter with the one we provide. Fixes #7113
This commit is contained in:
parent
d88ac5e24d
commit
a6068b09ac
2 changed files with 20 additions and 2 deletions
|
@ -241,6 +241,13 @@ Random Number Filter
|
||||||
|
|
||||||
.. versionadded:: 1.6
|
.. versionadded:: 1.6
|
||||||
|
|
||||||
|
This filter can be used similar to the default jinja2 random filter (returning a random item from a sequence of
|
||||||
|
items), but can also generate a random number based on a range.
|
||||||
|
|
||||||
|
To get a random item from a list::
|
||||||
|
|
||||||
|
{{ ['a','b','c']|random }} => 'c'
|
||||||
|
|
||||||
To get a random number from 0 to supplied end::
|
To get a random number from 0 to supplied end::
|
||||||
|
|
||||||
{{ 59 |random}} * * * * root /script/from/cron
|
{{ 59 |random}} * * * * root /script/from/cron
|
||||||
|
|
|
@ -181,9 +181,20 @@ def version_compare(value, version, operator='eq', strict=False):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
raise errors.AnsibleFilterError('Version comparison: %s' % e)
|
raise errors.AnsibleFilterError('Version comparison: %s' % e)
|
||||||
|
|
||||||
def rand(end, start=0, step=1):
|
def rand(end, start=None, step=None):
|
||||||
r = SystemRandom()
|
r = SystemRandom()
|
||||||
return r.randrange(start, end, step)
|
if isinstance(end, (int, long)):
|
||||||
|
if not start:
|
||||||
|
start = 0
|
||||||
|
if not step:
|
||||||
|
step = 1
|
||||||
|
return r.randrange(start, end, step)
|
||||||
|
elif hasattr(end, '__iter__'):
|
||||||
|
if start or step:
|
||||||
|
raise errors.AnsibleFilterError('start and step can only be used with integer values')
|
||||||
|
return r.choice(end)
|
||||||
|
else:
|
||||||
|
raise errors.AnsibleFilterError('random can only be used on sequences and integers')
|
||||||
|
|
||||||
class FilterModule(object):
|
class FilterModule(object):
|
||||||
''' Ansible core jinja2 filters '''
|
''' Ansible core jinja2 filters '''
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue