U
    c
                     @   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   s4   | dkrd| d  S | dkr(d| d  S 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   sT  t d| j| j}|d k	rz|d }|dkrLt d| j| j}|d k	rL|d }|}|dkrZd}nt|}| jd|d  | n| jdd t }t }tt| j| j}|j	d	d
 d |D ]}|d }|d |k}	|d |k}
|
|d  |
|d  |	s|
rq|dkrq||d  | d }|dkr| jd|d t|f  qt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       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"   sR      

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   	