Decorators

Convenience decorators for use in fabfiles.

fabric.decorators.hosts(*host_list)

Decorator defining which host or hosts to execute the wrapped function on.

For example, the following will ensure that, barring an override on the command line, my_func will be run on host1, host2 and host3, and with specific users on host1 and host3:

@hosts('[email protected]', 'host2', '[email protected]')
def my_func():
    pass

hosts may be invoked with either an argument list (@hosts('host1'), @hosts('host1', 'host2')) or a single, iterable argument (@hosts(['host1', 'host2'])).

Note that this decorator actually just sets the function’s .hosts attribute, which is then read prior to executing the function.

Changed in version 0.9.2: Allow a single, iterable argument (@hosts(iterable)) to be used instead of requiring @hosts(*iterable).

fabric.decorators.roles(*role_list)

Decorator defining a list of role names, used to look up host lists.

A role is simply defined as a key in env whose value is a list of one or more host connection strings. For example, the following will ensure that, barring an override on the command line, my_func will be executed against the hosts listed in the webserver and dbserver roles:

env.roledefs.update({
    'webserver': ['www1', 'www2'],
    'dbserver': ['db1']
})

@roles('webserver', 'dbserver')
def my_func():
    pass

As with hosts, roles may be invoked with either an argument list or a single, iterable argument. Similarly, this decorator uses the same mechanism as hosts and simply sets <function>.roles.

Changed in version 0.9.2: Allow a single, iterable argument to be used (same as hosts).

fabric.decorators.runs_once(func)

Decorator preventing wrapped function from running more than once.

By keeping internal state, this decorator allows you to mark a function such that it will only run once per Python interpreter session, which in typical use means “once per invocation of the fab program”.

Any function wrapped with this decorator will silently fail to execute the 2nd, 3rd, ..., Nth time it is called, and will return the value of the original run.

Previous topic

Context Managers

Next topic

Network

This Page