I have been successfully connecting external ports on applications running in different domains and nodes on a single host using python scripts uses-component.connect(provides-component>, providesPortName="portName") but I now want to deploy one application on a different host but I get an error. I launch the remote domain and node using nodeBooter and can use local python to control it and launch the waveform and start it, but if I run python on the Uses port host it cannot redhawk.attach() to the domain on the provides port host. The error is StandardError: Did not find domain . The domain is running on the other host and nameclt list sees it so the Naming Service is connected properly. Is this supposed to be possible and I am just missing something or is there a problem with making external connections between domains on different hosts?
I'm going to use docker to emulate your environment. Hopefully I understood your situation correctly. I have 3 machines. A, B, and C. A and B each have their own domain, GPP, and running waveform. In my case A and B are docker containers. C will be used to reach out and interact with A and B making the connections.
These images are public so feel free to follow along if you have docker installed.
Machine A (IP address 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')
We do the exact same steps for Machine B, who's IP was given as 172.17.0.2. Make sure not to close or exit these terminals, leave them up and in the python shell.
Now on Host C we can hop into python, connect to each domain, and make the connections.
[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)
So we had 3 machines, A, B, and C. A and B each ran a waveform and from machine C we connect the TFD component running on machine A to the PSD component running on machine B.