o
    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   s0   | dkr
d| d  S | dkrd| d  S d|  S )Ni   z%.2fTBi   z%.2fGBz%dMB )	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)selfmounts_filestatvfsr   r   r   __init__   s   
zDisk.__init__c                 C   s
   || _ d S r   )_sysinfo)r   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>)keydevicer   r   U   z%s is using %s)r   r   r   r   r   
add_headersetlistr   sortaddadd_noter   )r   	main_infor   root_main_info
main_usageseen_mountsseen_devicesinfosr   
mount_seendevice_seenr   r   r   r   run"   sP   
zDisk.runN)__name__
__module____qualname__osr   r   r   r3   r   r   r   r   r      s    r   )
__future__r   r7   twisted.internet.deferr   landscape.lib.diskr   r   r	   r   objectr   r   r   r   r   <module>   s    	