NDTS Gateway Installation: Difference between revisions

From Network for Advanced NMR
Jump to navigationJump to search
Line 42: Line 42:
== '''NDTS Gateway Configuration''' ==
== '''NDTS Gateway Configuration''' ==


The gateway reads its settings from <code>/opt/nandt-gateway/gateway_configuration.json</code>. 
=== Configuration Options ===
The file '''must''' be valid JSON.
{| class="wikitable"
 
|+ Gateway configuration parameters
* <code>"log_file_path"</code> – path for the log file (default <code>/opt/nandt-gateway/nan-gateway.log</code>) 
! Option !! Description !! Default
* <code>"logging_level"</code> – one of <code>fatal</code> (=critical), <code>error</code>, <code>warning</code>, <code>info</code>, <code>debug</code> (default <code>"info"</code>) 
|-
* <code>"logging_format"</code> – Python <code>logging</code> format string (default <code>"%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s"</code>) 
| log_file_path || Path to write the gateway log file || /opt/nandt-gateway/nan-gateway.log
* <code>"base_output_path"</code> – where received data are written (default <code>/opt/nandt-gateway/data/received</code>) 
|-
* <code>"https_endpoint"</code> – HTTPS endpoint of the NDTS Receiver (default <code>"https://receiver.usnan.org"</code>) 
| logging_level || Minimum severity written to the log (fatal → debug) || info
* <code>"retry_limit"</code> / <code>"retry_delay"</code> – number of send attempts (default 5) and seconds between retries (default 300
|-
* <code>"rsync_username"</code> – credentials used for the final rsync step (defaults <code>"nandt"</code> )
| logging_format || Python <code>logging</code> format string for each line || %(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s
* <code>"rsync_node"</code> – network node that experimental data is rsync'd to (defaults <code>"receiver.usnan.org"</code>)
|-
* <code>"request_queue_size"</code> – backlog of outstanding daemon connections (default 50
| base_output_path || Directory used for incoming experiment data || /opt/nandt-gateway/data/received
|-
| https_endpoint || HTTPS endpoint of the NDTS Receiver || https://receiver.usnan.org
|-
| retry_limit || Attempts to forward each dataset to the Receiver || 5
|-
| retry_delay || Seconds to wait between retry attempts || 300
|-
| rsync_username || SSH/rsync account on the Receiver || nandt
|-
| rsync_node || Node to which experiment files are rsync’d || receiver.usnan.org
|-
| request_queue_size || Outstanding daemon connections accepted before new ones are rejected || 50
|}


<pre>{
<pre>{
   "log_file_path": "/opt/nandt-gateway/nan-gateway.log",
   "log_file_path": "/opt/nandt-gateway/nan-gateway.log",
   "logging_level": "info",
   "logging_level": "info",
  "logging_format": "%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s",
   "base_output_path": "/opt/nandt-gateway/data/received",
   "base_output_path": "/opt/nandt-gateway/data/received",
   "https_endpoint": "https://receiver.usnan.org",
   "https_endpoint": "https://receiver.usnan.org",
   "retry_limit": 5,
   "retry_limit": 5,
   "retry_delay": 300
   "retry_delay": 300,
  "rsync_username": "nandt",
  "rsync_node": "receiver.usnan.org",
  "request_queue_size": 50
}</pre>
}</pre>


----
=== Logging Levels ===
{| class="wikitable"
|+ Gateway logging levels
! Level !! Description
|-
| debug || Detailed diagnostic messages useful for troubleshooting
|-
| info || Unusual or noteworthy events (recommended for production)
|-
| warning || Unusual events that generally require no action
|-
| error || Problems that must be addressed for normal operation
|-
| fatal || Critical events after which the gateway shuts down
|}


== '''NDTS Gateway Components''' ==
== '''NDTS Gateway Components''' ==

Revision as of 14:30, 3 June 2025

Gateway Installation

Prerequisites

  • A Gateway UUID supplied by the NAN Repository administrator
  • A Linux host (Ubuntu 20.04 or later recommended) reachable by all workstations
  • TCP port 60195 open inbound from those workstations

Installation Steps

# Copy the .gz file to the gateway computer
tar xf data-transport-gateway-<version>.tar.gz
cd dtgateway-installer
sudo ./install.sh
# → You will be prompted only for the Gateway UUID

Firewall Note

Open port 60195 to each NDTS workstation; no other inbound ports are required.

Verifying the Service

sudo systemctl status data-transport-gateway      # should show “active (running)”
sudo systemctl start  data-transport-gateway      # start if not running

Updating the Gateway

# Run the same installer script from a newer package
cd dtgateway-installer
sudo ./install.sh             # auto-detects an existing install; no prompts

Follow the directions above for verifying the service after updating the Gateway to ensure that the service is running.

Uninstalling the Gateway

sudo ./uninstall.sh           # script is included inside every package

Rolling Back the Gateway

Obtain the desired older package and run its install.sh. Rolling back more than one or two versions is not recommended.

NDTS Gateway Configuration

Configuration Options

Gateway configuration parameters
Option Description Default
log_file_path Path to write the gateway log file /opt/nandt-gateway/nan-gateway.log
logging_level Minimum severity written to the log (fatal → debug) info
logging_format Python logging format string for each line %(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s
base_output_path Directory used for incoming experiment data /opt/nandt-gateway/data/received
https_endpoint HTTPS endpoint of the NDTS Receiver https://receiver.usnan.org
retry_limit Attempts to forward each dataset to the Receiver 5
retry_delay Seconds to wait between retry attempts 300
rsync_username SSH/rsync account on the Receiver nandt
rsync_node Node to which experiment files are rsync’d receiver.usnan.org
request_queue_size Outstanding daemon connections accepted before new ones are rejected 50
{
  "log_file_path": "/opt/nandt-gateway/nan-gateway.log",
  "logging_level": "info",
  "logging_format": "%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s",
  "base_output_path": "/opt/nandt-gateway/data/received",
  "https_endpoint": "https://receiver.usnan.org",
  "retry_limit": 5,
  "retry_delay": 300,
  "rsync_username": "nandt",
  "rsync_node": "receiver.usnan.org",
  "request_queue_size": 50
}

Logging Levels

Gateway logging levels
Level Description
debug Detailed diagnostic messages useful for troubleshooting
info Unusual or noteworthy events (recommended for production)
warning Unusual events that generally require no action
error Problems that must be addressed for normal operation
fatal Critical events after which the gateway shuts down

NDTS Gateway Components

All files reside under /opt/nandt-gateway unless noted. :contentReference[oaicite:1]{index=1}

  • main.py – entry point for the Python service
  • /etc/systemd/system/data-transport-gateway.service – systemd unit file
  • nan-gateway.log – runtime log (path overridable via log_file_path)
  • gateway_configuration.json – configuration described above
  • data/
    • received/ – transient storage for incoming experiment data
    • retransmitter.pid – PID of the active retransmitter helper
    • users.dat – current user / sample / project list
    • user_checksum.dat – checksum that governs list refreshes

NDTS Operation

  • Experiment transfer – Workstation daemons connect on TCP 60195, announce a dataset, and stream it to received/. Successful transfers spawn a **Transmitter** process that forwards the data to the receiver; on success the local copy is deleted. :contentReference[oaicite:2]{index=2}
  • Retransmit – At start-up and after each daemon heartbeat, a **Retransmitter** scans received/. If a dataset’s original retry window has expired, it launches a new Transmitter until delivery succeeds or the file is manually removed.
  • Heartbeat forwarding – Every daemon heartbeat is wrapped with the gateway UUID, local and UTC timestamps, then sent to the receiver by a short-lived **Heartbeat Transmitter**.
  • User list propagation – Every 15 s the gateway requests an updated list from the receiver; if the checksum differs it saves the new list to users.dat and serves it to workstations on demand.

NDTS Logging

Logging level is controlled by the "logging_level" key in gateway_configuration.json. Levels (high → low volume): fatal, error, warning, info, debug. Default is info. The log file path defaults to /opt/nandt-gateway/nan-gateway.log. :contentReference[oaicite:3]{index=3}

Example log excerpt:

2022-06-06 09:22:23,130 INFO main [61393]: Starting gateway retransmitter instance...
2022-06-06 09:22:23,132 INFO main [61393]: Starting gateway receiver network endpoint...
2022-06-06 09:23:12,829 INFO GatewayTransmitter [61512]: Heartbeat sent to https://receiver.usnan.org/heartbeat

:contentReference[oaicite:4]{index=4}