Collect IPv6 address during introspection

This patch adds support to retrieve IPv6 address.

A new field ``ipv6_address`` is added to NetworkInterface
and store the assigned IPv6 address (if any).

Co-Authored-By: Kaifeng Wang <kaifeng.w@gmail.com>
Change-Id: Ia527a5aa48e3daf66d2be190e43935b38b3bd6f9
Closes-Bug: #1744064
Story: #1744064
Task: #11604
This commit is contained in:
zhengyong
2018-01-21 22:44:33 +08:00
committed by Kaifeng Wang
parent 9008a5cd30
commit 561be77303
4 changed files with 51 additions and 14 deletions

@ -203,15 +203,24 @@ def _get_lldp_info(interfaces):
return lldp_info
def get_ipv4_addr(interface_id):
def get_default_ip_addr(type, interface_id):
"""Retrieve default IPv4 or IPv6 address."""
try:
addrs = netifaces.ifaddresses(interface_id)
return addrs[netifaces.AF_INET][0]['addr']
return addrs[type][0]['addr']
except (ValueError, IndexError, KeyError):
# No default IPv4 address found
# No default IP address found
return None
def get_ipv4_addr(interface_id):
return get_default_ip_addr(netifaces.AF_INET, interface_id)
def get_ipv6_addr(interface_id):
return get_default_ip_addr(netifaces.AF_INET6, interface_id)
def get_mac_addr(interface_id):
try:
addrs = netifaces.ifaddresses(interface_id)