Open jdcarp opened 1 year ago
After a quick check, this issue appears to impact more than just 'get_ip_route_table'. From my looking this can impact the functionality of the following functions:
get_dhcp_interfaces get_eigrp_interfaces get_eigrp_routes get_eigrp_topology get_multicast_replicator get_multicast_rpf get_multicast_tunnel get_ospf_routes get_ospf_database get_ospf_database_summary get_ospf_process get_ospf_database_external
Issue:
Attempting to use 'get_ip_route_table' for a Cisco ISR1100-6G with Viptela OS device fails with:
Error 400 (bad_request) - Device data error: IPRoutes is not supported by ISR 1100 6G (Viptela OS)'
There appears to be a logic error in the def _get_device_type(self, system_ip) function. This function queries the '/devices/models' to return the following results for an ISR 1100 6g:
ISR1100-6G-XE running Cisco IOS.
ISR1100-6G-XE running Viptela OS.
def _get_device_type then uses the following logic to check for a match:
device_type = [device['deviceClass'] for device in result if device_model in device['name']][0]
The use of 'in' is improperly matching the "vedge-ISR1100-6G-XE" with deviceClass of 'cisco-router'. It should be matching the "vedge-ISR1100-6G" with device type of deviceClass of 'viptela-router'.