Reading the puppet documentation on external nodes (http://reductivelabs.com/trac/puppet/wiki/ExternalNodes), it says the external node script should return output in YAML format. However, the cobbler-ext-nodes script is just returning what is returned by the web url (http://cobbler/cblr/svc/op/puppet/hostname/foo):
# /usr/bin/cobbler-ext-nodes system.mydomain.com classes: [test1, test2] parameters: {from_cobbler: 1, tree: 'http://@@http_server@@/cblr/links/rhel5.1-xen-x86_64%27%7D
So, is the external node script broken, or is cobblerd not returning the correct output?
On 07/23/2009 10:44 AM, James Cammarata wrote:
Reading the puppet documentation on external nodes (http://reductivelabs.com/trac/puppet/wiki/ExternalNodes), it says the external node script should return output in YAML format. However, the cobbler-ext-nodes script is just returning what is returned by the web url (http://cobbler/cblr/svc/op/puppet/hostname/foo):
# /usr/bin/cobbler-ext-nodes system.mydomain.com classes: [test1, test2] parameters: {from_cobbler: 1, tree: 'http://@@http_server@@/cblr/links/rhel5.1-xen-x86_64%27%7D
So, is the external node script broken, or is cobblerd not returning the correct output?
That's valid YAML. YAML can sometimes go into "flow-layout" mode, and that's legal. Here's a quick test program:
import yaml
classes = [1,2] params = [3,4]
newdata = { "classes" : classes, "parameters" : params }
str = yaml.dump(newdata) print str print yaml.load(str)
=================================== [mdehaan@mdehaan cobbler]$ python /tmp/test.py classes: [1, 2] parameters: [3, 4]
{'classes': [1, 2], 'parameters': [3, 4]} ===================================
Is Puppet choking on this? Our YAML library has options to prevent this if needed.
--Michael
On Thu, 23 Jul 2009 10:54:12 -0400, Michael DeHaan mdehaan@redhat.com wrote:
On 07/23/2009 10:44 AM, James Cammarata wrote:
Reading the puppet documentation on external nodes (http://reductivelabs.com/trac/puppet/wiki/ExternalNodes), it says the external node script should return output in YAML format. However, the cobbler-ext-nodes script is just returning what is returned by the web url (http://cobbler/cblr/svc/op/puppet/hostname/foo):
# /usr/bin/cobbler-ext-nodes system.mydomain.com classes: [test1, test2] parameters: {from_cobbler: 1, tree: 'http://@@http_server@@/cblr/links/rhel5.1-xen-x86_64%27%7D
So, is the external node script broken, or is cobblerd not returning the correct output?
That's valid YAML. YAML can sometimes go into "flow-layout" mode, and that's legal. Here's a quick test program:
import yaml
classes = [1,2] params = [3,4]
newdata = { "classes" : classes, "parameters" : params }
str = yaml.dump(newdata) print str print yaml.load(str)
=================================== [mdehaan@mdehaan cobbler]$ python /tmp/test.py classes: [1, 2] parameters: [3, 4]
{'classes': [1, 2], 'parameters': [3, 4]}
Is Puppet choking on this? Our YAML library has options to prevent this if needed.
--Michael
I haven't really tested it out yet, just curious since the external nodes script isn't doing anything with the YAML module, just this:
url = "http://%s/cblr/svc/op/puppet/hostname/%s" % (server, hostname) print urlgrabber.urlread(url)
It does look like cobblerd is doing a yaml conversion though (from services.py puppet()):
return yaml.dump(newdata)
So I guess all is well :)
cobbler@lists.fedorahosted.org