Нужно ли моему обаянию и крюк с измененными отношениями, и с присоединенными отношениями?

Я вижу много оберегов с крючком relation-changed и relation-joined для их отношений. Иногда два хука - это даже один и тот же файл, один из которых является символической ссылкой на другой. Тем не менее, в juju docs говорится, что оба хука relation-joined и relation-changed запускаются при соединении отношения.

Должен ли мой шарм включать только один крючок или другой, а не оба?

3
задан 10 April 2013 в 02:11

1 ответ

Это зависит от варианта использования брелока. Вот хороший способ подумать о том, что делает каждый хук отношения и когда он выполняется:

Relationship Join

Это всегда первый хук, который должен быть выполнен, он также выполняется только один раз в течение срока службы этого конкретного отношения обслуживания. Теперь есть гарантия, какой из двух сервисных хуков будет срабатывать первым, но он всегда будет первым из набора хуков отношения, который будет срабатывать. Многим чарам это не нужно, но некоторым это очень важно. Если у вас есть какие-либо подробности настройки, которые вы должны выполнить в первую очередь, то именно здесь они и произойдут. Возьмем, к примеру, сервер базы данных: большинство прелестей сервера базы данных используют ловушку relation-joined для создания базы данных, пользователя, пароля и других деталей, которые будут ожидать другие службы. Он мог бы сделать это во время ловушки relation-changed, но это добавило бы больше сложности, чтобы убедиться, что он не воссоздает базу данных и пользователя снова и снова (подробнее о том, почему это произойдет за секунду) .

Соотношение изменено

Это запускается один раз сразу после успешного выполнения relation-joined. Затем каждый раз, когда данные передаются по проводам между службами, эта ловушка выполняется снова. Как таковой, он действительно должен быть идемпотентом, поскольку он, вероятно, будет выполнен более одного раза. Таким образом, большое количество заклинаний соберет ожидаемые relation-get данные и убедится, что они существуют, прежде чем продолжить. Что касается того, почему оба крючка relation-joined И relation-changed срабатывают один за другим в присоединенном событии, вероятно, позволит упростить использование и не потребует явного подключения relation-joined.

Относительно того, что должно включать в себя ваше очарование, это полностью зависит от вас и варианта использования вашего очарования. Не каждый шарм имеет relation-joined, на самом деле мало кто из них учитывает размер магазина. Он действительно используется только тогда, когда существует явная необходимость сделать что-то только один раз в течение жизненного цикла этого отношения. Просто чтобы нам было ясно, когда я имею в виду «только один раз», я говорю о выполнении juju add-relation. Если вы добавляете другое отношение к другому сервису, ловушка relation-joined и весь жизненный цикл начинается заново. (поскольку теоретически вы можете подключить несколько сервисов к одному отношению к одному сервису)

0
ответ дан 10 April 2013 в 02:11

Другие вопросы по тегам:

Похожие вопросы: