Как я могу развернуть свое локальное Очарование Амулета с платформой Амулета?

Я использую амулет в качестве среды тестирования для очарования который мы разработка. Я уже попытался воспроизвести пример, обеспеченный на https://jujucharms.com/docs/stable/tools-amulet, и это, хорошо работают. Но теперь я пытаюсь сделать ту же основную установку для очарования, которое было разработано и сохранено на жестком диске (очарование 'cf-nat' было клонировано от GitHub). Здесь список моих действий (я использую окружение для развертывания):

Python 3.2.3 (default, Feb 27 2014, 21:31:18) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import amulet
>>> import requests
>>> d = amulet.Deployment(series='trusty')
>>> d.add('cf-nats', charm = '/home/ubuntu/cf-charms/charms/trusty/cf-nats')
>>> d.setup()

И я получил следующий вывод:

2014-03-10 10:56:09 Starting deployment of local
Traceback (most recent call last):
  File "/usr/bin/juju-deployer", line 9, in <module>
    load_entry_point('juju-deployer==0.2.5', 'console_scripts', 'juju-deployer')()
  File "/usr/lib/python2.7/dist-packages/deployer/cli.py", line 118, in main
    run()
  File "/usr/lib/python2.7/dist-packages/deployer/cli.py", line 204, in run
    importer.Importer(env, deployment, options).run()
  File "/usr/lib/python2.7/dist-packages/deployer/action/importer.py", line 142, in run
    self.get_charms()
  File "/usr/lib/python2.7/dist-packages/deployer/action/importer.py", line 47, in get_charms
    no_local_mods=self.options.no_local_mods)
  File "/usr/lib/python2.7/dist-packages/deployer/deployment.py", line 112, in fetch_charms
    charm.fetch()
  File "/usr/lib/python2.7/dist-packages/deployer/charm.py", line 98, in fetch
    self.vcs.branch()
AttributeError: 'NoneType' object has no attribute 'branch'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/amulet/deployer.py", line 175, in setup
    self.juju_env], cwd=self.deployer_dir)
  File "/usr/lib/python3.2/subprocess.py", line 489, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['juju-deployer', '-W', '-c', '/tmp/amulet-juju-deployer-myb41r.json', '-e', 'local', 'local']' returned non-zero exit status 1

Я также попытался развернуть то же очарование вручную с интерфейсом командной строки амулета, и это - работа.

Вот вывод от d.schema()

>>> d.schema()
{'local': {'services': {'cf-nats-sentry': {'_has_sentry': True, 'expose': True, 'branch': '/tmp/sentry-sub_16ocg4/cf-nats-sentry'}, 'cf-nats': {'_has_sentry': True, 'branch': '/home/ubuntu/cf-charms/charms/trusty/cf-nats'}, 'relation-sentry': {'expose': True, 'branch': '/tmp/sentry_5cdg4t/relation-sentry'}}, 'series': 'trusty', 'relations': [['cf-nats:juju-info', 'cf-nats-sentry:juju-info']]}}

Что не так в моем коде? Как я могу развернуть свое локальное очарование с платформой амулета? Какие пакеты Python должны быть установлены?

Заранее спасибо.

5
задан 25 July 2016 в 05:28

1 ответ

Я полагаю, что вижу Вашу проблему. Так, Вы вытянули это очарование от GitHub, который прекрасен. Однако тесты обычно пишутся и запускаются из tests каталог. Так, амулет применяет определенное волшебство развернуть использование очарования на диске, таким образом, Вы не должны явно помещать charm= в d.add строка. Однако, так как Вы работаете от интерактивной оболочки, имеет смысл для Вас делать это. Проблема, это не ответвление Базара, которое является тем, что ожидает Устройство развертывания Амулета.

Как правило, что происходит, когда Вы просто делаете d.add('cf-nats') в тесте очарования, дерево очарования копируется во временное местоположение, и bzr repo создается (если Вы уже не существуете). Тогда то новое временное местоположение питается к устройству развертывания. Однако, так как Вы дали ему твердый путь к файлу, что части не происходит (дизайном), и это предполагает, что у Вас есть очарование, которое имеет bzr repo, и это просто собирается использовать это.

путь вокруг этого состоит в том, чтобы или работать export JUJU_TEST_CHARM="cf-nats" (и переменная среды тестовые наборы плагина амулета) до запуска Вашей оболочки Python3 от $CHARM_DIR (/home/ubuntu/cf-charms/charms/trusty/cf-nats), или после создания d = amulet.Deployment() устанавливает d.charm_name = 'cf-nats'. Тогда просто сделайте d.add('cf-nats'), амулет будет видеть, что базовое имя getcwd совпадает с именем очарования, и прозрачно выполните, это имеет немного волшебство.

, Который должен сделать это. Идеально, добавление поддержки основанного на мерзавце очарования к устройству развертывания амулета решит все это, но попытка это и сообщит мне, не работает ли это на Вас.

3
ответ дан 23 November 2019 в 10:28

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

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