Automation and Programmability Tooling
What the exam expects you to distinguish
Arista's programmability stack has several layers, and questions test whether you know which tool solves which problem.
- eAPI - JSON-RPC over HTTP(S) to EOS. You send
runCmds(CLI commands) orget/enable/configmethods. It is synchronous request/response and returns JSON. Good for ad-hoc automation and for tools that speak HTTP. - pyeapi - a Python wrapper around eAPI. It gives you JSON output and connection management, but it is still CLI-driven underneath.
- RESTCONF / gNMI / OpenConfig - model-driven interfaces. gNMI is the streaming telemetry and config protocol; OpenConfig provides vendor-neutral YANG models.
- Ansible / Terraform / Python - orchestration and IaC layers that call the above.
Traps
- eAPI is not model-driven. It executes CLI commands; the output is structured JSON but the interface is command-based, not YANG-based. A question that says "eAPI uses OpenConfig models" is wrong.
- pyeapi is not a separate protocol. It wraps eAPI.
- gNMI is for streaming telemetry and model-based config, not for arbitrary CLI execution.
- Idempotency. Ansible modules and Terraform resources are expected to be idempotent; raw eAPI
runCmdsis not.
Worked example
To read interface counters from a switch in Python, you would use pyeapi: connect with pyeapi.connect_to("switch1"), then node.enable("show interfaces"). The same thing over raw HTTP is a POST to /command-api with {"jsonrpc":"2.0","method":"runCmds","params":{"cmds":["show interfaces"],"format":"json"}}. Knowing both shapes is the point.