Skip to content

Improper identification of 'viptela-router' and 'cisco-router' causes commands to fail. #172

@jdcarp

Description

@jdcarp

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'.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions