Connections
This section will teach users how to connect to their device whichever way they want.
Single Connection
In this scenario, users want to connect to their device using the
console or the vty.
Let’s begin with the simplest case:
>>> device
<Device object 'P1' at 0xf71a5f8c>
>>> device.connect()
The device is connected and ready to be used by the Genie infrastructure. As
no via was provided, it will try to connect to the default connection, which
generally uses the console connection.
Another possibility is using via argument.
>>> device
<Device object 'P1' at 0xf71a5f8c>
>>> device.connect(via='vty1')
Now, it will use the vty1 to connect to the device.
Another option is to use the alias argument. When no alias is provided,
it uses the default alias. However, users can provide a specific alias.
>>> device
<Device object 'P1' at 0xf71a5f8c>
>>> device.connect(via='vty1', alias='vty')
>>> device
<Device object 'P1' at 0xf71a5f8c>
>>> device.connect(via='netconf', alias='nc')
>>> device.connect(via='vty1', alias='vty')
>>> device.mapping['yang'] = 'nc'
>>> device.mapping['cli'] = 'vty1'
We have added a mapping attribute to the device. This attribute allows
Genie to determine which user-defined alias. Now, every cli command
used for this device, will use the vty connection. The same concept may be
applied for Yang, except the mapping should use the keyword yang instead.
If the more than one connection was made to the device with different alias, then you will need to use mapping. However if only 1 connection is made to the device, then it will automatically use this connection.
Hint
Confused about the alias concept ? Make sure you are familiar with the
concept of pyATS :connection:`connection <http>`.
Pool Connection
A pool connection can be used to connect to the device, which allows to
send multiple commands at the same time to the device. This improve the
performance of learning the feature.
>>> device.start_pool(alias='vty',
via='vty1',
size='<any number which is supported by your device>')
Once this the pool is started, then passing this device to an Ops object
will send all the commands in parallel. This works for all connection type
which support multiple connections to the device.
If more than one connection was made to the device with different alias, then
you will need to use mapping. Mapping allow to let Genie know which
connection for sending the cli commands. However if only 1 connection is made
to the device, then it will automatically use this connection.
def.mapping['cli'] = 'vty'