Немного поработав над обаянием postgresql, и мне интересно, есть ли способ предоставить переопределения для значений по умолчанию «juju-way».
В своем обаянии, которое будет использовать сервисы, предоставляемые postgresql, я думал, что могу переопределить такие вещи, как имя базы данных или имя созданного super_user. Если я добавлю что-то вроде этого в реляционное соединение:
relation-set user=my_superuser
У меня возникнет проблема, из-за которой postgres / db-admin-Relations-Change может работать до того, как пользователь присоединится к работе (или завершит работу по крайней мере).
В конце концов, postgresql / db-admin-Relations-Changed запустится и получит мои данные, но если он запустится слишком быстро, я могу оказаться с двумя суперпользователями.
TL; DR: есть ли способ гарантировать, что конфигурация по умолчанию будет переопределена в службе на стороне предоставления?
Нет способа гарантировать, какой хук запускается первым в схеме выполнения хуков, но вы можете предсказать, какой ряд хуков будет выполняться первым. Когда добавляется отношение, сначала запускаются ловушки *-relation-joined
(в обеих службах, без явного победителя, который идет первым), а затем ловушки *-relation-changed
для каждой службы. Так как вы не можете гарантировать, какой из хуков who в данном состоянии отношений сработает первым, вы можете превзойти хук relation-changed
на брелоке Postgres, поместив свои команды набора отношений в хук relation-joined
в вашем брелке.
Это не сработает для каждого обаяния / отношения, так как это зависит от того, где выполняется тяжелая работа для каждого отношения. Например, шарм MySQL выполняет все инструкции по созданию базы данных во время ловушки relation-joined
, поэтому вышеприведенное фактически не поможет вам достичь чего-либо, поскольку у вас все еще есть условие гонки.
В идеале, если нет действительно веских причин использовать то, что обеспечивает шарм postgres, это, вероятно, лучший путь.