o
    ¶žâ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 )
ÚNetworkzÍShow 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 u rt tddd�}|| _d S )NT)ÚextendedÚdefault_only)r   r   Ú_get_device_info)ÚselfÚ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   Úsysinfor   r   r   Úregister   s   
zNetwork.registerc                 C   sŽ   |   ¡ }t|tdƒd�D ]6}|d }|d  tg ¡}|d  tg ¡}|D ]}| j d| |d ¡ q$|D ]}| j d| |d ¡ q4q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 %sÚaddrzIPv6 address for %sN)	r   Úsortedr   Úgetr   r   r   Ú
add_headerr   )r   Údevice_infoÚinfor   Úipv4_addressesÚ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   Ú	netifacesr   r   Útwisted.internet.deferr   Úlandscape.lib.networkr   Úobjectr   r   r   r   r   Ú<module>   s    