From 31b7f1edbc075d432c889c93303e905266c739ea Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Tue, 6 Jul 2021 21:16:02 +0200
Subject: [PATCH] L2SS-302: Explicitly expose our devices on their own unique
 ports, and tell CORBA what to listen on and how others can reach them

---
 docker-compose/Makefile       | 4 ++++
 docker-compose/device-pcc.yml | 6 +++++-
 docker-compose/device-sdp.yml | 6 +++++-
 docker-compose/device-sst.yml | 7 +++++--
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 307e7c0e6..09eb76012 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -21,6 +21,9 @@ ATTACH_COMPOSE_FILE_ARGS := $(foreach yml,$(filter-out tango.yml,$(COMPOSE_FILES
 # But we allow to overwrite it.
 NETWORK_MODE ?= tangonet
 
+# Host name through which others can reach our control interfaces
+HOSTNAME ?= $(shell hostname -f)
+
 # If the first make argument is "start" or "stop"...
 ifeq (start,$(firstword $(MAKECMDGOALS)))
     SERVICE_TARGET = true
@@ -105,6 +108,7 @@ endif
 DOCKER_COMPOSE_ARGS := DISPLAY=$(DISPLAY) \
     XAUTHORITY=$(XAUTHORITY) \
     TANGO_HOST=$(TANGO_HOST) \
+    HOSTNAME=$(HOSTNAME) \
     NETWORK_MODE=$(NETWORK_MODE) \
     XAUTHORITY_MOUNT=$(XAUTHORITY_MOUNT) \
     TANGO_LOFAR_CONTAINER_MOUNT=$(TANGO_LOFAR_CONTAINER_MOUNT) \
diff --git a/docker-compose/device-pcc.yml b/docker-compose/device-pcc.yml
index 3dc69f20b..ebf71352d 100644
--- a/docker-compose/device-pcc.yml
+++ b/docker-compose/device-pcc.yml
@@ -24,6 +24,8 @@ services:
     container_name: ${CONTAINER_NAME_PREFIX}device-pcc
     networks:
       - control
+    ports:
+      - "5700:5700" # unique port for this DS
     volumes:
         - ${TANGO_LOFAR_CONTAINER_MOUNT}
     environment:
@@ -34,5 +36,7 @@ services:
       - --timeout=30
       - --strict
       - --
-      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/pcc.py LTS -v
+      # configure CORBA to _listen_ on 0:port, but tell others we're _reachable_ through ${HOSTNAME}:port, since CORBA
+      # can't know about our Docker port forwarding
+      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/pcc.py LTS -v -ORBendPoint giop:tcp:0:5700 -ORBendPointPublish giop:tcp:${HOSTNAME}:5700
     restart: on-failure
diff --git a/docker-compose/device-sdp.yml b/docker-compose/device-sdp.yml
index 27d6a33cf..a65bb8ae3 100644
--- a/docker-compose/device-sdp.yml
+++ b/docker-compose/device-sdp.yml
@@ -24,6 +24,8 @@ services:
     container_name: ${CONTAINER_NAME_PREFIX}device-sdp
     networks:
       - control
+    ports:
+      - "5701:5701" # unique port for this DS
     volumes:
         - ${TANGO_LOFAR_CONTAINER_MOUNT}
     environment:
@@ -34,5 +36,7 @@ services:
       - --timeout=30
       - --strict
       - --
-      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sdp.py LTS -v
+      # configure CORBA to _listen_ on 0:port, but tell others we're _reachable_ through ${HOSTNAME}:port, since CORBA
+      # can't know about our Docker port forwarding
+      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sdp.py LTS -v -ORBendPoint giop:tcp:0:5701 -ORBendPointPublish giop:tcp:${HOSTNAME}:5701
     restart: on-failure
diff --git a/docker-compose/device-sst.yml b/docker-compose/device-sst.yml
index 7a669cf0a..c620ba206 100644
--- a/docker-compose/device-sst.yml
+++ b/docker-compose/device-sst.yml
@@ -26,7 +26,8 @@ services:
         - control
         - data
     ports:
-        - 5001:5001/udp
+        - "5001:5001/udp" # port to receive SST UDP packets on
+        - "5702:5702" # unique port for this DS
     volumes:
         - ${TANGO_LOFAR_CONTAINER_MOUNT}
     environment:
@@ -37,5 +38,7 @@ services:
       - --timeout=30
       - --strict
       - --
-      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sst.py LTS -v
+      # configure CORBA to _listen_ on 0:port, but tell others we're _reachable_ through ${HOSTNAME}:port, since CORBA
+      # can't know about our Docker port forwarding
+      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sst.py LTS -v -ORBendPoint giop:tcp:0:5702 -ORBendPointPublish giop:tcp:${HOSTNAME}:5702
     restart: on-failure
-- 
GitLab