Supported Platforms¶
At the moment unicon.plugins
supports the following network device types,
described as their OS (network operation system), platform and
model (specific model support).
These values help Unicon load the most accurate connection plugin for the given network device, and corresponds to ther pyATS testbed YAML counterparts.
For example, if os=iosxe
and platform=abc
, since abc
is not found in
the iosxe table, it will fallback to use the generic iosxe
plugin. If
os=iosxe
and platform=cat3k
, it will use the specific plugin iosxe/cat3k
.
Tip
The priority to pick up which plugin is: chassis_type > os > platform > model.
Important
The specific device definitions are being added in a PID tokens file to explicitly match a device PID with the expected os, platform, model. Please ensure that devices you are using are accurately represented as this will serve as the source of truth for Genie Abstract as well in a near future update.
os |
platform |
model |
Comments |
---|---|---|---|
|
|||
|
|||
|
|||
|
|
||
|
|
||
|
|
||
|
|||
|
|||
|
|||
|
|
||
|
|
||
|
|||
|
|||
|
Tested with FP2K. |
||
|
|
||
|
|
||
|
|
Deprecated, please use one of the other fxos plugins. |
|
|
Check Point Gaia OS |
||
|
|||
|
|
||
|
|
||
|
|
||
|
|
See example below. |
|
|
|||
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|
||
|
|
|
|
|
|
||
|
|
|
|
|
|
||
|
|
||
|
|||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|||
|
|||
|
Generic Linux server with bash prompts |
||
|
Nexus Dashboard (ND) Linux server. identical to os: linux |
||
|
|||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Network Service Orchestrator |
||
|
Optical Networking System |
||
|
|
Identical to os=viptela. |
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Identical to os=sdwan, platform=viptela. |
||
|
Only command shell (cmd) is supported. Powershell is not supported |
To use this table - locate your device’s os/platform/model information, and fill your pyATS testbed YAML with it:
# Example
# -------
#
# testbed yaml for a single device using Unicon
devices:
my-device:
os: iosxe
connections:
cli:
protocol: ssh
ip: 1.2.3.4
Tip
in the above example, platform
and model
is not provided, hence Unicon
will use the most generic os=iosxe
connection implementation for my
device.
Example: Single Router¶
devices:
router_hostname:
os: iosxe
platform: csr1000v
model: vewlc
type: iosxe
credentials:
default:
username: xxx
password: yyy
enable:
password: zzz
connections:
a:
protocol: telnet
ip: 1.1.1.1
port: 17017
vty:
protocol: ssh
ip: 2.2.2.2
Example: HA router¶
HA router has connections a and b
devices:
router_hostname:
os: nxos
platform: n9k
type: nxos
credentials:
default:
username: xxx
password: yyy
enable:
password: zzz
connections:
a:
protocol: telnet
ip: 1.1.1.1
port: 17017
b:
protocol: telnet
ip: 1.1.1.1
port: 17018
vty:
protocol: ssh
ip: 2.2.2.2
Example: Stack router¶
Stack router has connections peer_1, peer_2, peer_3
devices:
router_hostname:
os: iosxe
platform: cat3k
type: iosxe
chassis_type: stack <<< define the chassis_type as 'stack'
credentials:
default:
username: xxx
password: yyy
enable:
password: zzz
connections:
defaults:
class: unicon.Unicon
connections: [peer_1, peer_2, peer_3] <<< define the connections to use
peer_1:
protocol: telnet
ip: 1.1.1.1
port: 2001
member: 1 <<< peer rp id
peer_2:
protocol: telnet
ip: 1.1.1.1
port: 2002
member: 2 <<< peer rp id
peer_3:
protocol: telnet
ip: 1.1.1.1
port: 2003
member: 3 <<< peer rp id
Example: Quad Sup router¶
Quad Sup router has two chassis 1, 2 and 4 connections a, b, c, d
devices:
router_hostname:
os: iosxe
platform: cat9k
type: iosxe
chassis_type: quad <<< define the chassis_type as 'quad'
credentials:
default:
username: xxx
password: yyy
enable:
password: zzz
connections:
defaults:
class: unicon.Unicon
connections: [a, b, c, d] <<< define the connections to use
a:
protocol: telnet
ip: 1.1.1.1
port: 2001
member: 1 <<< chassis id
b:
protocol: telnet
ip: 1.1.1.1
port: 2002
member: 2 <<< chassis id
c:
protocol: telnet
ip: 1.1.1.1
port: 2003
member: 1 <<< chassis id
d:
protocol: telnet
ip: 1.1.1.1
port: 2004
member: 2 <<< chassis id
Example: Linux Server¶
devices:
linux_name:
os: linux
type: linux
credentials:
default:
username: xxx
password: yyy
connections:
linux:
protocol: ssh
ip: 2.2.2.2
Example: IOS Pagent¶
The ios/pagent plugin requires the pagent_key
to be specified
as an argument to connection. When the device transitions to enable state
the plugin enters the pagent key for you.
device.connect(pagent_key='123412341234')
Alternatively, you could specify the pagent key as an argument in your pyATS testbed YAML:
# Example
# -------
#
# testbed yaml for a single pagent device using Unicon
device1:
os: 'ios'
platform: 'pagent'
type: 'router'
credentials:
default:
username: lab
password: lab
connections:
a:
protocol: telnet
ip: 10.64.70.11
port: 2042
arguments:
pagent_key: '123412341234'