Очарование амулета - как выполнить и отладить реактивное очарование

Я разрабатываю очарование амулета в Python с помощью реактивного шаблона. Все мои рычаги называют с помощью декораторов, предоставленных 'основным' базовым слоем. При попытке развернуть очарование я встретился с ошибкой. Для решения ошибки, я использовал 'рычаги отладки амулета и 'амулет dhx-r' (dhx отладка плагина), но я не могу найти способ выполнить код очарования с помощью Python после реактивного шаблона... Как я понимаю, (при использовании dhx для отладки, например), выполнение очарования возвращается к состоянию точно перед рычагом, который вызвал ошибку, и разработчик зарегистрирован в удаленный сеанс отладки. Это находится на разработчике для выполнения рычагов. Обычно эти рычаги находились бы под каталогом рычагов / и будут выполнены, просто выполнив их. Это не возможный использующий реактивный шаблон, так как нет никакой точки входа для рычагов, но все - просто каскад реакций на состояния...

Как я выполняю код очарования амулета, написанный в Python после реактивного шаблона во время сеанса отладки?

1
задан 29 July 2016 в 17:10

2 ответа

У меня была та же проблема, потому что в некотором роде мой set_state('myservice.installed') был инициирован, даже когда я получил ошибку, которую привел к сбою мой рычаг установки. Я не сделал нашел определенное решение выполнить определенную часть кода, но хорошее обходное решение может быть должно изменить событие, которое обычно инициировало бы Ваш код и повторно выполнялось бы hooks/install. Я только попробовал его juju debug-hooks а не juju dhx, но это сделало задание для меня.

В моем случае я видел, что мое текущее состояние было установлено на 'Установленный'. Путем изменения моего события для инициирования кода я смог повторно выполнить свой рычаг Установки. В моем debug-hooks сессия я мог затем видеть, где мой рычаг перестал работать.

from charms.reactive import when, set_state
import charms.apt

@when('myservice.installed')
def install():
    charms.apt.queue_install(['some-package'])
    // do some extra stuff
    set_state('myservice.installed')
1
ответ дан 7 December 2019 в 15:51

Как я выполняю реактивное очарование во время сеанса отладки?

Вы выполняете реактивное очарование путем выполнения рычага в hooks/ каталог. Тот рычаг будет запускать реактивную платформу и инициировать "каскад состояний".

Файлы рычага в hooks/ каталог создается layer-basic и charm build. Удостоверьтесь, что включали layer-basic в Вашем layer.yaml файл, если файлы рычага не присутствуют в hooks/ каталог.

Можно найти больше информации об отладке реактивного очарования в документах Амулета.

0
ответ дан 7 December 2019 в 15:51

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

Похожие вопросы: