-
Notifications
You must be signed in to change notification settings - Fork 66
Description
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.
{
"name":"vedge-ISR1100-6G-XE",
"templateClass":"cedge",
"displayName":"ISR 1100 6G (Cisco OS)",
"deviceType":"vedge",
"isCliSupported":true,
"templateSupported":true,
"deviceClass":"cisco-router",
"cpuCountAttribute":{
"enable":true,
"attributeField":"total_cpu_count"
},
...
},
ISR1100-6G-XE running Viptela OS.
{
"name":"vedge-ISR1100-6G",
"templateClass":"vedge",
"displayName":"ISR 1100 6G (Viptela OS)",
"deviceType":"vedge",
"isCliSupported":true,
"templateSupported":true,
"deviceClass":"viptela-router",
"cpuCountAttribute":{
"enable":true,
"attributeField":"linux_cpu_count"
},
...
}
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'.