Может ли кто-нибудь объяснить мне прицелы в реактивных чарах (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(...)
в другом месте очарования, которое не должно использоваться за пределами уровня интерфейса.