def chef_query(query, api=None, hostname_attr=DEFAULT_HOSTNAME_ATTR, environment=_default_environment):
"""A decorator to use an arbitrary Chef search query to find nodes to execute on.
This is used like Fabric's ``roles()`` decorator, but accepts a Chef search query.
Example::
from chef.fabric import chef_query
@chef_query('roles:web AND tags:active')
@task
def deploy():
pass
.. versionadded:: 0.2.1
"""
api = _api(api)
if api.version_parsed < Environment.api_version_parsed and environment is not None:
raise ChefAPIVersionError('Environment support requires Chef API 0.10 or greater')
rolename = 'query_'+query
env.setdefault('roledefs', {})[rolename] = Roledef(query, api, hostname_attr, environment)
return lambda fn: roles(rolename)(fn)
评论列表
文章目录