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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions