2017-08-30 6 views
0

私はプラットフォームAとプラットフォームBを持っており、プラットフォームBからプラットフォームAのRPCメソッドを呼び出す必要があります。この質問は既に読んでいます。 In VOLTTRON, how to use VIP to get agents talk across remote platform instances? 既知のhostsファイルと新しいvolttron-ctl auth addインタフェースについては何も言及していないので、古くなっている可能性があります。また、私はまだserverkeyの秘密鍵のパラメータでコメントに記載された大規模なURLを含める必要がありますか? https://github.com/VOLTTRON/volttron/blob/5cc71e9982338e242bf801da372aa66ed14abbd9/examples/SimpleForwarder/simpleforwarder/simpleforwarder.py この例のvip接続のURLは、 "destination-vip": "ipc://@/tmp/v4home/run/vip.socket"、 ですが、これはSimpleForwarderのソースコードです。スタックオーバーフローの質問で提供される回答と一致しません。 http://volttron.readthedocs.io/en/4.1/core_services/messagebus/VIP/VIP-Authentication.html このセクションでは、VIP経由での認証方法についていくつかの情報を提供しますが、他のプラットフォームのエージェントでRPCを呼び出すにはどのような手順が必要ですか?誰かがこれを行うための更新された方法(volttron 4.1のために)がうまくいけば、ステップバイステップで明確にすることができますか?リモートプラットフォームで@RPCメソッドを呼び出す

答えて

2

リモートエージェントでRPC呼び出しを呼び出すことは、別のプラットフォームでpub/subを実行することと非常によく似ています。実際の例では、リモートヒストリアンでRPCメソッドを呼び出すDataMoverエージェントを調べることができます。それは既知のホストファイルにかどう

まずそれが先のためにサーバキーを取得します。

hosts = KnownHostsStore() 
serverkey = hosts.serverkey(destination_vip) 

ない場合は、エージェントの設定ファイルからそれを取得します。

次に、historian_setupメソッドは、vip agent utilsのbuilding_agentメソッドを使用して、URLを構築する必要がないように、address、serverkey、public、およびsecret keyを渡して、別のプラットフォームへのリンクを作成します。

その後
self._target_platform = build_agent(address=self.destination_vip, 
           serverkey=self.destination_serverkey, 
           publickey=self.core.publickey, 
           secretkey=self.core.secretkey, 
           enable_store=False) 

それが呼び出しを公開しない:

self._target_platform.vip.rpc.call(
       self.destination_historian_identity, 'insert', 
       to_send).get(timeout=10) 

手順このプロセスには、以下のとおりです。TargetAgentが動作している

  1. スタートプラット。
  2. はとプラットのためのサーバキーを取得します。vctl auth serverkey
  3. スタートPlatformB
  4. PlatformB上の既知のホストにプラットを追加します。PlatformB上vctl add-known-host --host tcp://tcp://xxx.xxx.xxx.xxx:YYYY --serverkey SERVERKEY_FOR_A または 設定SendingAgentステップ2からサーバキーと、プラットの宛先VIPアドレス(TCPを:/ /xxx.xxx.xxx.xxx:YYYY)

  5. でSendingAgentのための公開鍵を取得しPlatformB

  6. にSendingAgentをインストールします。vctl auth publickey
  7. とプラットにSendingAgentの資格情報を追加します:vctl auth add

SendingAgentは今TargetAgent上のRPCメソッドを呼び出すことができるはずのあなたはプラット上で実行中のエージェントを必要とし、手順7のように送信者の認証セットアップが必要

+0

PlatformAはVIPアドレスでリッスンしています –

関連する問題