def get_arp_table(self): arp_table = [] for entry in self.api('/ip/arp/print'): arp_table.append({ 'interface': entry['interface'], 'mac': cast_mac(entry['mac-address']), 'ip': cast_ip(entry['address']), 'age': float(-1), }) return arp_table
def get_arp_table(self): arp_table = [] for entry in self.api('/ip/arp/print'): arp_table.append( { 'interface': entry['interface'], 'mac': cast_mac(entry['mac-address']), 'ip': cast_ip(entry['address']), 'age': float(-1), } ) return arp_table
def ping(self, destination, source=C.PING_SOURCE, ttl=C.PING_TTL, timeout=C.PING_TIMEOUT, size=C.PING_SIZE, count=C.PING_COUNT, vrf=C.PING_VRF): params = { 'count': count, 'address': destination, 'ttl': ttl, 'size': size, 'count': count, } if source: params['src-address'] = source if vrf: params['routing-instance'] = vrf results = self.api('/ping', **params) ping_results = { 'probes_sent': max(row['sent'] for row in results), 'packet_loss': max(row['packet-loss'] for row in results), 'rtt_min': min( float(row.get('min-rtt', '-1ms').replace('ms', '')) for row in results), 'rtt_max': max( float(row.get('max-rtt', '-1ms').replace('ms', '')) for row in results), # Last result has calculated avg 'rtt_avg': float(results[-1:][0]['avg-rtt'].replace('ms', '')), 'rtt_stddev': float(-1), 'results': [] } for row in results: ping_results['results'].append({ 'ip_address': cast_ip(row['host']), 'rtt': float(row.get('time', '-1ms').replace('ms', '')), }) return dict(success=ping_results)
def iface_addresses(rows, ifname): ''' Return every found address and prefix length for given interface. example: { '192.168.1.1': {'prefix_length': 24} } ''' found = (row['address'].split('/', 1) for row in rows if row['interface'] == ifname) pairs = ((cast_ip(address), int(prefix_length)) for address, prefix_length in found) return dict((address, dict(prefix_length=length)) for address, length in pairs)
def iface_addresses(rows, ifname): ''' Return every found address and prefix length for given interface. example: { '192.168.1.1': {'prefix_length': 24} } ''' found = (row['address'].split('/', 1) for row in rows if row['interface'] == ifname) pairs = ((cast_ip(address), int(prefix_length)) for address, prefix_length in found) return dict( (address, dict(prefix_length=length)) for address, length in pairs)
def ping(self, destination, source=C.PING_SOURCE, ttl=C.PING_TTL, timeout=C.PING_TIMEOUT, size=C.PING_SIZE, count=C.PING_COUNT, vrf=C.PING_VRF): params = { 'count': count, 'address': destination, 'ttl': ttl, 'size': size, 'count': count, } if source: params['src-address'] = source if vrf: params['routing-instance'] = vrf results = self.api('/ping', **params) ping_results = { 'probes_sent': max(row['sent'] for row in results), 'packet_loss': max(row['packet-loss'] for row in results), 'rtt_min': min(float(row.get('min-rtt', '-1ms').replace('ms', '')) for row in results), 'rtt_max': max(float(row.get('max-rtt', '-1ms').replace('ms', '')) for row in results), # Last result has calculated avg 'rtt_avg': float(results[-1:][0]['avg-rtt'].replace('ms', '')), 'rtt_stddev': float(-1), 'results': [] } for row in results: ping_results['results'].append( { 'ip_address': cast_ip(row['host']), 'rtt': float(row.get('time', '-1ms').replace('ms', '')), } ) return dict(success=ping_results)