• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

NVIDIA / holodeck / 23063499190
51%

Build:
DEFAULT BRANCH: main
Ran 13 Mar 2026 05:52PM UTC
Jobs 1
Files 38
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

13 Mar 2026 05:48PM UTC coverage: 50.688% (-0.4%) from 51.115%
23063499190

push

github

web-flow
feat: add Transport abstraction for SSH connections (#724)

* feat: add Transport abstraction for SSH connections

Introduce Transport interface so each provider controls how SSH
connections are established. DirectTransport for single-node and SSH
provider. SSMTransport for AWS cluster mode with retry-based dial (D1).
Provisioner unchanged — just receives working connections.

- Transport interface with Dial() and Target() methods
- DirectTransport: TCP dial to host:22 (existing behavior)
- SSMTransport: AWS SSM port forwarding with exponential backoff retry
- Provisioner gets functional option WithTransport()
- NodeInfo gets InstanceID and Transport fields
- Backwards compatible: nil transport falls back to DirectTransport

Signed-off-by: Carlos Eduardo Arango Gutierrez <eduardoa@nvidia.com>

* fix: wire Transport into SSH connection path and add cleanup

Address Distinguished Engineer review findings for PR #724:

B1 (BLOCKING): connectOrDie() now uses transport.Dial() + ssh.NewClientConn()
when a Transport is provided, instead of ignoring the transport and calling
ssh.Dial("tcp", ...) directly. All reconnection paths (waitForNodeReboot,
provision) pass p.transport through.

B2 (BLOCKING): installK8sPrereqs() and GetClusterHealth() now use
transportOptsForNode() to pass transport options to New().

R1: SSMTransport.Dial() is now idempotent — closes any existing session
before starting a new one.

R2: Transport interface includes Close() method. DirectTransport has a
no-op Close(). SSMTransport.Close() terminates the SSM process.

R3: SSM stderr is captured in a bytes.Buffer and included in error
messages for diagnostics.

R4: GetClusterHealth() builds transport options from node info in
environment status.

Signed-off-by: Eduardo Arango <earango@nvidia.com>
Signed-off-by: Carlos Eduardo Arango Gutierrez <eduardoa@nvidia.com>

* fix: check error return values in transport tests

Fix golangci-lint errcheck violations for ln.Close() and conn.Close()
in... (continued)

36 of 163 new or added lines in 3 files covered. (22.09%)

1 existing line in 1 file now uncovered.

3205 of 6323 relevant lines covered (50.69%)

0.57 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
37
4.58
2.12% pkg/provisioner/provisioner.go
38
12.92
-0.63% pkg/provisioner/cluster.go
52
40.23
pkg/provisioner/transport.go

Uncovered Existing Lines

Lines Coverage ∆ File
1
4.58
2.12% pkg/provisioner/provisioner.go
Jobs
ID Job ID Ran Files Coverage
1 23063499190.1 13 Mar 2026 05:52PM UTC 38
50.69
GitHub Action Run
Source Files on build 23063499190
  • Tree
  • List 38
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #23063499190
  • ff0b8a14 on github
  • Prev Build on main (#23063488054)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc