Import cleanup, plus have /bin/ansible remind you if no hosts were matched by a pattern (for instance, assume

there was a typo in the pattern)
This commit is contained in:
Michael DeHaan 2012-03-18 17:53:58 -04:00
parent fde7de80df
commit 9c5ec886a6
4 changed files with 20 additions and 10 deletions

View file

@ -32,7 +32,7 @@ pep8:
pep8 -r --ignore=E501,E221,W291,W391,E302,E251,E203,W293,E231,E303,E201,E225 lib/ bin/ pep8 -r --ignore=E501,E221,W291,W391,E302,E251,E203,W293,E231,E303,E201,E225 lib/ bin/
pyflakes: pyflakes:
pyflakes lib/ansible/*.py pyflakes lib/ansible/*.py bin/*
clean: clean:
@echo "Cleaning up distutils stuff" @echo "Cleaning up distutils stuff"

View file

@ -181,6 +181,9 @@ class Cli(object):
if utils.has_dark_hosts(results): if utils.has_dark_hosts(results):
buf += utils.dark_hosts_msg(results) buf += utils.dark_hosts_msg(results)
if not utils.has_hosts(results):
print "ERROR: no hosts matched"
print buf print buf
######################################################## ########################################################

View file

@ -22,8 +22,6 @@ import fnmatch
import multiprocessing import multiprocessing
import signal import signal
import os import os
import ansible.constants as C
import ansible.connection
import Queue import Queue
import random import random
import jinja2 import jinja2
@ -31,17 +29,14 @@ import traceback
import tempfile import tempfile
import subprocess import subprocess
import ansible.constants as C
import ansible.connection
from ansible import utils from ansible import utils
from ansible import errors from ansible import errors
# should be True except in debug # should be True except in debug
CLEANUP_FILES = True CLEANUP_FILES = True
try:
import json
except ImportError:
import simplejson as json
################################################ ################################################
def _executor_hook(job_queue, result_queue): def _executor_hook(job_queue, result_queue):
@ -170,7 +165,7 @@ class Runner(object):
cmd = subprocess.Popen([host_list], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False) cmd = subprocess.Popen([host_list], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False)
out, err = cmd.communicate() out, err = cmd.communicate()
try: try:
groups = json.loads(out) groups = utils.json_loads(out)
except: except:
raise errors.AnsibleError("invalid JSON response from script: %s" % host_list) raise errors.AnsibleError("invalid JSON response from script: %s" % host_list)
for (groupname, hostlist) in groups.iteritems(): for (groupname, hostlist) in groups.iteritems():
@ -309,7 +304,7 @@ class Runner(object):
out, err = cmd.communicate() out, err = cmd.communicate()
inject2 = {} inject2 = {}
try: try:
inject2 = json.loads(out) inject2 = utils.json_loads(out)
except: except:
raise errors.AnsibleError("%s returned invalid result when called with hostname %s" % ( raise errors.AnsibleError("%s returned invalid result when called with hostname %s" % (
Runner._external_variable_script, Runner._external_variable_script,

View file

@ -149,6 +149,14 @@ def has_dark_hosts(results):
''' are there any uncontactable hosts? ''' ''' are there any uncontactable hosts? '''
return len(results['dark'].keys()) > 0 return len(results['dark'].keys()) > 0
def has_contacted_hosts(results):
''' are there any contacted hosts? '''
return len(results['contacted'].keys()) > 0
def has_hosts(results):
''' did ansible run against any hosts at all? '''
return has_contacted_hosts(results) or has_dark_hosts(results)
def contacted_hosts(results): def contacted_hosts(results):
''' what are the contactable hosts? ''' ''' what are the contactable hosts? '''
return sorted(results['contacted']) return sorted(results['contacted'])
@ -186,7 +194,11 @@ def async_poll_status(jid, host, clock, result):
else: else:
return "<job %s> polling on %s, %s remaining" % (jid, host, clock) return "<job %s> polling on %s, %s remaining" % (jid, host, clock)
def json_loads(data):
return json.loads(data)
def parse_json(data): def parse_json(data):
''' this version for module return data only '''
try: try:
return json.loads(data) return json.loads(data)
except: except: