summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnil Kumar Muraleedharan <amuraleedhar@lenovo.com>2018-09-12 20:01:45 +0530
committerNathaniel Case <this.is@nathanielca.se>2018-09-12 10:31:45 -0400
commitac58c36ad01d6cdfe2e5379498d45f1b7328e64b (patch)
tree885f6689c7efe9052e6acfe81b03fcabaa600c46
parentcbf2c2a00071b2791d5c98e4170bbface179fc5e (diff)
downloadansible-ac58c36ad01d6cdfe2e5379498d45f1b7328e64b.tar.gz
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
-rw-r--r--lib/ansible/modules/network/cnos/cnos_facts.py64
-rw-r--r--test/integration/targets/cnos_conditional_template/templates/demo_template.j25
-rw-r--r--test/integration/targets/cnos_config/templates/basic/config1.j22
-rw-r--r--test/integration/targets/cnos_template/templates/demo_template.j25
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_brief (renamed from test/units/modules/network/cnos/fixtures/display_interface_brief)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_mac-address (renamed from test/units/modules/network/cnos/fixtures/display_interface_mac-address)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_interface_status (renamed from test/units/modules/network/cnos/fixtures/display_interface_status)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all (renamed from test/units/modules/network/cnos/fixtures/display_ip_interface_brief_vrf_all)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all (renamed from test/units/modules/network/cnos/fixtures/display_ipv6_interface_brief_vrf_all)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_lldp_neighbors (renamed from test/units/modules/network/cnos/fixtures/display_lldp_neighbors)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_process_memory (renamed from test/units/modules/network/cnos/fixtures/display_process_memory)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_run (renamed from test/units/modules/network/cnos/fixtures/display_run)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_running-config (renamed from test/units/modules/network/cnos/fixtures/display_running-config)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_sys-info (renamed from test/units/modules/network/cnos/fixtures/display_sys-info)0
-rw-r--r--test/units/modules/network/cnos/fixtures/show_version (renamed from test/units/modules/network/cnos/fixtures/display_version)0
-rw-r--r--test/units/modules/network/cnos/test_cnos_command.py18
16 files changed, 51 insertions, 43 deletions
diff --git a/lib/ansible/modules/network/cnos/cnos_facts.py b/lib/ansible/modules/network/cnos/cnos_facts.py
index 5abcb23d15..034fdd024c 100644
--- a/lib/ansible/modules/network/cnos/cnos_facts.py
+++ b/lib/ansible/modules/network/cnos/cnos_facts.py
@@ -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):
diff --git a/test/integration/targets/cnos_conditional_template/templates/demo_template.j2 b/test/integration/targets/cnos_conditional_template/templates/demo_template.j2
index c9b8ca8386..63a47a6418 100644
--- a/test/integration/targets/cnos_conditional_template/templates/demo_template.j2
+++ b/test/integration/targets/cnos_conditional_template/templates/demo_template.j2
@@ -2,14 +2,11 @@
vlan {{item.vlanid1}}
name anil
exit
-#config d
interface ethernet {{item.slot_chassis_number1}}
-#aggregation-group {{item.portchannel_interface_number1}} mode {{item.portchannel_mode1}}
description anil
mtu 600
exit
-#config d
-interface port-aggregation {{item.portchannel_interface_number1}}
+interface port-channel {{item.portchannel_interface_number1}}
shut
lacp suspend-individual
no shut
diff --git a/test/integration/targets/cnos_config/templates/basic/config1.j2 b/test/integration/targets/cnos_config/templates/basic/config1.j2
index 05305af622..e6c4c4fe61 100644
--- a/test/integration/targets/cnos_config/templates/basic/config1.j2
+++ b/test/integration/targets/cnos_config/templates/basic/config1.j2
@@ -1,4 +1,4 @@
vlan 33
- name panil
+ name sunil
flood ipv4
state active
diff --git a/test/integration/targets/cnos_template/templates/demo_template.j2 b/test/integration/targets/cnos_template/templates/demo_template.j2
index c9b8ca8386..63a47a6418 100644
--- a/test/integration/targets/cnos_template/templates/demo_template.j2
+++ b/test/integration/targets/cnos_template/templates/demo_template.j2
@@ -2,14 +2,11 @@
vlan {{item.vlanid1}}
name anil
exit
-#config d
interface ethernet {{item.slot_chassis_number1}}
-#aggregation-group {{item.portchannel_interface_number1}} mode {{item.portchannel_mode1}}
description anil
mtu 600
exit
-#config d
-interface port-aggregation {{item.portchannel_interface_number1}}
+interface port-channel {{item.portchannel_interface_number1}}
shut
lacp suspend-individual
no shut
diff --git a/test/units/modules/network/cnos/fixtures/display_interface_brief b/test/units/modules/network/cnos/fixtures/show_interface_brief
index 67cee78761..67cee78761 100644
--- a/test/units/modules/network/cnos/fixtures/display_interface_brief
+++ b/test/units/modules/network/cnos/fixtures/show_interface_brief
diff --git a/test/units/modules/network/cnos/fixtures/display_interface_mac-address b/test/units/modules/network/cnos/fixtures/show_interface_mac-address
index d66bea1531..d66bea1531 100644
--- a/test/units/modules/network/cnos/fixtures/display_interface_mac-address
+++ b/test/units/modules/network/cnos/fixtures/show_interface_mac-address
diff --git a/test/units/modules/network/cnos/fixtures/display_interface_status b/test/units/modules/network/cnos/fixtures/show_interface_status
index dae90765ff..dae90765ff 100644
--- a/test/units/modules/network/cnos/fixtures/display_interface_status
+++ b/test/units/modules/network/cnos/fixtures/show_interface_status
diff --git a/test/units/modules/network/cnos/fixtures/display_ip_interface_brief_vrf_all b/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all
index 4f3a22a12d..4f3a22a12d 100644
--- a/test/units/modules/network/cnos/fixtures/display_ip_interface_brief_vrf_all
+++ b/test/units/modules/network/cnos/fixtures/show_ip_interface_brief_vrf_all
diff --git a/test/units/modules/network/cnos/fixtures/display_ipv6_interface_brief_vrf_all b/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all
index f229566a33..f229566a33 100644
--- a/test/units/modules/network/cnos/fixtures/display_ipv6_interface_brief_vrf_all
+++ b/test/units/modules/network/cnos/fixtures/show_ipv6_interface_brief_vrf_all
diff --git a/test/units/modules/network/cnos/fixtures/display_lldp_neighbors b/test/units/modules/network/cnos/fixtures/show_lldp_neighbors
index e733d39c3b..e733d39c3b 100644
--- a/test/units/modules/network/cnos/fixtures/display_lldp_neighbors
+++ b/test/units/modules/network/cnos/fixtures/show_lldp_neighbors
diff --git a/test/units/modules/network/cnos/fixtures/display_process_memory b/test/units/modules/network/cnos/fixtures/show_process_memory
index f4b7fe25eb..f4b7fe25eb 100644
--- a/test/units/modules/network/cnos/fixtures/display_process_memory
+++ b/test/units/modules/network/cnos/fixtures/show_process_memory
diff --git a/test/units/modules/network/cnos/fixtures/display_run b/test/units/modules/network/cnos/fixtures/show_run
index 4367c90fe5..4367c90fe5 100644
--- a/test/units/modules/network/cnos/fixtures/display_run
+++ b/test/units/modules/network/cnos/fixtures/show_run
diff --git a/test/units/modules/network/cnos/fixtures/display_running-config b/test/units/modules/network/cnos/fixtures/show_running-config
index 4367c90fe5..4367c90fe5 100644
--- a/test/units/modules/network/cnos/fixtures/display_running-config
+++ b/test/units/modules/network/cnos/fixtures/show_running-config
diff --git a/test/units/modules/network/cnos/fixtures/display_sys-info b/test/units/modules/network/cnos/fixtures/show_sys-info
index a61b567844..a61b567844 100644
--- a/test/units/modules/network/cnos/fixtures/display_sys-info
+++ b/test/units/modules/network/cnos/fixtures/show_sys-info
diff --git a/test/units/modules/network/cnos/fixtures/display_version b/test/units/modules/network/cnos/fixtures/show_version
index 0db1ff132a..0db1ff132a 100644
--- a/test/units/modules/network/cnos/fixtures/display_version
+++ b/test/units/modules/network/cnos/fixtures/show_version
diff --git a/test/units/modules/network/cnos/test_cnos_command.py b/test/units/modules/network/cnos/test_cnos_command.py
index f2c0b7318c..144eab9c8f 100644
--- a/test/units/modules/network/cnos/test_cnos_command.py
+++ b/test/units/modules/network/cnos/test_cnos_command.py
@@ -50,7 +50,7 @@ class TestCnosCommandModule(TestCnosModule):
try:
command = item
except ValueError:
- command = 'display version'
+ command = 'show version'
filename = str(command).replace(' ', '_')
output.append(load_fixture(filename))
return output
@@ -58,49 +58,49 @@ class TestCnosCommandModule(TestCnosModule):
self.run_commands.side_effect = load_from_file
def test_cnos_command_simple(self):
- set_module_args(dict(commands=['display version']))
+ set_module_args(dict(commands=['show version']))
result = self.execute_module()
self.assertEqual(len(result['stdout']), 1)
self.assertTrue(result['stdout'][0].startswith('Lenovo Networking Operating System (NOS) Software'))
def test_cnos_command_multiple(self):
- set_module_args(dict(commands=['display version', 'display running-config']))
+ set_module_args(dict(commands=['show version', 'show running-config']))
result = self.execute_module()
self.assertEqual(len(result['stdout']), 2)
self.assertTrue(result['stdout'][0].startswith('Lenovo Networking Operating System (NOS) Software'))
def test_cnos_command_wait_for(self):
wait_for = 'result[0] contains "Lenovo Networking Operating System (NOS) Software"'
- set_module_args(dict(commands=['display version'], wait_for=wait_for))
+ set_module_args(dict(commands=['show version'], wait_for=wait_for))
self.execute_module()
def test_cnos_command_wait_for_fails(self):
wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['display version'], wait_for=wait_for))
+ set_module_args(dict(commands=['show version'], wait_for=wait_for))
self.execute_module(failed=True)
self.assertEqual(self.run_commands.call_count, 10)
def test_cnos_command_retries(self):
wait_for = 'result[0] contains "test string"'
- set_module_args(dict(commands=['display version'], wait_for=wait_for, retries=2))
+ set_module_args(dict(commands=['show version'], wait_for=wait_for, retries=2))
self.execute_module(failed=True)
self.assertEqual(self.run_commands.call_count, 2)
def test_cnos_command_match_any(self):
wait_for = ['result[0] contains "Lenovo Networking Operating System (NOS) Software"',
'result[0] contains "test string"']
- set_module_args(dict(commands=['display version'], wait_for=wait_for, match='any'))
+ set_module_args(dict(commands=['show version'], wait_for=wait_for, match='any'))
self.execute_module()
def test_cnos_command_match_all(self):
wait_for = ['result[0] contains "Lenovo Networking Operating System (NOS) Software"',
'result[0] contains "Lenovo"']
- set_module_args(dict(commands=['display version'], wait_for=wait_for, match='all'))
+ set_module_args(dict(commands=['show version'], wait_for=wait_for, match='all'))
self.execute_module()
def test_cnos_command_match_all_failure(self):
wait_for = ['result[0] contains "Lenovo ENOS"',
'result[0] contains "test string"']
- commands = ['display version', 'display run']
+ commands = ['show version', 'show run']
set_module_args(dict(commands=commands, wait_for=wait_for, match='all'))
self.execute_module(failed=True)