Hi everyone,
What's the equivalent of fabric.tasks.execute in the new API? One
convenience of that function is, you can create a task assuming that you're
working on only one host at a time and then seamlessly execute it across a
list of hosts. For ex,
from fabric.api import runfrom fabric.tasks import execute
def do_something():
uptime_result = run("uptime").stdout
# Do more with uptime_result later in code. if __name__ == "__main__":
execute(do_something, hosts=["username@host"])
When working on multiple hosts, I know we've a
fabric.group.ThreadingGroup which
has a run method
<http://docs.fabfile.org/en/2.0/api/group.html?highlight=ThreadingGroup#fabric.group.Group.run>
but this forces us handle fabric.group.GroupResult which means handling
outputs of all hosts in one place which is added complexity. For ex,
try:
results = connections_array.run('pidof foobar', hide="both")except
GroupException as e:
results = e.result
pids = []for _, result in results.items():
# do what I want. capture outputs of various connections in above array.
# Reusing of previous outputs in series of operations gets hard. # Do
second operations by capturing previous output.
Any suggestions on how to make the new API friendly to use when using
multiple hosts?
--
Cheers,
Abhijeet Rastogi (shadyabhi)
_______________________________________________
Fab-user mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/fab-user