Será que o meu charme precisa de um gancho de relação-mudança e de união de relações?

3

Eu vejo muitos charms com um gancho relation-changed e relation-joined em suas relações. Às vezes os dois ganchos são mesmo o mesmo arquivo, com um sendo um link simbólico para o outro. No entanto, os juju docs dizem que os relation-joined e relation-changed ganchos são executados quando uma relação é unida.

O meu charme deve incluir apenas um gancho ou outro, não ambos?

    
por mars 10.04.2013 / 00:11

1 resposta

5

Isso depende do caso de uso do encanto. Aqui está uma boa maneira de pensar no que cada hook de relação faz e quando é executado:

relation-joined

Este é sempre o primeiro gancho a ser executado, também é executado apenas uma vez durante a vida útil desse serviço específico para a relação de serviço. Agora há garantia de qual dos dois serviços o gancho irá disparar primeiro, mas será sempre o primeiro do conjunto de ganchos de conexão a disparar. Muitos charms não precisam disso, mas alguns encantos são muito importantes. Se você tem detalhes de configuração, você precisa executar primeiro, então é onde eles vão acontecer. Tome um servidor de banco de dados, por exemplo: A maioria dos servidores de banco de dados usa o gancho relation-joined para criar o banco de dados, usuário, senha e outros detalhes que o outro serviço estará aguardando. Isso poderia fazer isso durante o relation-changed hook, mas adicionaria mais complexidade para garantir que ele não recriaria o banco de dados e o usuário repetidas vezes (mais sobre por que isso aconteceria em um segundo ).

relação-alterada

Isso é executado uma vez logo após a execução bem-sucedida de relation-joined . Então, toda vez que os dados são enviados na conexão entre os serviços, este gancho é executado novamente. Como tal, ele realmente precisa ser idempotente, pois provavelmente será executado mais de uma vez. Assim, muitos charms coletarão os dados relation-get esperados e verificarão se eles existem antes de continuar. Quanto ao motivo pelo qual os dois ganchos relation-joined AND relation-changed disparam um após o outro no evento unido provavelmente permitirão a facilidade de uso e não exigirão explicitamente um relation-joined hook.

Quanto ao que o seu charme deve incluir, depende inteiramente de você e do caso de uso do seu charme. Nem todo encanto tem relation-joined , na verdade, poucos consideram o tamanho da loja. É realmente usado apenas quando há uma necessidade explícita de fazer algo apenas uma vez durante o ciclo de vida dessa relação. Só então estamos claros, quando quero dizer "apenas uma vez", estou falando sobre a execução do juju add-relation . Se você adicionar outra relação a outro serviço, o relation-joined hook e todo o ciclo de vida recomeçará. (desde que você pode, teoricamente, conectar vários serviços a uma relação em um serviço)

    
por Marco Ceppi 10.04.2013 / 00:35

Tags