远程服务器正在通过ssh密钥禁用身份验证,因此当我部署新版本时,我需要输入我的密码(某些LDAP身份验证)。
但是,我的fabfile
脚本将被许多开发人员使用。所以,每个人都必须以某种方式为脚本提供他的用户名。
我想到了这个:
def authenticate(login=None):
if login is None:
abort('You must provide your username')
...
@task
def deploy(username=None):
authenticate(username)
...
@task
def init(username=None):
authenticate(username)
...
@task
def rollback(username=None):
authenticate(username)
...
@task
def restart_services(username=None, service=None):
authenticate(username)
...
这很好但不是DRY
。
脚本用户authenticate
是否有干净的方法?
答案 0 :(得分:2)
如果您的问题是DRY,您可以使用装饰器
def authenticate(f):
@functools.wraps(f)
def wrapper(login, *args, **kwargs):
if login is None:
abort('You must provide your username')
return f(*args, **kwargs)
return wrapper
然后
@task
@authenticate
def deploy(whatever):
....