Integración paver fabric
Update: Parece que se viene esto como parte de paver 1.1
Hice un pequeño hack y ahora puedo usar el API de fabric cuando escribo tasks de paver y que la tarea se ejecute una vez para cada host.
Para hacer eso, hice un decorator, que se llama multihost y es así:
from fabric import state, network
def multi_host(f):
"""\
Run the decorated function for each host in options.get("host_strings").
Will use the private key set in options.pk if set.
"""
def decoratee(options):
for host_string in options.get("host_strings"):
network.interpret_host_string(host_string)
pk = options.get("pk", None)
state.env.key_filename = [pk] if pk else None
f(options)
decoratee.func_name = f.func_name
return cmdopts((
("pk=", None, "Private key file"),
))(decoratee)
El uso es así:
from paver.easy import task, needs
from fabric import api
@task
def find_hosts(options):
options["host_strings"] = ["host1", "user@host2", "user2@host3:2222"]
@task
@needs("find_hosts")
@multi_host
def remote_hello_world(options):
api.run("echo hello world")
Happy hacking,
Aureliano.
No hay comentarios.:
Publicar un comentario