#!/usr/bin/env python

   ##########################################################
  #  Written 3/28/2011 and released under the GNU/GPLv2    ##
 # (c) Jeff Schroeder (jeffschroeder@computer.org)        # #
##########################################################  #
#                                                        #  #
# cobbler-puppet-ext - Used in place of cobbler 2.0.x's  #  #
#                      cobbler-ext-nodes but works with  #  #
#                      cobbler 2.1 and 2.0.x             #  #
#                                                        # #
##########################################################:

# To use with puppet, in the puppetmaster's /etc/puppet/puppet.conf:
#external_nodes = /path/to/cobbler-puppet-ext
#node_terminus = exec


import sys
import yaml
import xmlrpclib
try:
    import json
except ImportError:
    import simplejson as json

if len(sys.argv) != 2:
    raise SystemExit("usage: %s <hostname>" % sys.argv[0])
    

hostname = sys.argv[1]
cobbler_url = "http://localhost/cobbler_api"

server =  xmlrpclib.ServerProxy(cobbler_url)
try:
    info = server.get_system_as_rendered(hostname)
except xmlrpclib.Fault:
    # For cobbler 2.0.x compatibility
    info = server.get_system_for_koan(hostname)
mgmt_classes = yaml.dump(info.get("mgmt_classes", [])).rstrip()
parameters = yaml.dump(info.get("mgmt_parameters", [])).rstrip()

print """
classes: %s
parameters: %s
""".lstrip() % (mgmt_classes, parameters)
