如何使用python连接在不同主机上运行的应用程序上的外部端口?

时间:2016-11-10 00:01:00

标签: redhawksdr

我已经使用python脚本use-component.connect(provide-component>,providePortName =" portName")成功连接在单个主机上运行在不同域和节点上的应用程序的外部端口 但我现在想在不同的主机上部署一个应用程序但我收到错误。我使用nodeBooter启动远程域和节点,并且可以使用本地python来控制它并启动波形并启动它,但如果我在Uses端口主机上运行python,它就不能将redhawk.attach()发送到提供端口主机上的域。错误是StandardError:未找到域。域正在另一台主机上运行,​​nameclt列表可以看到它,因此命名服务已正确连接。这应该是可能的,我只是遗漏了一些东西,或者在不同主机上的域之间建立外部连接有问题吗?

1 个答案:

答案 0 :(得分:2)

我将使用docker来模拟您的环境。希望我能正确理解你的情况。我有3台机器。 A,B和C. A和B各自具有自己的域,GPP和运行波形。在我的情况下,A和B是泊坞容器。 C将用于伸出并与A和B进行交互。

这些图片是公开的,如果您安装了泊坞窗,请随时跟进。

机器A(IP地址172.17.0.3)

# Launch our 2.0.2 container
[ylb@axios]$docker run -it --rm axios/redhawk:2.0.2 bash -l

# Install a test waveform
[redhawk@6b0701e76e74 ~]$ sudo yum install -y rh.FM_mono_demo

# Start the omni services
[redhawk@6b0701e76e74 ~]$ sudo $OSSIEHOME/bin/cleanomni

# Start domain and dev manager
[redhawk@6b0701e76e74 ~]$ nodeBooter --daemon -D
[redhawk@6b0701e76e74 ~]$ nodeBooter --daemon -d $SDRROOT/dev/nodes/DevMgr_12ef887a9000/DeviceManager.dcd.xml

# Launch the waveform via python
[redhawk@6b0701e76e74 ~]$ python
>>> from ossie.utils import redhawk
>>> dom = redhawk.attach()
>>> app = dom.createApplication('/waveforms/rh/FM_mono_demo/FM_mono_demo.sad.xml')

我们对机器B执行完全相同的步骤,其IP为172.17.0.2。确保不要关闭或退出这些终端,将它们放在python shell中。

现在在主机C上,我们可以跳转到python,连接到每个域,并建立连接。

[ylb@axios]$python
>>> from ossie.utils import redhawk
>>> dom1 = redhawk.attach('REDHAWK_DEV', '172.17.0.3')
>>> dom2 = redhawk.attach('REDHAWK_DEV', '172.17.0.2')
>>> app1 = dom1.apps[0]
>>> app2 = dom2.apps[0]
>>> app1.comps[0].name
'rh.TuneFilterDecimate'
>>> tfd1 = app1.comps[0]
>>> app2.comps[1].name
'rh.psd'
>>> psd2 = app2.comps[1]
>>> tfd1.connect(psd2)

所以我们有3台机器,A,B和C.A和B各自运行一个波形,从机器C我们将机器A上运行的TFD组件连接到机器B上运行的PSD组件。