
    ~e                     `    d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
  G d d      Zy	)
    )partial)
itemgetter)AF_INET)AF_INET6)succeed)get_active_device_infoc                   $    e Zd ZdZddZd Zd Zy)NetworkzShow information about active network interfaces.

    @param get_device_info: Optionally, a function that returns information
        about network interfaces.  Defaults to L{get_active_device_info}.
    Nc                 :    |t        t        dd      }|| _        y )NT)extendeddefault_only)r   r   _get_device_info)selfget_device_infos     ;/usr/lib/python3/dist-packages/landscape/sysinfo/network.py__init__zNetwork.__init__   s%    "%&!O
 !0    c                     || _         y)zeRegister this plugin with the sysinfo system.

        @param sysinfo: The sysinfo registry.
        N)_sysinfo)r   sysinfos     r   registerzNetwork.register   s    
  r   c                    | j                         }t        |t        d            D ]  }|d   }|d   j                  t        g       }|d   j                  t
        g       }|D ]$  }| j                  j                  d| |d          & |D ]$  }| j                  j                  d| |d          &  t        d      S )z
        Gather information about network interfaces and write it to the
        sysinfo output.

        @return: A succeeded C{Deferred}.
        	interface)keyip_addresseszIPv4 address for addrzIPv6 address for N)	r   sortedr   getr   r   r   
add_headerr   )r   device_infoinfor   ipv4_addressesipv6_addressesr   s          r   runzNetwork.run"   s     ++-;J{,CD 	D[)I!.155grBN!.155hCN& (('	{3L
 ' (('	{3L	 t}r   )N)__name__
__module____qualname____doc__r   r   r$    r   r   r
   r
      s    0 r   r
   N)	functoolsr   operatorr   	netifacesr   r   twisted.internet.deferr   landscape.lib.networkr   r
   r)   r   r   <module>r/      s!        * 8. .r   