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 )
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 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    