def test_set_members(self): for dut in self.duts: et1 = random_interface(dut) et2 = random_interface(dut, exclude=[et1]) et3 = random_interface(dut, exclude=[et1, et2]) dut.config(['no interface Port-Channel1', 'default interface %s' % et1, 'interface %s' % et1, 'channel-group 1 mode on', 'default interface %s' % et2, 'interface %s' % et2, 'channel-group 1 mode on', 'default interface %s' % et3]) api = dut.api('interfaces') result = api.set_members('Port-Channel1', [et1, et3]) self.assertTrue(result, 'dut=%s' % dut) cmd = 'show running-config interfaces %s' # check to make sure et1 is still in the lag and et3 was # added to the lag for interface in [et1, et3]: config = dut.run_commands(cmd % interface, 'text') self.assertIn('channel-group 1 mode on', config[0]['output'], 'dut=%s' % dut) # checks to make sure et2 was remvoved form the lag config = dut.run_commands(cmd % et2, 'text') self.assertNotIn('channel-group 1 mode on', config[0]['output'], 'dut=%s' % dut)
def test_create_and_delete_portchannel_sub_interface(self): for dut in self.duts: et1 = random_interface(dut) et2 = random_interface(dut, exclude=[et1]) dut.config(['no interface Port-Channel1', 'default interface %s' % et1, 'interface %s' % et1, 'channel-group 1 mode on', 'default interface %s' % et2, 'interface %s' % et2, 'channel-group 1 mode on']) # Create subint Port-Channel1.1 api = dut.api('interfaces') result = api.create('Port-Channel1.1') self.assertTrue(result, 'dut=%s' % dut) command = 'show running-config interfaces Port-Channel1.1' output = dut.run_commands(command, encoding='text') self.assertIn('Port-Channel1.1', output[0]['output']) # Delete subint Port-Channel1.1 result = dut.api('interfaces').delete('Port-Channel1.1') self.assertTrue(result) output = dut.run_commands(command, encoding='text') self.assertEqual(output[0]['output'], '') # Remove port-channel and default interfaces dut.config(['no interface Port-Channel1', 'default interface %s' % et1, 'default interface %s' % et2])
def test_set_members_with_mode(self): for dut in self.duts: et1 = random_interface(dut) et2 = random_interface(dut, exclude=[et1]) et3 = random_interface(dut, exclude=[et1, et2]) dut.config([ 'no interface Port-Channel1', 'default interface %s' % et1, 'interface %s' % et1, 'channel-group 1 mode on', 'default interface %s' % et2, 'interface %s' % et2, 'channel-group 1 mode on', 'default interface %s' % et3 ]) api = dut.api('interfaces') result = api.set_members('Port-Channel1', [et1, et3], mode='active') self.assertTrue(result, 'dut=%s' % dut) cmd = 'show running-config interfaces %s' # check to make sure et1 is still in the lag and et3 was # added to the lag for interface in [et1, et3]: config = dut.run_commands(cmd % interface, 'text') self.assertIn('channel-group 1 mode active', config[0]['output'], 'dut=%s' % dut) # checks to make sure et2 was remvoved form the lag config = dut.run_commands(cmd % et2, 'text') self.assertNotIn('channel-group 1 mode on', config[0]['output'], 'dut=%s' % dut)
def test_getall(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) result = dut.api('switchports').getall() self.assertIsInstance(result, dict, 'dut=%s' % dut) self.assertIn(intf, result, 'dut=%s' % dut)
def test_set_bpduguard_to_true(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) resource = dut.api('stp').interfaces result = resource.set_bpduguard(intf, True) self.assertTrue(result, 'dut=%s' % dut)
def test_get_interface_wo_ip_adddress(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'no switchport']) result = dut.api('ipinterfaces').get(intf) self.assertEqual(result['address'], '0.0.0.0')
def test_set_portfast_to_true(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) resource = dut.api('stp').interfaces result = resource.set_portfast(intf, True) self.assertTrue(result, 'dut=%s' % dut)
def test_set_vrf(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) # Verify set_vrf returns False if no vrf by name is configured result = dut.api('interfaces').set_vrf(intf, 'test') self.assertFalse(result) if dut.version_number >= '4.23': dut.config('vrf instance test') else: dut.config('vrf definition test') # Verify interface has vrf applied result = dut.api('interfaces').set_vrf(intf, 'test') self.assertTrue(result) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') if dut.version_number >= '4.23': self.assertIn('vrf test', config[0]['output']) else: self.assertIn('vrf forwarding test', config[0]['output']) # Verify interface has vrf removed result = dut.api('interfaces').set_vrf(intf, 'test', disable=True) self.assertTrue(result) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') if dut.version_number >= '4.23': self.assertIn('vrf test', config[0]['output']) # Remove test vrf dut.config('no vrf instance test') else: self.assertIn('vrf forwarding test', config[0]['output']) # Remove test vrf dut.config('no vrf definition test')
def test_get_returns_none(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'no switchport']) result = dut.api('switchports').get(intf) self.assertIsNone(result)
def test_set_portfast_to_edge(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) resource = dut.api('stp').interfaces result = resource.set_portfast_type(intf, 'edge') self.assertTrue(result, 'dut=%s' % dut)
def test_set_bpdugard_to_no(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'spanning-tree bpduguard enable']) resource = dut.api('stp').interfaces result = resource.set_bpduguard(intf, disable=True) self.assertTrue(result, 'dut=%s' % dut)
def test_set_portfast_to_false(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'spanning-tree portfast']) resource = dut.api('stp').interfaces result = resource.set_portfast(intf, False) self.assertTrue(result, 'dut=%s' % dut)
def test_getall(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf]) result = dut.api('interfaces').getall() self.assertIsInstance(result, dict) for intf in [intf, 'Management1']: self.assertIn(intf, result)
def test_getall(self): for dut in self.duts: rintf = random_interface(dut) dut.config(['default interface %s' % rintf]) result = dut.api('interfaces').getall() self.assertIsInstance(result, dict) for intf in [rintf, 'Management1']: self.assertIn(intf, result)
def test_default(self): for dut in self.duts: intf = random_interface(dut) dut.config(['interface %s' % intf, 'shutdown']) result = dut.api('interfaces').default(intf) self.assertTrue(result) config = dut.run_commands('show interfaces %s' % intf) config = config[0]['interfaces'][intf] self.assertEqual(config['interfaceStatus'], 'connected')
def test_set_description(self): for dut in self.duts: text = random_string() intf = random_interface(dut) result = dut.api('interfaces').set_description(intf, text) self.assertTrue(result) config = dut.run_commands('show interfaces %s' % intf) config = config[0]['interfaces'][intf] self.assertEqual(config['description'], text)
def test_get_interface_wo_ip_adddress(self): for dut in self.duts: intf = random_interface(dut) dut.config([ 'default interface %s' % intf, 'interface %s' % intf, 'no switchport' ]) result = dut.api('ipinterfaces').get(intf) self.assertIsNone(result['address'])
def test_set_sflow_default(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) result = dut.api('interfaces').set_sflow(intf, default=True) self.assertTrue(result) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertNotIn('no sflow enable', config[0]['output'])
def test_get_returns_none(self): for dut in self.duts: intf = random_interface(dut) dut.config([ 'default interface %s' % intf, 'interface %s' % intf, 'no switchport' ]) result = dut.api('switchports').get(intf) self.assertIsNone(result)
def test_set_sflow_disable(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) result = dut.api('interfaces').set_sflow(intf, False) self.assertTrue(result) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertIn('no sflow enable', config[0]['output'])
def test_delete_and_return_true(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) result = dut.api('switchports').delete(intf) self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertIn('no switchport', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_get(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'no switchport', 'ip address 99.99.99.99/24', 'mtu 1800']) result = dut.api('ipinterfaces').get(intf) values = dict(name=intf, address='99.99.99.99/24', mtu=1800) self.assertEqual(values, result, 'dut=%s' % dut)
def test_get(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) result = dut.api('switchports').get(intf) self.assertIsInstance(result, dict) self.assertEqual(result['mode'], 'access') self.assertEqual(result['access_vlan'], '1') self.assertEqual(result['trunk_native_vlan'], '1') self.assertEqual(result['trunk_allowed_vlans'], '1-4094')
def test_set_description_negate(self): for dut in self.duts: text = random_string() intf = random_interface(dut) dut.config(['interface %s' % intf, 'description %s' % text]) result = dut.api('interfaces').set_description(intf, disable=True) self.assertTrue(result) config = dut.run_commands('show interfaces %s' % intf) config = config[0]['interfaces'][intf] self.assertEqual(config['description'], '')
def test_delete_and_return_true(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) result = dut.api('switchports').delete(intf) self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertIn('no switchport', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_get(self): for dut in self.duts: intf = random_interface(dut) dut.config([ 'default interface %s' % intf, 'interface %s' % intf, 'no switchport', 'ip address 99.98.99.99/24', 'mtu 1800' ]) result = dut.api('ipinterfaces').get(intf) values = dict(name=intf, address='99.98.99.99/24', mtu=1800) self.assertEqual(values, result, 'dut=%s' % dut)
def test_set_bpduguard_to_true(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) resource = dut.api('spanningtree').interfaces result = resource.set_bpduguard(intf, True) self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertIn('spanning-tree bpduguard enable', config[0]['output'], 'dut=%s' % dut)
def test_set_portfast_to_network(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) resource = dut.api('spanningtree').interfaces result = resource.set_portfast(intf, 'network') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertIn('spanning-tree portfast network\n', config[0]['output'], 'dut=%s' % dut)
def test_set_access_vlan_to_value(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'vlan 100']) resource = dut.api('switchports') result = resource.set_access_vlan(intf, '100') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertIn('switchport access vlan 100', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_delete_and_return_true(self): for dut in self.duts: intf = random_interface(dut) dut.config(['interface %s' % intf, 'ip address 199.1.1.1/24']) resource = dut.api('ipinterfaces') result = resource.delete(intf) self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertNotIn('ip address 199.1.1.1/24', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_set_access_vlan_to_value(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'vlan 100']) resource = dut.api('switchports') result = resource.set_access_vlan(intf, '100') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertIn('switchport access vlan 100', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_delete_and_return_true(self): for dut in self.duts: intf = random_interface(dut) dut.config(['interface %s' % intf, 'ip address 199.1.1.1/24']) resource = dut.api('ipinterfaces') result = resource.delete(intf) self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertNotIn('ip address 199.1.1.1/24', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_set_mtu_value_as_string(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'ip address 111.111.111.111/24']) resource = dut.api('ipinterfaces') result = resource.set_mtu(intf, '2000') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertIn('mtu 2000', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_set_trunk_allowed_vlans(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'switchport mode trunk']) resource = dut.api('switchports') result = resource.set_trunk_allowed_vlans(intf, '1,10,100') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertIn('switchport trunk allowed vlan 1,10,100', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_set_and_unset_portchannel_sub_intf_encapsulation(self): for dut in self.duts: et1 = random_interface(dut) et2 = random_interface(dut, exclude=[et1]) dut.config([ 'no interface Port-Channel1', 'default interface %s' % et1, 'interface %s' % et1, 'channel-group 1 mode on', 'default interface %s' % et2, 'interface %s' % et2, 'channel-group 1 mode on' ]) # Create subint Port-Channel1.1 api = dut.api('interfaces') result = api.create('Port-Channel1.1') self.assertTrue(result) # Set encapsulation result = api.set_encapsulation('Port-Channel1.1', 4) self.assertTrue(result) command = 'show running-config interfaces Port-Channel1.1' output = dut.run_commands(command, encoding='text') encap = 'encapsulation dot1q vlan 4' self.assertIn(encap, output[0]['output']) # Unset encapsulation result = api.set_encapsulation('Port-Channel1.1', 4, default=True) self.assertTrue(result) output = dut.run_commands(command, encoding='text') self.assertNotIn(encap, output[0]['output']) # Delete subint Port-Channel1.1 result = dut.api('interfaces').delete('Port-Channel1.1') self.assertTrue(result) output = dut.run_commands(command, encoding='text') self.assertEqual(output[0]['output'], '') # Remove port-channel and default interfaces dut.config([ 'no interface Port-Channel1', 'default interface %s' % et1, 'default interface %s' % et2 ])
def test_set_address(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'no switchport']) resource = dut.api('ipinterfaces') result = resource.set_address(intf, '111.111.111.111/24') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertIn('ip address 111.111.111.111/24', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_set_mtu_value_as_string(self): for dut in self.duts: intf = random_interface(dut) dut.config([ 'default interface %s' % intf, 'interface %s' % intf, 'ip address 111.111.111.111/24' ]) resource = dut.api('ipinterfaces') result = resource.set_mtu(intf, '2000') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertIn('mtu 2000', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_set_and_unset_portchannel_sub_intf_encapsulation(self): for dut in self.duts: et1 = random_interface(dut) et2 = random_interface(dut, exclude=[et1]) dut.config(['no interface Port-Channel1', 'default interface %s' % et1, 'interface %s' % et1, 'channel-group 1 mode on', 'default interface %s' % et2, 'interface %s' % et2, 'channel-group 1 mode on']) # Create subint Port-Channel1.1 api = dut.api('interfaces') result = api.create('Port-Channel1.1') self.assertTrue(result) # Set encapsulation result = api.set_encapsulation('Port-Channel1.1', 4) self.assertTrue(result) command = 'show running-config interfaces Port-Channel1.1' output = dut.run_commands(command, encoding='text') encap = 'encapsulation dot1q vlan 4' self.assertIn(encap, output[0]['output']) # Unset encapsulation result = api.set_encapsulation('Port-Channel1.1', 4, default=True) self.assertTrue(result) output = dut.run_commands(command, encoding='text') self.assertNotIn(encap, output[0]['output']) # Delete subint Port-Channel1.1 result = dut.api('interfaces').delete('Port-Channel1.1') self.assertTrue(result) output = dut.run_commands(command, encoding='text') self.assertEqual(output[0]['output'], '') # Remove port-channel and default interfaces dut.config(['no interface Port-Channel1', 'default interface %s' % et1, 'default interface %s' % et2])
def test_set_address(self): for dut in self.duts: intf = random_interface(dut) dut.config([ 'default interface %s' % intf, 'interface %s' % intf, 'no switchport' ]) resource = dut.api('ipinterfaces') result = resource.set_address(intf, '111.111.111.111/24') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertIn('ip address 111.111.111.111/24', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_set_trunk_allowed_vlans(self): for dut in self.duts: intf = random_interface(dut) dut.config([ 'default interface %s' % intf, 'interface %s' % intf, 'switchport mode trunk' ]) resource = dut.api('switchports') result = resource.set_trunk_allowed_vlans(intf, '1,10,100') self.assertTrue(result, 'dut=%s' % dut) config = dut.run_commands( 'show running-config interfaces %s' % intf, 'text') self.assertIn('switchport trunk allowed vlan 1,10,100', config[0]['output'], 'dut=%s' % dut) dut.config('default interface %s' % intf)
def test_get(self): for dut in self.duts: intf = random_interface(dut) dut.config([ 'default interface %s' % intf, 'interface %s' % intf, 'description this is a test', 'flowcontrol send off', 'flowcontrol receive on', 'no sflow enable' ]) result = dut.api('interfaces').get(intf) self.assertIsInstance(result, dict) self.assertEqual(result['description'], 'this is a test') self.assertFalse(result['shutdown']) self.assertEqual(result['flowcontrol_send'], 'off') self.assertEqual(result['flowcontrol_receive'], 'on') self.assertFalse(result['sflow'])
def test_get(self): for dut in self.duts: intf = random_interface(dut) dut.config(['default interface %s' % intf, 'interface %s' % intf, 'description this is a test', 'flowcontrol send off', 'flowcontrol receive on', 'no sflow enable']) result = dut.api('interfaces').get(intf) self.assertIsInstance(result, dict) self.assertEqual(result['description'], 'this is a test') self.assertFalse(result['shutdown']) self.assertEqual(result['flowcontrol_send'], 'off') self.assertEqual(result['flowcontrol_receive'], 'on') self.assertFalse(result['sflow'])
def test_set_vrf(self): for dut in self.duts: intf = random_interface(dut) dut.config('default interface %s' % intf) # Verify set_vrf returns False if no vrf by name is configured result = dut.api('interfaces').set_vrf(intf, 'test') self.assertFalse(result) dut.config('vrf definition test') # Verify interface has vrf applied result = dut.api('interfaces').set_vrf(intf, 'test') self.assertTrue(result) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertIn('vrf forwarding test', config[0]['output']) # Verify interface has vrf removed result = dut.api('interfaces').set_vrf(intf, 'test', disable=True) self.assertTrue(result) config = dut.run_commands('show running-config interfaces %s' % intf, 'text') self.assertNotIn('vrf forwarding test', config[0]['output']) # Remove test vrf dut.config('no vrf definition test')
def test_set_encapsulation_non_subintf_exception(self): for dut in self.duts: with self.assertRaises(NotImplementedError): dut.api('interfaces').set_encapsulation(random_interface(dut), 1)
def test_delete_ethernet_raises_not_implemented_error(self): with self.assertRaises(NotImplementedError): for dut in self.duts: dut.api('interfaces').delete(random_interface(dut))