0

Openstack Official Heat/Plugins wiki https://wiki.openstack.org/wiki/Heat/Pluginsの指示によると、「プラグインをインストールするには、Python モジュールを設定済みのプラグイン ディレクトリの 1 つにコピーするだけです。新しいプラグインをロードするには、この後に heat-engine を再起動する必要があります。」しかし、heat-engine を再起動すると、次のエラー メッセージが表示されます。

[root@cs14 heat]# heat-engine
2015-05-04 06:02:09.774 20839 WARNING heat.common.config [-] HT-A65A0DF The "instance_user" option in heat.conf is deprecated and will be removed in the Juno release.
[05/04/2015 06:02:10 EDT]heatCRITICAL : ImportError: No module named my_heat_plugin.client
Traceback (most recent call last):
  File "/usr/bin/heat-engine", line 67, in <module>
    srv = engine.EngineService(cfg.CONF.host, rpc_api.ENGINE_TOPIC)
  File "/usr/lib/python2.6/site-packages/heat/engine/service.py", line 288, in __init__
    resources.initialise()
  File "/usr/lib/python2.6/site-packages/heat/engine/resources/__init__.py", line 44, in initialise
    _load_global_environment(global_env)
  File "/usr/lib/python2.6/site-packages/heat/engine/resources/__init__.py", line 49, in _load_global_environment
    _load_global_resources(env)
  File "/usr/lib/python2.6/site-packages/heat/engine/resources/__init__.py", line 54, in _load_global_resources
    manager = plugin_manager.PluginManager(__name__)
  File "/usr/lib/python2.6/site-packages/heat/engine/plugin_manager.py", line 58, in __init__
    self.modules = list(modules())
  File "/usr/lib/python2.6/site-packages/heat/common/plugin_loader.py", line 91, in load_modules
    module = _import_module(importer, module_name, package)
  File "/usr/lib/python2.6/site-packages/heat/common/plugin_loader.py", line 72, in _import_module
    module = loader.load_module(module_name)
  File "/usr/lib64/python2.6/pkgutil.py", line 238, in load_module
    mod = imp.load_module(fullname, self.file, self.filename, self.etc)
  File "/usr/lib/heat/abc_heat_plugin/resources/abc/abc_server.py", line 24, in <module>
    from abc_heat_plugin.client import constants as const
ImportError: No module named abc_heat_plugin.client

この問題を解決するために、実行可能な 2 つの方法を考え出しました。方法 1. abc_heat_plugin を /usr/lib/python2.6/site-packages にコピーし、heat-engine を再起動します 方法 2. .pth ファイルを使用します。1) 次の 3 行を含むファイル /usr/lib/python2.6/site-packages/.pth を作成します (存在する場合はこれを行う必要はありません)。

/usr/lib/heat
/usr/lib/heat/abc_heat_plugin
/usr/lib/heat/abc_heat_plugin/client

2) プラグイン「my_heat_plugin」を /usr/lib/heat にコピーします。

3) ヒートサービスを再開する

しかし、どちらの方法も公式ガイド以上のことをしなければならないので、何か重要なことを見逃していないかと思います. 助言がありますか?ありがとう。(ところで、my_heat_plugin はうまく機能しています。)

4

1 に答える 1

0

リソースを にドロップするのが基本的な考え方だと思いますが、リソースで/usr/lib/heat使用されるモジュールまたはパッケージは通常の方法でインストールする必要があります。ファイルをサイトパッケージに移動することで、手動でそれを行いました。

たとえば、 heat/contribのプラグインを見てみましょう。クライアントが他の OpenStack サービスに依存するなど、依存関係を持つものもいくつかありますが、いずれの場合も、それらのクライアントは個別にインストールされていると想定されています。

可能であれば、クライアント パッケージの setup.py を作成し、heat プラグインとは別にインストールします。

于 2015-05-26T18:23:01.473 に答える