2016-11-10 59 views
0

我已經成功地使用python腳本在單個主機上運行的應用程序上運行的應用程序的外部端口使用component.connect(provides-component>,providePortName =「portName」) 但我現在想要部署一個應用程序在不同的主機上,但我得到一個錯誤。我使用nodeBooter啓動遠程域和節點,並且可以使用本地python來控制它並啓動波形並啓動它,但是如果我在Uses端口主機上運行python,則它不能redhawk.attach()到提供端口主機上的域。錯誤是StandardError:沒有找到域。該域正在其他主機上運行,​​並且nameclt列表會看到它,因此命名服務已正確連接。這應該是可能的,我只是想念一些東西,或者有不同的主機上的域之間的外部連接有問題嗎?如何使用python連接在不同主機上運行的應用程序的外部端口?

+0

對不起 - 有些問題掉了一半以上。我會重新輸入。 –

回答

2

我打算使用docker來模擬你的環境。希望我正確理解你的情況。我有3臺機器。 A,B和C.每個A和B都有自己的域,GPP和運行波形。在我的情況下,A和B是碼頭集裝箱。 C將用於與A和B進行連接並與之交互。

這些圖片是公開的,所以如果你已經安裝了docker,可以隨時關注。

機A(IP地址172.17.0.3)

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

# Install a test waveform 
[[email protected] ~]$ sudo yum install -y rh.FM_mono_demo 

# Start the omni services 
[[email protected] ~]$ sudo $OSSIEHOME/bin/cleanomni 

# Start domain and dev manager 
[[email protected] ~]$ nodeBooter --daemon -D 
[[email protected] ~]$ nodeBooter --daemon -d $SDRROOT/dev/nodes/DevMgr_12ef887a9000/DeviceManager.dcd.xml 

# Launch the waveform via python 
[[email protected] ~]$ 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外殼中。

現在在主機C上,我們可以跳入python,連接到每個域,並建立連接。

[[email protected]]$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運行到PSD部件上機B.

運行TFD元件
+0

謝謝。我的問題是與主機地址附加的可選參數。現在它工作正常。 –

相關問題