Add fileglob Jinja2 filter. Fixes #3563

pull/4306/head
Matt Martz 11 years ago
parent ef28d62846
commit 535ce97067

@ -21,6 +21,7 @@ import os.path
import yaml import yaml
import types import types
import pipes import pipes
import glob
from ansible import errors from ansible import errors
from ansible.utils import md5s from ansible.utils import md5s
@ -74,6 +75,10 @@ def quote(a):
''' return its argument quoted for shell usage ''' ''' return its argument quoted for shell usage '''
return pipes.quote(a) return pipes.quote(a)
def fileglob(pathname):
''' return list of matched files for glob '''
return glob.glob(pathname)
class FilterModule(object): class FilterModule(object):
''' Ansible core jinja2 filters ''' ''' Ansible core jinja2 filters '''
@ -115,5 +120,8 @@ class FilterModule(object):
# md5 hex digest of string # md5 hex digest of string
'md5': md5s, 'md5': md5s,
# file glob
'fileglob': fileglob,
} }

@ -2,6 +2,7 @@
Test bundled filters Test bundled filters
''' '''
import os.path
import unittest, tempfile, shutil import unittest, tempfile, shutil
from ansible import playbook, inventory, callbacks from ansible import playbook, inventory, callbacks
import ansible.runner.filter_plugins.core import ansible.runner.filter_plugins.core
@ -83,6 +84,11 @@ class TestFilters(unittest.TestCase):
a = ansible.runner.filter_plugins.core.quote('ls | wc -l') a = ansible.runner.filter_plugins.core.quote('ls | wc -l')
assert a == "'ls | wc -l'" assert a == "'ls | wc -l'"
def test_fileglob(self):
pathname = os.path.join(os.path.dirname(__file__), '*')
a = ansible.runner.filter_plugins.core.fileglob(pathname)
assert __file__ in a
#def test_filters(self): #def test_filters(self):
# this test is pretty low level using a playbook, hence I am disabling it for now -- MPD. # this test is pretty low level using a playbook, hence I am disabling it for now -- MPD.

Loading…
Cancel
Save