Может ли кто-нибудь объяснить мне прицелы в реактивных чарах (juju 2.0)?

У меня возникли некоторые трудности с областями применения в juju 2.0 (2.0-rc1-0ubuntu1~1), и документация не вдавалась в подробности.

Я написал интерфейс на https://github.com/autonomouse/interface-weebl используя глобальную область (или так я думал).

У меня есть 2 брелока, и я установил интерфейс в соответствии с требованиями "oildashboard".

Один брелок называется "weebl", а второй фиктивный брелок, который я использую для тестирования, называется "anti-weebl". Anti-weebl ничего не делает, кроме отображения части информации, передаваемой ему, в сообщении о статусе juju, например:

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

Похоже, что вчера он работал, радостно отображая данные в статусе джиу, но теперь, когда у меня появилось второе отношение к третьему заклинанию от weebl, я получаю ValueError: Conversation with scope 'anti-weebl' not found,

Может ли кто-нибудь пролить свет на то, что я делаю неправильно с глобальными областями, пожалуйста?

Это полная ошибка (после того как я удалил unit-weebl-1: 14:54:29 INFO unit.weebl/1.oildashboard-relation-joined с начала каждой строки):

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

1 ответ

Немного поинтересовавшись, выясняется, что это никак не связано с областями видимости! Это было на самом деле, потому что мы использовали set_remote(...) в другом месте очарования, которое не должно использоваться за пределами уровня интерфейса.

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