def get_traceroute_parsed_output(device, prefix): """ Get parsed output of traceroute command Args: device ('obj'): Device object prefix ('str'): Prefix address Returns: Dictionary: Parsed output of traceroute command Raises: None """ try: output = device.traceroute(addr=prefix) except SubCommandFailure as e: log.info("Could not find any traceroute information") return False parser_obj = Traceroute(device=device) try: parsed_ouput = parser_obj.parse(output=output) except SchemaEmptyParserError as e: log.info("Could find any traceroute information for prefix {address}". format(address=prefix)) return None return parsed_ouput
def get_traceroute_parsed_output(device, addr, vrf=None, proto=None, ingress=None, source=None, dscp=None, numeric=None, timeout=None, probe=None, minimum_ttl=None, maximum_ttl=None, port=None, style=None): """ Get parsed output of traceroute command Args: device ('obj'): Device object addr ('str'): Destination address proto ('str'): Protocol(ip/ipv6) ingress ('str'): Ingress traceroute source ('str'): Source address or interface dscp ('int'): DSCP Value numeric ('str'): Numeric display timeout ('int'): Timeout in seconds probe ('int'): Probe count minimum_ttl ('int'): Minimum Time to Live maximum_ttl ('int'): Maximum Time to Live port ('int'): Port Number style ('str'): Loose, Strict, Record, Timestamp, Verbose Returns: Dictionary: Parsed output of traceroute command Raises: None """ # kwargs is used to pass args that aren't "None" to traceroute() kwargs = {k: v for k, v in locals().items() if v} kwargs.pop('device') if vrf: kwargs.pop('vrf') kwargs['command'] = 'traceroute vrf {}'.format(vrf) try: output = device.traceroute(**kwargs) except SubCommandFailure as e: log.info("Could not find any traceroute information") return False parser_obj = Traceroute(device=device) try: parsed_ouput = parser_obj.parse(output=output) except SchemaEmptyParserError as e: log.info("Could find any traceroute information for prefix {address}". format(address=addr)) return None return parsed_ouput
def test_traceroute_golden6(self): self.maxDiff = None obj = Traceroute(device=self.device) parsed_output = obj.parse(output=self.golden_output6) self.assertEqual(parsed_output, self.golden_parsed_output6)
def test_traceroute_empty(self): obj = Traceroute(device=self.device) with self.assertRaises(SchemaEmptyParserError): parsed_output = obj.parse(output=self.empty_output)