2013-05-03 7 views
6

Как сделать одно настраиваемое состояние зависимым от другого с реквизитом в файле sls?Как сделать одно настраиваемое состояние зависимым от другого?

Пример: Два custom states в _states/seuss.py модуле:

# seuss.py 
def green_eggs(): 
    return {'name': 'green_eggs', 'result': True, 'comment': '', 'changes': {}} 

def ham(): 
    return {'name': 'ham', 'result': True, 'comment': '', 'changes': {}} 

Я хочу ham быть зависимым от green_eggs:

# init.sls 

have_green_eggs: 
    seuss.green_eggs: 
    - require: 
    - user: seuss 

have_ham: 
    seuss.ham: 
    - require: 
    - ??? 

Как сделать ??? зависимость от успешного завершения green_eggs?

ответ

8

Вы хотели бы:

have_ham: 
    seuss.ham: 
    - require: 
     - seuss: have_green_eggs 

Однако в настоящее время определение два состояния seuss ресурса, а это значит, что либо seuss.ham или seuss.green_eggs называется have_green_eggs может выполнить это требование.

Если вы этого не хотите, вам нужно будет определить состояния в отдельных файлах (например, seuss_ham.exists и seuss_green_eggs.exists).

+1

Продолжая то, что сказал Даниил, различные состояния в вашем пользовательском модуле состояния должны быть взаимоисключающими. Например, для службы «nginx» вы не настроили бы одно состояние, которое было «nginx: - service.running», а другое - «nginx: - service.dead». Таким образом, ваш пользовательский модуль состояния должен содержать только состояния, которые не будут использоваться одновременно. – akoumjian