summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2014-08-14 12:13:40 -0500
committerJames Cammarata <jimi@sngx.net>2014-08-14 15:04:31 -0500
commit9f9e9759907ab4932dc975f146c6c1fb9c16895a (patch)
treead649f3810cd5063cf4868a9b8f4fc4093f6a343
parentd9fb94378c2845877fcac4392397a6606b44b832 (diff)
downloadansible-9f9e9759907ab4932dc975f146c6c1fb9c16895a.tar.gz
Fix host pattern matching and enhance error detection
Fixes #8614
-rw-r--r--lib/ansible/inventory/__init__.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/ansible/inventory/__init__.py b/lib/ansible/inventory/__init__.py
index 49724c3cb7..5e9226b425 100644
--- a/lib/ansible/inventory/__init__.py
+++ b/lib/ansible/inventory/__init__.py
@@ -150,17 +150,24 @@ class Inventory(object):
def _match(self, str, pattern_str):
- if pattern_str.startswith('~'):
- return re.search(pattern_str[1:], str)
- else:
- return fnmatch.fnmatch(str, pattern_str)
+ try:
+ if pattern_str.startswith('~'):
+ return re.search(pattern_str[1:], str)
+ else:
+ return fnmatch.fnmatch(str, pattern_str)
+ except Exception, e:
+ raise errors.AnsibleError('invalid host pattern: %s' % pattern_str)
def _match_list(self, items, item_attr, pattern_str):
results = []
- if not pattern_str.startswith('~'):
- pattern = re.compile(fnmatch.translate(pattern_str))
- else:
- pattern = re.compile(pattern_str[1:])
+ try:
+ if not pattern_str.startswith('~'):
+ pattern = re.compile('^' + fnmatch.translate(pattern_str))
+ else:
+ pattern = re.compile(pattern_str[1:])
+ except Exception, e:
+ raise errors.AnsibleError('invalid host pattern: %s' % pattern_str)
+
for item in items:
if pattern.search(getattr(item, item_attr)):
results.append(item)