Context
PR #45 adds automatic on-site/off-site detection so the fetcher picks the right SSH hop count without user config: on_site_network(device) in src/magnetics/data/fetch/network.py decides whether we're inside a device's site network and, if so, dials mdsip directly (tcp), skips the getMany batch attempt appropriately, and drops the cluster ProxyJump.
The heuristic is: socket.getfqdn() ends with the device's network.domain (e.g. gat.com for DIII-D, pppl.gov for NSTX), with a MAGNETICS_ON_NETWORK=0|1 env override.
The gap
The unit tests (tests/test_fetch_network.py) exercise the logic with a monkeypatched socket.getfqdn() — they verify the branch selection given a hostname, but never that the assumption holds on a real host. Specifically, untested:
These can only be confirmed by running on the GA cluster, so they belong to the "make cybele-running work" effort rather than the local CI suite.
Suggested work
- Run the fetcher (both
mdsthin --tcp-auto and remote) from cybele/omega and confirm the detection + hop-count choices.
- Capture the real on-site FQDN and add a note/fixture documenting it.
- If
getfqdn() proves unreliable or slow on-site, fall back to a short-timeout direct-connect probe (attempt-then-fall-back-to-jump), which self-heals a misdetect.
Related: #17 (fast GUI remote pulls), #20 (connection-settings overhaul).
Context
PR #45 adds automatic on-site/off-site detection so the fetcher picks the right SSH hop count without user config:
on_site_network(device)insrc/magnetics/data/fetch/network.pydecides whether we're inside a device's site network and, if so, dials mdsip directly (tcp), skips thegetManybatch attempt appropriately, and drops the cluster ProxyJump.The heuristic is:
socket.getfqdn()ends with the device'snetwork.domain(e.g.gat.comfor DIII-D,pppl.govfor NSTX), with aMAGNETICS_ON_NETWORK=0|1env override.The gap
The unit tests (
tests/test_fetch_network.py) exercise the logic with a monkeypatchedsocket.getfqdn()— they verify the branch selection given a hostname, but never that the assumption holds on a real host. Specifically, untested:socket.getfqdn()on an actual cybele / omega node actually returns a*.gat.comFQDN (and fast — no slow reverse-DNS stall).These can only be confirmed by running on the GA cluster, so they belong to the "make cybele-running work" effort rather than the local CI suite.
Suggested work
mdsthin --tcp-auto andremote) from cybele/omega and confirm the detection + hop-count choices.getfqdn()proves unreliable or slow on-site, fall back to a short-timeout direct-connect probe (attempt-then-fall-back-to-jump), which self-heals a misdetect.Related: #17 (fast GUI remote pulls), #20 (connection-settings overhaul).