U
    c                     @   sT   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 G dd deZdS )	    )partial)
itemgetter)AF_INETAF_INET6)succeed)get_active_device_infoc                   @   s*   e Zd ZdZd	ddZdd Zdd ZdS )
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                 C   s    |d krt tddd}|| _d S )NT)ZextendedZdefault_only)r   r   _get_device_info)selfZget_device_info r   ;/usr/lib/python3/dist-packages/landscape/sysinfo/network.py__init__   s     zNetwork.__init__c                 C   s
   || _ dS )zeRegister this plugin with the sysinfo system.

        @param sysinfo: The sysinfo registry.
        N)_sysinfo)r
   Zsysinfor   r   r   register   s    zNetwork.registerc                 C   s   |   }t|tddD ]l}|d }|d tg }|d tg }|D ]}| jd| |d  qH|D ]}| jd| |d  qhqtdS )z
        Gather information about network interfaces and write it to the
        sysinfo output.

        @return: A succeeded C{Deferred}.
        	interface)keyZip_addresseszIPv4 address for %saddrzIPv6 address for %sN)	r	   sortedr   getr   r   r   Z
add_headerr   )r
   Zdevice_infoinfor   Zipv4_addressesZipv6_addressesr   r   r   r   run   s       zNetwork.run)N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   
   s   
r   N)	functoolsr   operatorr   Z	netifacesr   r   Ztwisted.internet.deferr   Zlandscape.lib.networkr   objectr   r   r   r   r   <module>   s
   