mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 21:30:22 -07:00
Lenovo cli bugfixes (#45278)
* To change all CLIs present in the code to latest CNOS CLI. One bug of executing with Lenovo Jakku switch is also getting fixed. * To change the file names as the commands have changed from display to show * To change to new CLI in test_cnos_comand.py as well
This commit is contained in:
parent
cbf2c2a000
commit
ac58c36ad0
16 changed files with 51 additions and 43 deletions
|
@ -68,33 +68,37 @@ options:
|
|||
required: true
|
||||
port:
|
||||
description:
|
||||
- Specifies the port to use when building the connection to the remote device.
|
||||
- Specifies the port to use when building the connection to the
|
||||
remote device.
|
||||
default: 22
|
||||
username:
|
||||
description:
|
||||
- Configures the username to use to authenticate the connection to
|
||||
the remote device. This value is used to authenticate
|
||||
the SSH session. If the value is not specified in the task, the
|
||||
value of environment variable C(ANSIBLE_NET_USERNAME) will be used instead.
|
||||
value of environment variable C(ANSIBLE_NET_USERNAME) will be used
|
||||
instead.
|
||||
password:
|
||||
description:
|
||||
- Specifies the password to use to authenticate the connection to
|
||||
the remote device. This value is used to authenticate
|
||||
the SSH session. If the value is not specified in the task, the
|
||||
value of environment variable C(ANSIBLE_NET_PASSWORD) will be used instead.
|
||||
value of environment variable C(ANSIBLE_NET_PASSWORD) will be used
|
||||
instead.
|
||||
timeout:
|
||||
description:
|
||||
- Specifies the timeout in seconds for communicating with the network device
|
||||
for either connecting or sending commands. If the timeout is
|
||||
exceeded before the operation is completed, the module will error.
|
||||
- Specifies the timeout in seconds for communicating with the network
|
||||
device for either connecting or sending commands. If the timeout
|
||||
is exceeded before the operation is completed, the module will
|
||||
error.
|
||||
default: 10
|
||||
ssh_keyfile:
|
||||
description:
|
||||
- Specifies the SSH key to use to authenticate the connection to
|
||||
the remote device. This value is the path to the
|
||||
key used to authenticate the SSH session. If the value is not specified
|
||||
in the task, the value of environment variable C(ANSIBLE_NET_SSH_KEYFILE)
|
||||
will be used instead.
|
||||
key used to authenticate the SSH session. If the value is not
|
||||
specified in the task, the value of environment variable
|
||||
C(ANSIBLE_NET_SSH_KEYFILE) will be used instead.
|
||||
gather_subset:
|
||||
version_added: "2.6"
|
||||
description:
|
||||
|
@ -231,7 +235,7 @@ class FactsBase(object):
|
|||
|
||||
class Default(FactsBase):
|
||||
|
||||
COMMANDS = ['display sys-info', 'display running-config']
|
||||
COMMANDS = ['show sys-info', 'show running-config']
|
||||
|
||||
def populate(self):
|
||||
super(Default, self).populate()
|
||||
|
@ -297,12 +301,12 @@ class Default(FactsBase):
|
|||
class Hardware(FactsBase):
|
||||
|
||||
COMMANDS = [
|
||||
'display running-config'
|
||||
'show running-config'
|
||||
]
|
||||
|
||||
def populate(self):
|
||||
super(Hardware, self).populate()
|
||||
data = self.run(['display process memory'])
|
||||
data = self.run(['show process memory'])
|
||||
data = to_text(data, errors='surrogate_or_strict').strip()
|
||||
data = data.replace(r"\n", "\n")
|
||||
if data:
|
||||
|
@ -331,7 +335,7 @@ class Hardware(FactsBase):
|
|||
|
||||
class Config(FactsBase):
|
||||
|
||||
COMMANDS = ['display running-config']
|
||||
COMMANDS = ['show running-config']
|
||||
|
||||
def populate(self):
|
||||
super(Config, self).populate()
|
||||
|
@ -342,7 +346,7 @@ class Config(FactsBase):
|
|||
|
||||
class Interfaces(FactsBase):
|
||||
|
||||
COMMANDS = ['display interface brief']
|
||||
COMMANDS = ['show interface brief']
|
||||
|
||||
def populate(self):
|
||||
super(Interfaces, self).populate()
|
||||
|
@ -350,10 +354,10 @@ class Interfaces(FactsBase):
|
|||
self.facts['all_ipv4_addresses'] = list()
|
||||
self.facts['all_ipv6_addresses'] = list()
|
||||
|
||||
data1 = self.run(['display interface status'])
|
||||
data1 = self.run(['show interface status'])
|
||||
data1 = to_text(data1, errors='surrogate_or_strict').strip()
|
||||
data1 = data1.replace(r"\n", "\n")
|
||||
data2 = self.run(['display interface mac-address'])
|
||||
data2 = self.run(['show interface mac-address'])
|
||||
data2 = to_text(data2, errors='surrogate_or_strict').strip()
|
||||
data2 = data2.replace(r"\n", "\n")
|
||||
lines1 = None
|
||||
|
@ -364,7 +368,7 @@ class Interfaces(FactsBase):
|
|||
lines2 = self.parse_interfaces(data2)
|
||||
if lines1 is not None and lines2 is not None:
|
||||
self.facts['interfaces'] = self.populate_interfaces(lines1, lines2)
|
||||
data3 = self.run(['display lldp neighbors'])
|
||||
data3 = self.run(['show lldp neighbors'])
|
||||
data3 = to_text(data3, errors='surrogate_or_strict').strip()
|
||||
data3 = data3.replace(r"\n", "\n")
|
||||
if data3:
|
||||
|
@ -372,9 +376,9 @@ class Interfaces(FactsBase):
|
|||
if lines3 is not None:
|
||||
self.facts['neighbors'] = self.populate_neighbors(lines3)
|
||||
|
||||
data4 = self.run(['display ip interface brief vrf all'])
|
||||
data5 = self.run(['display ipv6 interface brief vrf all'])
|
||||
data4 = to_text(data4, errors='surrogate_or_stdisplay').strip()
|
||||
data4 = self.run(['show ip interface brief vrf all'])
|
||||
data5 = self.run(['show ipv6 interface brief vrf all'])
|
||||
data4 = to_text(data4, errors='surrogate_or_strict').strip()
|
||||
data4 = data4.replace(r"\n", "\n")
|
||||
data5 = to_text(data5, errors='surrogate_or_strict').strip()
|
||||
data5 = data5.replace(r"\n", "\n")
|
||||
|
@ -484,14 +488,24 @@ class Interfaces(FactsBase):
|
|||
|
||||
def populate_neighbors(self, lines3):
|
||||
neighbors = dict()
|
||||
device_name = ''
|
||||
for line in lines3:
|
||||
neighborSplit = line.split()
|
||||
innerData = dict()
|
||||
innerData['Local Interface'] = neighborSplit[1].strip()
|
||||
innerData['Hold Time'] = neighborSplit[2].strip()
|
||||
innerData['Capability'] = neighborSplit[3].strip()
|
||||
innerData['Remote Port'] = neighborSplit[4].strip()
|
||||
neighbors[neighborSplit[0].strip()] = innerData
|
||||
count = len(neighborSplit)
|
||||
if count == 5:
|
||||
local_interface = neighborSplit[1].strip()
|
||||
innerData['Device Name'] = neighborSplit[0].strip()
|
||||
innerData['Hold Time'] = neighborSplit[2].strip()
|
||||
innerData['Capability'] = neighborSplit[3].strip()
|
||||
innerData['Remote Port'] = neighborSplit[4].strip()
|
||||
neighbors[local_interface] = innerData
|
||||
elif count == 4:
|
||||
local_interface = neighborSplit[0].strip()
|
||||
innerData['Hold Time'] = neighborSplit[1].strip()
|
||||
innerData['Capability'] = neighborSplit[2].strip()
|
||||
innerData['Remote Port'] = neighborSplit[3].strip()
|
||||
neighbors[local_interface] = innerData
|
||||
return neighbors
|
||||
|
||||
def parse_neighbors(self, neighbors):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue