On Tue, 28 Jun 2011 15:40:45 +0100, [email protected] wrote:
> Hi again,
> 
> We're trying to get Capistrano to talk to cobbler for automated  
> deployment based on puppet classes (Cobbler is the "source of truth"  
> on our network).
> 
> I'm basically trying to replicate:
> 
> import xmlrpclib
> remote = xmlrpclib.Server("http://cobbler/cobbler_api";)
> 
> mgmt_class = raw_input("Please choose a puppet class: ")
> 
> 
> for system_name in remote.find_system({'mgmt_classes':mgmt_class}):
>      fqdn =  
> remote.get_system_for_koan(system_name)['interfaces']['eth0']['hostname']
>      first_part = fqdn.split('.')[:1]
>      if first_part[0].split('-')[:1][0] != "ci":
>          print fqdn
> 
> however I can't seem to get the call to the API correct in Ruby (the  
> above python works fine).
> 
> I can get as far as the following before it fails:
> 
> require 'rubygems'
> require 'xmlrpc/client'
> server = XMLRPC::Client.new2("http://192.168.0.13/cobbler_api";)
> 
> servers = server.call2('find_system',"{'mgmt_classes':'default'}")

Wouldn't you want the second argument to be a native ruby dictionary?
Ruby should marshal it across in a way that python will understand
it. Currently it looks like it is being marshaled across as a string,
and that is what cobblerd is failing on.

> puts servers
> 
> 
> and then it errors with the following error in cobbler.log:
> 
> Tue Jun 28 15:39:17 2011 - INFO | REMOTE find_items(system);  
> criteria(mgmt_classes); sort(None); user(?)
> Tue Jun 28 15:39:17 2011 - INFO | find_items; ['system']
> Tue Jun 28 15:39:17 2011 - INFO | Exception occured: exceptions.TypeError
> Tue Jun 28 15:39:17 2011 - INFO | Exception value: find() argument  
> after ** must be a dictionary
> Tue Jun 28 15:39:17 2011 - INFO | Exception Info:
>    File "/usr/lib/python2.4/site-packages/cobbler/remote.py", line  
> 1759, in _dispatch
>      return method_handle(*params)
>     File "/usr/lib/python2.4/site-packages/cobbler/remote.py", line  
> 586, in find_system
>      return self.find_items("system",criteria,expand=expand)
>     File "/usr/lib/python2.4/site-packages/cobbler/remote.py", line  
> 573, in find_items
>      items = self.api.find_items(what,criteria=criteria)
>     File "/usr/lib/python2.4/site-packages/cobbler/api.py", line 426,  
> in find_items
>      res=items.find(return_list=True, no_errors=False, **criteria)
> 
> 
> Using the Cobbler Gem doesn't appear to work either (I can't find the  
> correct method to use to search based on "mgmt_classes").
> 
> Can anyone help?
> 
> Thanks,
> 
> Matt
> _______________________________________________
> cobbler mailing list
> [email protected]
> https://fedorahosted.org/mailman/listinfo/cobbler

-- 
Scott Henson
Red Hat CIS Operator
WVU Alum BSAE/BSME

Attachment: pgpGd24gLsX4E.pgp
Description: PGP signature

_______________________________________________
cobbler mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/cobbler

Reply via email to