2016-06-30 4 views
0

Удаленный сервер отключает аутентификацию с помощью ключей ssh, поэтому, когда я развертываю новую версию, мне нужно ввести мой пароль (некоторые проверки подлинности LDAP).Требования к информации о файле fabfile

Тем не менее, мой 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 пользователя сценария?

ответ

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): 
    .... 
Смежные вопросы