%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core18/current/usr/lib/python3/dist-packages/probert/__pycache__/
Upload File :
Create Path :
Current File : //snap/core18/current/usr/lib/python3/dist-packages/probert/__pycache__/storage.cpython-36.pyc

3

YQ2X�@sVddlZddlZddlZddlZddlmZejd�ZGdd�d�ZGdd�d�Z	dS)�N)�udev_get_attributeszprobert.storagec@s^eZdZdZdd�Zddd�Zedd��Zed	d
��Zedd��Z	ed
d��Z
edd��ZdS)�StorageInfoa& properties:
        .type = [disk, partition, etc.}
        .name = /dev/sda
        .size = 123012034 (bytes)
        .serial = abcdefghijkl
        .vendor = Innotec
        .model = SolidStateRocketDrive
        .devpath = /devices
        .is_virtual =
        .raw = {raw dictionary}
    cCs:|\|_|j|j�|_|jd|_t|jdd�|_dS)N�DEVTYPE�attrs�size)�name�get�raw�type�intr)�selfZ
probe_data�r
�1/usr/lib/python3/dist-packages/probert/storage.py�__init__&szStorageInfo.__init__�
Unknown valuecCsFx@|D]8}y
|j|Stk
r<tjdj||j��YqXqW|S)Nz&Failed to get key {} from interface {})r	�KeyError�log�debug�formatr)r�keys�missing�keyr
r
r�
_get_hwvalues-s


zStorageInfo._get_hwvaluescCs4dddg}|j|dd�}|dkr0|jjd�d}|S)zm Some disks don't have ID_VENDOR_* instead the vendor
            is encoded in the model: SanDisk_A223JJ3J3 ZID_VENDOR_FROM_DATABASEZ	ID_VENDORZID_VENDOR_IDzUnknown Vendor)rr�_r)r�model�split)rr�vr
r
r�vendor8szStorageInfo.vendorcCsdddg}|j|dd�S)NZID_MODEL_FROM_DATABASEZID_MODELZID_MODEL_IDz
Unknown Model)rr)r)rrr
r
rrFszStorageInfo.modelcCsddg}|j|dd�S)NZ	ID_SERIALZID_SERIAL_SHORTzUnknown Serial)rr)r)rrr
r
r�serialOszStorageInfo.serialcCsdg}|j|dd�S)NZDEVPATHzUnknown devpath)rr)r)rrr
r
r�devpathWszStorageInfo.devpathcCs|jjd�S)Nz/devices/virtual/)r�
startswith)rr
r
r�
is_virtual\szStorageInfo.is_virtualN)r)�__name__�
__module__�__qualname__�__doc__rr�propertyrrrrr!r
r
r
rrs
	rc@sReZdZifdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zddd�Z	dd�Z
dS)�StoragecCs||_tj�|_dS)N)�results�pyudevZContext�context)rr(r
r
rrbszStorage.__init__csDy&|jjd�����fdd��j�D�Sttfk
r>gSXdS)N�storagecs g|]}�|��kr|�qSr
r
)�.0�device)�keynamer+�valuer
r�
<listcomp>isz.Storage.get_devices_by_key.<locals>.<listcomp>)r(rrr�AttributeError)rr.r/r
)r.r+r/r�get_devices_by_keyfs
zStorage.get_devices_by_keycCs.y|jjd�j�Sttfk
r(gSXdS)Nr+)r(rrrr1)rr
r
r�get_devicesnszStorage.get_devicescs<y|jdd�}�fdd�|D�Sttfk
r6gSXdS)z
 /dev/sda r�	partitioncsg|]}|j��r|�qSr
)r )r,�part)r-r
rr0xsz*Storage.get_partitions.<locals>.<listcomp>N)r2rr1)rr-Z
partitionsr
)r-r�get_partitionsts
zStorage.get_partitionscsDy&|jjd���fdd�|jdd�D�Sttfk
r>gSXdS)Nr+cs g|]}�|ddkr|�qS)r�diskr
)r,r7)r+r
rr0�sz%Storage.get_disks.<locals>.<listcomp>�MAJOR�8)r(rr2rr1)rr
)r+r�	get_disks}s
zStorage.get_diskscCs@y"|jjd�j|�}|jd�jd�Sttfk
r:dSXdS)Nr+rr�0)r(rrr1)rr-Zhwinfor
r
r�get_device_size�s
zStorage.get_device_sizeFcCs�tjjdtjj|��}tjj|d�}t|��}t|j�j��}WdQRX|}tjjtjj|d��s�tjjt	j
d|�d�}tjjd|�}tjj|dd�}	tjj|	�r�t|	��}
|t|
j�j��9}WdQRX|S)z device='/dev/sda' z/sys/class/blockrNZqueuez[\d+]rZlogical_block_size)�os�path�join�basename�openr�read�strip�exists�rer)rr-Zis_partitionZ
device_dirZ
blockdev_size�drZlogsize_baseZ
parent_devZlogical_size�sr
r
r�_get_device_size�s


zStorage._get_device_sizecCsvi}xf|jjdd�D]T}|dd	krt|�}t|j|d��|d<t|�||d<||djd|i�qW||_|S)
N�block)Z	subsystemr8�1�7ZDEVNAMErr)rJrK)r*Zlist_devicesr�strrH�dict�updater()rr+r-rr
r
r�probe�sz
Storage.probeN)F)r"r#r$rr2r3r6r:r<rHrOr
r
r
rr'as	
r')
Zloggingr=rEr)Z
probert.utilsrZ	getLoggerrrr'r
r
r
r�<module>s
G

Zerion Mini Shell 1.0