Alguém pode explicar escopos em encantos reativos para mim por favor (juju 2.0)?

0

Estou tendo algumas dificuldades com escopos no juju 2.0 (2.0-rc1-0ubuntu1 ~ 1) e na documentação não entra em muitos detalhes.

Eu escrevi uma interface no link usando o escopo global (ou assim pensei).

Eu tenho dois charms e configurei a interface nas provisões apropriadas / requer como "oildashboard".

Um charme é chamado de "weebl" e um segundo charme falso que estou usando para testes chamado "anti-weebl". O anti-weebl não faz muito a não ser exibir as informações passadas para ele na mensagem de status do juju, assim:

@when('oildashboard.available')
def display_data_in_status(oildashboard):
    hookenv.status_set('active', oildashboard.weebl_username())

Parecia estar funcionando ontem, alegremente disputando dados no status juju, mas agora que envolvi uma segunda relação com um terceiro charme do weebl, recebo ValueError: Conversation with scope 'anti-weebl' not found .

Alguém pode lançar alguma luz sobre o que estou fazendo de errado com escopos globais, por favor?

Este é o erro completo (depois que eu removi o unit-weebl-1: 14:54:29 INFO unit.weebl/1.oildashboard-relation-joined do começo de cada linha):

Traceback (most recent call last):
  File "/var/lib/juju/agents/unit-weebl-1/charm/hooks/oildashboard-relation-joined", line 19, in <module>
    main()
  File "/usr/local/lib/python3.5/dist-packages/charms/reactive/__init__.py", line 78, in main
    bus.dispatch()
  File "/usr/local/lib/python3.5/dist-packages/charms/reactive/bus.py", line 434, in dispatch
    _invoke(other_handlers)
  File "/usr/local/lib/python3.5/dist-packages/charms/reactive/bus.py", line 417, in _invoke
    handler.invoke()
  File "/usr/local/lib/python3.5/dist-packages/charms/reactive/bus.py", line 291, in invoke
    self._action(*args)
  File "/var/lib/juju/agents/unit-weebl-1/charm/reactive/weebl.py", line 52, in request_db
    pgsql.set_remote('extensions', 'tablefunc')
  File "/usr/local/lib/python3.5/dist-packages/charms/reactive/relations.py", line 323, in set_remote
    self.conversation(scope).set_remote(key, value, data, **kwdata)
  File "/usr/local/lib/python3.5/dist-packages/charms/reactive/relations.py", line 263, in conversation
    raise ValueError("Conversation with scope '%s' not found" % scope)
ValueError: Conversation with scope 'anti-weebl' not found
unit-weebl-1: 14:54:29 ERROR juju.worker.uniter.operation hook "oildashboard-relation-joined" failed: exit status 1
unit-weebl-1: 14:54:29 INFO juju.worker.uniter awaiting error resolution for "relation-joined" hook
    
por Darren 23.09.2016 / 16:39

1 resposta

1

Depois de perguntar um pouco, verifica-se que não tem nada a ver com escopos! Foi na verdade porque estávamos usando set_remote(...) em outro lugar no encanto, que não deveria ser usado fora da camada de interface.

    
por Darren 23.09.2016 / 18:55