o
    y)]
                     @   sT   d dl mZ d dlZd dlmZ d dlmZmZ dd Zdd Z	G d	d
 d
e
ZdS )    )divisionN)succeed)get_mount_infoget_filesystem_for_pathc                 C   s0   | dkr
d| d  S | dkrd| d  S d|  S )Ni   z%.2fTBi   z%.2fGBz%dMB )Z	megabytesr   r   8/usr/lib/python3/dist-packages/landscape/sysinfo/disk.pyformat_megabytes
   s
   r   c                 C   s,   | d }|| d  }d|| d t |f S )Ntotal-space
free-spacez%0.1f%% of %sd   )r   )infototalusedr   r   r   usage   s   r   c                   @   s,   e Zd ZdejfddZdd Zdd ZdS )	Diskz/proc/mountsc                 C   s   || _ || _d S N)_mounts_file_statvfs)selfZmounts_filestatvfsr   r   r   __init__   s   
zDisk.__init__c                 C   s
   || _ d S r   )_sysinfo)r   Zsysinfor   r   r   register   s   
zDisk.registerc                 C   sP  t d| j| j}|d ur=|d }|dkr&t d| j| j}|d ur&|d }|}|dkr-d}nt|}| jd|d  | n| jdd t }t }tt| j| j}|j	d	d
 d |D ]F}|d }|d |v }	|d |v }
|
|d  |
|d  |	s|
rq]|dkrq]||d  | d }|dkr| jd|d t|f  q]td S )Nz/homer	   r   /unknownz	Usage of mount-pointzUsage of /homec                 S   s   t | d S )Nr   )len)ir   r   r   <lambda>9   s    zDisk.run.<locals>.<lambda>)keyZdevicer
   r   U   z%s is using %s)r   r   r   r   r   Z
add_headersetlistr   sortaddZadd_noter   )r   Z	main_infor   Zroot_main_infoZ
main_usageZseen_mountsZseen_devicesZinfosr   Z
mount_seenZdevice_seenr   r   r   r   run"   sP   
zDisk.runN)__name__
__module____qualname__osr   r   r   r%   r   r   r   r   r      s    r   )Z
__future__r   r)   Ztwisted.internet.deferr   Zlandscape.lib.diskr   r   r   r   objectr   r   r   r   r   <module>   s    	