def test_learn_config(self): testbed = Testbed() dev = Device(testbed=testbed, name='PE2', os='nxos') dev.custom = {'abstraction': {'order': ['os'], 'context': 'cli'}} dev.mapping = {} dev.mapping['cli'] = 'cli' # Give the device as a connection type # This is done in order to call the parser on the output provided dev.connectionmgr.connections['cli'] = dev golden_output = { 'return_value': ''' N95_2_R2# show run pim !Command: show running-config pim !Time: Wed Aug 15 14:45:52 2018 version 7.0(3)I7(3) feature pim ip pim bsr bsr-candidate loopback0 priority 128 ip pim rp-address 6.6.6.6 group-list 234.0.0.0/8 ip pim rp-address 6.6.6.6 group-list 239.1.1.0/24 bidir ip pim rp-address 26.26.26.26 group-list 237.0.0.0/8 ip pim rp-address 126.126.126.126 group-list 238.0.0.0/8 ip pim bsr rp-candidate loopback0 group-list 235.0.0.0/8 priority 128 ip pim send-rp-announce loopback0 group-list 236.0.0.0/8 ip pim send-rp-discovery loopback0 ip pim ssm range 232.0.0.0/8 ip pim anycast-rp 126.126.126.126 2.2.2.2 ip pim anycast-rp 126.126.126.126 6.6.6.6 ip pim bsr forward listen ip pim register-source loopback0 vrf context VRF1 ip pim bsr bsr-candidate loopback11 priority 128 ip pim rp-address 6.6.6.6 group-list 234.0.0.0/8 ip pim rp-address 6.6.6.6 group-list 239.1.1.0/24 bidir ip pim rp-address 26.26.26.26 group-list 237.0.0.0/8 ip pim rp-address 126.126.126.126 group-list 238.0.0.0/8 ip pim bsr rp-candidate loopback11 group-list 235.0.0.0/8 priority 128 ip pim send-rp-announce loopback11 group-list 236.0.0.0/8 ip pim send-rp-discovery loopback11 ip pim ssm range 232.0.0.0/8 ip pim anycast-rp 126.126.126.126 2.2.2.2 ip pim anycast-rp 126.126.126.126 6.6.6.6 ip pim bsr forward listen ip pim register-source loopback11 interface loopback0 ip pim sparse-mode ''' } golden_output_vrf = ''' N95_2_R2# show run pim | inc vrf vrf context VRF1 ''' golden_output_vrf6 = ''' N95_2_R2# show run pim6 | inc vrf vrf context VRF1 ''' golden_output_feature = ''' N95_2_R2# show run pim | inc feature feature pim ''' golden_output_feature6 = ''' N95_2_R2# show run pim6 | inc feature feature pim6 ''' golden_output_auto_rp = ''' N95_2_R2# show run pim | sec '^i' | inc send-rp-announce ip pim send-rp-announce loopback0 group-list 236.0.0.0/8 ''' golden_output_auto_rp_vrf = ''' N95_2_R2# show run pim | sec VRF1 | inc send-rp-announce ip pim send-rp-announce loopback11 group-list 236.0.0.0/8 ''' pim = Pim() outputs[ 'show running-config pim | inc feature'] = golden_output_feature outputs[ 'show running-config pim6 | inc feature'] = golden_output_feature6 outputs['show running-config pim | inc vrf'] = golden_output_vrf outputs['show running-config pim6 | inc vrf'] = golden_output_vrf6 outputs[ "show running-config pim | sec '^i' | inc send-rp-announce"] = golden_output_auto_rp outputs[ "show running-config pim | sec VRF1 | inc send-rp-announce"] = golden_output_auto_rp_vrf # Return outputs above as inputs to parser when called dev.execute = Mock() dev.execute.side_effect = mapper learn = Pim.learn_config( device=dev, attributes=[ 'pim[vrf_attr][default][address_family_attr][ipv4][send_rp_announce_intf]' ]) self.assertEqual( learn[0].device_attr[dev].vrf_attr['default']. address_family_attr['ipv4'].send_rp_announce_intf, 'loopback0') self.assertEqual( learn[0].device_attr[dev].vrf_attr['default']. address_family_attr['ipv4'].send_rp_announce_group_list, None) learn = Pim.learn_config(device=dev) self.assertEqual( learn[0].device_attr[dev].vrf_attr['default']. address_family_attr['ipv4'].send_rp_announce_intf, 'loopback0') self.assertEqual( learn[0].device_attr[dev].vrf_attr['default']. address_family_attr['ipv4'].send_rp_announce_group_list, '236.0.0.0/8') self.assertEqual( learn[0].device_attr[dev].vrf_attr['VRF1']. address_family_attr['ipv4'].send_rp_announce_intf, 'loopback11') self.assertEqual( learn[0].device_attr[dev].vrf_attr['VRF1']. address_family_attr['ipv4'].send_rp_announce_group_list, '236.0.0.0/8')
def test_learn_config(self): testbed = Testbed() dev = Device(testbed=testbed, name='PE2', os='nxos') dev.custom = {'abstraction': {'order': ['os'], 'context': 'cli'}} dev.mapping = {} dev.mapping['cli'] = 'cli' # Give the device as a connection type # This is done in order to call the parser on the output provided dev.connectionmgr.connections['cli'] = dev golden_output = { 'return_value': ''' N95_2_R2# show run msdp !Command: show running-config msdp !Time: Mon Aug 27 20:17:11 2018 version 7.0(3)I7(3) feature msdp ip msdp description 6.6.6.6 test description ip msdp keepalive 6.6.6.6 50 60 ip msdp reconnect-interval 15 vrf context VRF1 ip msdp description 6.6.6.6 test description on VRF1 ''' } golden_output_vrf = ''' N95_2_R2# show run pim | inc vrf vrf context VRF1 ''' golden_output_reconnect = ''' N95_2_R2# show run msdp | sec '^i' | inc reconnect-interval ip msdp reconnect-interval 15 ''' golden_output_reconnect_vrf = ''' N95_2_R2# show run msdp | sec VRF1 | inc reconnect-interval ''' golden_output_description = ''' N95_2_R2# show run msdp | sec '^i | inc description ip msdp description 6.6.6.6 test description ''' golden_output_description_vrf = ''' N95_2_R2# show run msdp | sec VRF1 | inc description ip msdp description 6.6.6.6 test description on VRF1 ''' golden_output_keepalive = ''' N95_2_R2# show run msdp | sec '^i' | inc keepalive ip msdp keepalive 6.6.6.6 50 60 ''' golden_output_keepalive_vrf = ''' N95_2_R2# show run msdp | sec VRF1 | inc keepalive ''' golden_output_originator_id = ''' N95_2_R2# show run msdp | sec '^i' | inc originator-id ip msdp originator-id loopback0 ''' golden_output_originator_id_vrf = ''' N95_2_R2# show run msdp | sec VRF1 | inc originator-id ip msdp originator-id loopback11 ''' golden_output_connect_source = ''' N95_2_R2# show run msdp | sec '^i' | inc originator-id ip msdp peer 6.6.6.6 connect-source loopback0 ''' golden_output_connect_source_vrf = ''' N95_2_R2# show run msdp | sec VRF1 | inc originator-id ip msdp peer 6.6.6.6 connect-source loopback11 remote-as 234 ''' msdp = Msdp() outputs['show running-config msdp | inc vrf'] = golden_output_vrf outputs[ "show running-config msdp | sec '^i' | inc reconnect-interval"] = golden_output_reconnect outputs[ "show running-config msdp | sec VRF1 | inc reconnect-interval"] = golden_output_reconnect_vrf outputs[ "show running-config msdp | sec '^i' | inc description"] = golden_output_description outputs[ "show running-config msdp | sec VRF1 | inc description"] = golden_output_description_vrf outputs[ "show running-config msdp | sec '^i' | inc keepalive"] = golden_output_keepalive outputs[ "show running-config msdp | sec VRF1 | inc keepalive"] = golden_output_keepalive_vrf outputs[ "show running-config msdp | sec '^i' | inc originator-id"] = golden_output_originator_id outputs[ "show running-config msdp | sec VRF1 | inc originator-id"] = golden_output_originator_id_vrf outputs[ "show running-config msdp | sec '^i' | inc connect-source"] = golden_output_connect_source outputs[ "show running-config msdp | sec VRF1 | inc connect-source"] = golden_output_connect_source_vrf # Return outputs above as inputs to parser when called dev.execute = Mock() dev.execute.side_effect = mapper learn = Msdp.learn_config( device=dev, attributes=[ 'msdp[vrf_attr][default][peer_attr][(.*)][description]' ]) self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .peer_attr['6.6.6.6'].description, 'test description') self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .peer_attr['6.6.6.6'].keepalive_interval, None) learn = Msdp.learn_config(device=dev) self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .peer_attr['6.6.6.6'].keepalive_interval, 50) self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .peer_attr['6.6.6.6'].holdtime_interval, 60) self.assertEqual(learn[0].device_attr[dev].vrf_attr['VRF1']\ .peer_attr['6.6.6.6'].description, 'test description on VRF1') self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .peer_attr['6.6.6.6'].description, 'test description') self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .originating_rp, 'loopback0') self.assertEqual(learn[0].device_attr[dev].vrf_attr['VRF1']\ .originating_rp, 'loopback11') self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .peer_attr['6.6.6.6'].connected_source, 'loopback0') self.assertEqual(learn[0].device_attr[dev].vrf_attr['VRF1']\ .peer_attr['6.6.6.6'].connected_source, 'loopback11') self.assertEqual(learn[0].device_attr[dev].vrf_attr['VRF1']\ .peer_attr['6.6.6.6'].peer_as, '234') self.assertEqual(learn[0].device_attr[dev].vrf_attr['default']\ .global_connect_retry_interval, 15)