Enhance _match function in inventory with regex.

--limit ~regex could be used to filter hosts or group with a regex.
Tested on cli and ansible-playbook.
pull/1691/head
Gregory Duchatelet 13 years ago
parent 63c1b2e17e
commit 15400fffe6

@ -19,6 +19,7 @@
import fnmatch import fnmatch
import os import os
import re
import subprocess import subprocess
import ansible.constants as C import ansible.constants as C
@ -92,7 +93,10 @@ class Inventory(object):
raise errors.AnsibleError("YAML inventory support is deprecated in 0.6 and removed in 0.7, see the migration script in examples/scripts in the git checkout") raise errors.AnsibleError("YAML inventory support is deprecated in 0.6 and removed in 0.7, see the migration script in examples/scripts in the git checkout")
def _match(self, str, pattern_str): def _match(self, str, pattern_str):
return fnmatch.fnmatch(str, pattern_str) if pattern_str.startswith('~'):
return re.search(pattern_str[1:], str)
else:
return fnmatch.fnmatch(str, pattern_str)
def get_hosts(self, pattern="all"): def get_hosts(self, pattern="all"):
""" """
@ -164,7 +168,7 @@ class Inventory(object):
a tuple of (start, stop) or None a tuple of (start, stop) or None
""" """
if not "[" in pattern: if not "[" in pattern or pattern.startswith('~'):
return (pattern, None) return (pattern, None)
(first, rest) = pattern.split("[") (first, rest) = pattern.split("[")
rest = rest.replace("]","") rest = rest.replace("]","")

Loading…
Cancel
Save