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

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

Пример. Два настраиваемых состояний в модуле _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?


person Jeff Bauer    schedule 03.05.2013    source источник


Ответы (1)


Вы хотели бы:

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).

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