[Kimchi-devel] [PATCH] netinfo.py: adding 'link_detected' to get_interface_info

Aline Manera alinefm at linux.vnet.ibm.com
Mon Nov 10 10:59:36 UTC 2014


On 11/04/2014 11:25 AM, Daniel Henrique Barboza wrote:
> The 'link_detected' tells the caller if the network interface
> is attached to a network cable (or other media). This information
> is only attainable if the network interface is up, thus querying
> 'link_detected' will return 'n/a' in the interface is down.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb at linux.vnet.ibm.com>
> ---
>   src/kimchi/netinfo.py | 19 ++++++++++++++-----
>   1 file changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/src/kimchi/netinfo.py b/src/kimchi/netinfo.py
> index bb50479..991e91f 100644
> --- a/src/kimchi/netinfo.py
> +++ b/src/kimchi/netinfo.py
> @@ -101,16 +101,21 @@ def is_bondlave(nic):
>
>
>   def operstate(dev):
> -    # try to read interface status
> +    link_status = link_detected(dev)
> +    return "down" if link_status == "n/a" else "up"
> +
> +
> +def link_detected(dev):
> +    # try to read interface carrier (link) status
>       try:
> -        open(NET_STATE % dev).readline().strip()
> +        carrier = open(NET_STATE % dev).readline().strip()
>       # when IOError is raised, interface is down
>       except IOError:
> -        return "down"
> +        return "n/a"
>
>       # if value is 1, interface up with cable connected
>       # 0 corresponds to interface up with cable disconnected
> -    return "up"
> +    return "yes" if carrier == '1' else "no"

Those values "yes" and "no" are being ignored when link_detected() is used.
Is that correct?

I mean, if "no" the final result should be "down", right? And I don't 
think it is happening here.

>
>
>   def get_vlan_device(vlan):
> @@ -196,8 +201,12 @@ def get_interface_info(iface):
>       except IOError:
>           pass
>
> +    iface_link_detected = link_detected(iface)
> +    iface_status = 'active' if iface_link_detected != "n/a" else "inactive"
> +
>       return {'name': iface,
>               'type': get_interface_type(iface),
> -            'status': 'active' if operstate(iface) == 'up' else 'inactive',
> +            'status': iface_status,
> +            'link_detected': iface_link_detected,
>               'ipaddr': ipaddr,
>               'netmask': netmask}




More information about the Kimchi-devel mailing list