diff --git a/setup b/setup index 6a5fb9b91dc..bf66940d730 100755 --- a/setup +++ b/setup @@ -598,73 +598,65 @@ def ansible_facts(): # =========================================== -# load config & template variables - -if len(sys.argv) == 1: - sys.exit(1) - - -argfile = sys.argv[1] -if not os.path.exists(argfile): - sys.exit(1) - -setup_options = open(argfile).read().strip() -try: - setup_options = json.loads(setup_options) -except: - list_options = shlex.split(setup_options) - setup_options = {} - for opt in list_options: - (k,v) = opt.split("=") - setup_options[k]=v - -syslog.openlog('ansible-%s' % os.path.basename(__file__)) -syslog.syslog(syslog.LOG_NOTICE, 'Invoked with %s' % setup_options) - -# Get some basic facts in case facter or ohai are not installed -for (k, v) in ansible_facts().items(): - setup_options["ansible_%s" % k] = v - -# if facter is installed, and we can use --json because -# ruby-json is ALSO installed, include facter data in the JSON - -if os.path.exists("/usr/bin/facter"): - cmd = subprocess.Popen("/usr/bin/facter --json", shell=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = cmd.communicate() - facter = True - try: - facter_ds = json.loads(out) - except: - facter = False - if facter: - for (k,v) in facter_ds.items(): - setup_options["facter_%s" % k] = v - -# ditto for ohai, but just top level string keys -# because it contains a lot of nested stuff we can't use for -# templating w/o making a nicer key for it (TODO) - -if os.path.exists("/usr/bin/ohai"): - cmd = subprocess.Popen("/usr/bin/ohai", shell=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = cmd.communicate() - ohai = True - try: - ohai_ds = json.loads(out) - except: - ohai = False - if ohai: - for (k,v) in ohai_ds.items(): - if type(v) == str or type(v) == unicode: - k2 = "ohai_%s" % k - setup_options[k2] = v - -setup_result = {} -setup_result['ansible_facts'] = setup_options - -# hack to keep --verbose from showing all the setup module results -setup_result['verbose_override'] = True - -print json.dumps(setup_result) +def run_setup(module): + + setup_options = {} + facts = ansible_facts() + + for (k, v) in facts.items(): + setup_options["ansible_%s" % k] = v + + # if facter is installed, and we can use --json because + # ruby-json is ALSO installed, include facter data in the JSON + + if os.path.exists("/usr/bin/facter"): + cmd = subprocess.Popen("/usr/bin/facter --json", shell=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = cmd.communicate() + facter = True + try: + facter_ds = json.loads(out) + except: + facter = False + if facter: + for (k,v) in facter_ds.items(): + setup_options["facter_%s" % k] = v + + # ditto for ohai, but just top level string keys + # because it contains a lot of nested stuff we can't use for + # templating w/o making a nicer key for it (TODO) + + if os.path.exists("/usr/bin/ohai"): + cmd = subprocess.Popen("/usr/bin/ohai", shell=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = cmd.communicate() + ohai = True + try: + ohai_ds = json.loads(out) + except: + ohai = False + if ohai: + for (k,v) in ohai_ds.items(): + if type(v) == str or type(v) == unicode: + k2 = "ohai_%s" % k + setup_options[k2] = v + + setup_result = {} + setup_result['ansible_facts'] = setup_options + + # hack to keep --verbose from showing all the setup module results + setup_result['verbose_override'] = True + + return setup_result + +def main(): + module = AnsibleModule( + argument_spec = dict() + ) + data = run_setup(module) + module.exit_json(**data) + +# this is magic, see lib/ansible/module_common.py +#<> +main()