shuffle filter: added optional 'seed' parameter

pull/19555/merge
Alexander Gubin 8 years ago committed by Brian Coca
parent f9385cb972
commit fce9f4f679

@ -185,6 +185,10 @@ To get a random list from an existing list::
{{ ['a','b','c']|shuffle }} => ['c','a','b']
{{ ['a','b','c']|shuffle }} => ['b','c','a']
As of Ansible version 2.3, it's also possible to shuffle a list idempotent. All you need is a seed.::
{{ ['a','b','c']|shuffle(seed=inventory_hostname) }} => ['b','a','c']
note that when used with a non 'listable' item it is a noop, otherwise it always returns a list

@ -217,10 +217,14 @@ def rand(environment, end, start=None, step=None, seed=None):
else:
raise errors.AnsibleFilterError('random can only be used on sequences and integers')
def randomize_list(mylist):
def randomize_list(mylist, seed=None):
try:
mylist = list(mylist)
shuffle(mylist)
if seed:
r = Random(seed)
r.shuffle(mylist)
else:
shuffle(mylist)
except:
pass
return mylist

Loading…
Cancel
Save