Lloyd, Dave
2011-06-24 15:06:02 UTC
I'm attempting to implement delegation with func 0.28. So far I've:
. Added Delegate = True to /etc/func/overlord.conf on the master overlord server
. Run func-build-map
Currently all hosts are directly pingable by the overlord. When I run something like func "*" ping I get this:
Traceback (most recent call last):
File "/usr/bin/func", line 28, in ?
ret = cli.parse(argv)
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 252, in parse
return self.subCommands[command].parse(args[1:])
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 233, in parse
ret = self.do(args)
File "/usr/lib/python2.4/site-packages/func/overlord/cmd_modules/ping.py", line 66, in do
results = overlord_obj.run("test", "ping", [])
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 791, in run
directhash.update(self.run_direct(module,method,args,nforks))
TypeError: iteration over non-sequence
I added some pretty printing to the args:
module:
'test'
method:
'ping'
args:
[]
nforks:
1
If I do something more complicated, here's what I get:
func "*" call command run "cat /etc/hosts"
module:
'jobs'
method:
'job_status'
args:
('1308912977.796803-minion',)
nforks:
1
Traceback (most recent call last):
File "/usr/bin/func", line 28, in ?
ret = cli.parse(argv)
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 252, in parse
return self.subCommands[command].parse(args[1:])
File "/usr/lib/python2.4/site-packages/func/overlord/cmd_modules/call.py", line 227, in parse
return base_command.BaseCommand.parse(self, argv)
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 233, in parse
ret = self.do(args)
File "/usr/lib/python2.4/site-packages/func/overlord/cmd_modules/call.py", line 348, in do
return self.overlord_obj.local.utils.async_poll(results, self.print_results)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 90, in __call__
return self.clientref.run(module,method,args,nforks=self.nforks)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 749, in run
return self.methods[method](*args)
File "/usr/lib/python2.4/site-packages/func/overlord/modules/utils.py", line 15, in async_poll
(return_code, async_results) = self.parent.job_status(job_id)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 605, in job_status
client_class_config=self.config)
File "/usr/lib/python2.4/site-packages/func/jobthing.py", line 287, in job_status
minion_result = client.jobs.job_status(minion_job)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 90, in __call__
return self.clientref.run(module,method,args,nforks=self.nforks)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 791, in run
directhash.update(self.run_direct(module,method,args,nforks))
TypeError: cannot convert dictionary update sequence element #0 to a sequence
If I turn off delegation, all works well.
Anyone have any ideas about what's going on and how I can further debug the issue?
--
Dave Lloyd
Product Support Engineer, Exegy, Inc.
349 Marshall Road, Suite 100
St. Louis, MO 63119 USA
+1.314.218.3600 extension 500
Support: +1.314.218.3555
dlloyd-***@public.gmane.org
This e-mail and any documents accompanying it may contain legally privileged and/or confidential information belonging to Exegy, Inc. Such information may be protected from disclosure by law. The information is intended for use by only the addressee. If you are not the intended recipient, you are hereby notified that any disclosure or use of the information is strictly prohibited. If you have received this e-mail in error, please immediately contact the sender by e-mail or phone regarding instructions for return or destruction and do not use or disclose the content to others.
. Added Delegate = True to /etc/func/overlord.conf on the master overlord server
. Run func-build-map
Currently all hosts are directly pingable by the overlord. When I run something like func "*" ping I get this:
Traceback (most recent call last):
File "/usr/bin/func", line 28, in ?
ret = cli.parse(argv)
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 252, in parse
return self.subCommands[command].parse(args[1:])
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 233, in parse
ret = self.do(args)
File "/usr/lib/python2.4/site-packages/func/overlord/cmd_modules/ping.py", line 66, in do
results = overlord_obj.run("test", "ping", [])
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 791, in run
directhash.update(self.run_direct(module,method,args,nforks))
TypeError: iteration over non-sequence
I added some pretty printing to the args:
module:
'test'
method:
'ping'
args:
[]
nforks:
1
If I do something more complicated, here's what I get:
func "*" call command run "cat /etc/hosts"
module:
'jobs'
method:
'job_status'
args:
('1308912977.796803-minion',)
nforks:
1
Traceback (most recent call last):
File "/usr/bin/func", line 28, in ?
ret = cli.parse(argv)
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 252, in parse
return self.subCommands[command].parse(args[1:])
File "/usr/lib/python2.4/site-packages/func/overlord/cmd_modules/call.py", line 227, in parse
return base_command.BaseCommand.parse(self, argv)
File "/usr/lib/python2.4/site-packages/func/overlord/command.py", line 233, in parse
ret = self.do(args)
File "/usr/lib/python2.4/site-packages/func/overlord/cmd_modules/call.py", line 348, in do
return self.overlord_obj.local.utils.async_poll(results, self.print_results)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 90, in __call__
return self.clientref.run(module,method,args,nforks=self.nforks)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 749, in run
return self.methods[method](*args)
File "/usr/lib/python2.4/site-packages/func/overlord/modules/utils.py", line 15, in async_poll
(return_code, async_results) = self.parent.job_status(job_id)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 605, in job_status
client_class_config=self.config)
File "/usr/lib/python2.4/site-packages/func/jobthing.py", line 287, in job_status
minion_result = client.jobs.job_status(minion_job)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 90, in __call__
return self.clientref.run(module,method,args,nforks=self.nforks)
File "/usr/lib/python2.4/site-packages/func/overlord/client.py", line 791, in run
directhash.update(self.run_direct(module,method,args,nforks))
TypeError: cannot convert dictionary update sequence element #0 to a sequence
If I turn off delegation, all works well.
Anyone have any ideas about what's going on and how I can further debug the issue?
--
Dave Lloyd
Product Support Engineer, Exegy, Inc.
349 Marshall Road, Suite 100
St. Louis, MO 63119 USA
+1.314.218.3600 extension 500
Support: +1.314.218.3555
dlloyd-***@public.gmane.org
This e-mail and any documents accompanying it may contain legally privileged and/or confidential information belonging to Exegy, Inc. Such information may be protected from disclosure by law. The information is intended for use by only the addressee. If you are not the intended recipient, you are hereby notified that any disclosure or use of the information is strictly prohibited. If you have received this e-mail in error, please immediately contact the sender by e-mail or phone regarding instructions for return or destruction and do not use or disclose the content to others.