Skip to content

Add arista_eos_ssh driver for Arista EOS over SSH - #419

Open
jvanderaa wants to merge 3 commits into
networktocode:developfrom
jvanderaa:feature/arista-eos-ssh
Open

Add arista_eos_ssh driver for Arista EOS over SSH#419
jvanderaa wants to merge 3 commits into
networktocode:developfrom
jvanderaa:feature/arista-eos-ssh

Conversation

@jvanderaa

Copy link
Copy Markdown
Contributor

Adds EOSSSHDevice for environments where eAPI is not enabled. It subclasses EOSDevice and overrides only the transport surface (init, open, close, show, config, reboot, vlans) plus a native_ssh alias, so the fact properties, boot-option handling, install_os and the whole file-transfer family are inherited unchanged.

Structured data comes from the CLI's '| json' pipe, which renders the same document eAPI returns; the pipe is a CLI feature and does not require 'management api http-commands'. The pipe is gated on '^show' because EOSDevice routes five EXEC/config commands through show(raw_text=False), and per-command read timeouts are resolved from the command text so show()'s signature stays identical to EOSDevice.show().

Validated against a DCS-7050TX-64-R running EOS 4.28.5M; the unit fixtures are that capture, sanitised. Public API parity with EOSDevice is enforced by test rather than by convention, and a further test feeds both drivers the same document and requires identical facts.

Adds EOSSSHDevice for environments where eAPI is not enabled. It subclasses
EOSDevice and overrides only the transport surface (__init__, open, close,
show, config, reboot, vlans) plus a native_ssh alias, so the fact
properties, boot-option handling, install_os and the whole file-transfer
family are inherited unchanged.

Structured data comes from the CLI's '| json' pipe, which renders the same
document eAPI returns; the pipe is a CLI feature and does not require
'management api http-commands'. The pipe is gated on '^show' because
EOSDevice routes five EXEC/config commands through show(raw_text=False),
and per-command read timeouts are resolved from the command text so
show()'s signature stays identical to EOSDevice.show().

Validated against a DCS-7050TX-64-R running EOS 4.28.5M; the unit fixtures
are that capture, sanitised. Public API parity with EOSDevice is enforced
by test rather than by convention, and a further test feeds both drivers
the same document and requires identical facts.
@jvanderaa
jvanderaa force-pushed the feature/arista-eos-ssh branch from a27d80c to 5190325 Compare August 11, 2026 12:29
@jeffkala

jeffkala commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Ran some additional manual testing on real hardware as well.

  1. Connect
  2. Facts
  3. show() variants
  4. Error handling
  5. Configs
  6. Filesystem
  7. Config round trip (state change, self-reverting)
  8. Checkpoint / rollback (state change, self-reverting)
  9. Save (PERSISTS: copies running-config to startup-config)
  10. Close / reconnect

@jeffkala
jeffkala requested a review from jtdub August 11, 2026 15:55
@jtdub

jtdub commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@jvanderaa - Does this need to be supported by os upgrades?

@jtdub jtdub left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! I ran the integration tests against the device in the lab.

I'm in the process of creating a Jira issue to wrap up anything else that would allow us to use this driver in OS Upgrades.

@jeffkala

Copy link
Copy Markdown
Contributor

@jvanderaa - Does this need to be supported by os upgrades?

yes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants