added new 'shuffle' filter

This commit is contained in:
Brian Coca 2014-10-05 20:53:06 -04:00
parent 8cecb0690f
commit 3534bdf953
2 changed files with 19 additions and 2 deletions

View file

@ -297,6 +297,19 @@ Get a random number from 1 to 100 but in steps of 10::
{{ 100 |random(start=1, step=10) }} => 51
Shuffle Filter
--------------
.. versionadded:: 1.8
This filter will randomize an existing list, giving a differnt order every invocation.
To get a random list from an existing list::
{{ ['a','b','c']|shuffle }} => ['c','a','b']
{{ ['a','b','c']|shuffle }} => ['b','c','a']
.. _other_useful_filters:
Other Useful Filters

View file

@ -28,7 +28,7 @@ import operator as py_operator
from ansible import errors
from ansible.utils import md5s
from distutils.version import LooseVersion, StrictVersion
from random import SystemRandom
from random import SystemRandom, shuffle
from jinja2.filters import environmentfilter
@ -235,6 +235,9 @@ def rand(environment, end, start=None, step=None):
else:
raise errors.AnsibleFilterError('random can only be used on sequences and integers')
def randomize_list(mylist):
shuffle(mylist)
return mylist
class FilterModule(object):
''' Ansible core jinja2 filters '''
@ -305,6 +308,7 @@ class FilterModule(object):
# version comparison
'version_compare': version_compare,
# random numbers
# random stuff
'random': rand,
'shuffle': randomize_list,
}