%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/probert/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/probert/__pycache__/storage.cpython-35.pyc



YQ2X�@syddlZddlZddlZddlZddlmZejd�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}
    cCsO|\|_|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__z
Unknown valuecCsUxN|D]F}y|j|SWqtk
rLtjdj||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_hwvaluescCsMdddg}|jd|dd�}|dkrI|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_IDrrzUnknown Vendor�_r)r�model�split)rr�vr
r
r�vendor8s	zStorageInfo.vendorcCs%dddg}|jd|dd�S)NZID_MODEL_FROM_DATABASEZID_MODELZID_MODEL_IDrrz
Unknown Model)r)rrr
r
rrFs	zStorageInfo.modelcCs"ddg}|jd|dd�S)NZ	ID_SERIALZID_SERIAL_SHORTrrzUnknown Serial)r)rrr
r
r�serialOs	zStorageInfo.serialcCsdg}|jd|dd�S)NZDEVPATHrrzUnknown devpath)r)rrr
r
r�devpathWs	zStorageInfo.devpathcCs|jjd�S)Nz/devices/virtual/)r�
startswith)rr
r
r�
is_virtual\szStorageInfo.is_virtualN)�__name__�
__module__�__qualname__�__doc__rr�propertyrrrrr r
r
r
rrs	rc@sveZdZidd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
dd�Z	dd�Z
dS)�StoragecCs||_tj�|_dS)N)�results�pyudevZContext�context)rr'r
r
rrbs	zStorage.__init__cs\y9|jjd�����fdd��j�D�SWnttfk
rWgSYnXdS)N�storagecs*g|] }�|��kr|�qSr
r
)�.0�device)�keynamer*�valuer
r�
<listcomp>is	z.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�SWnttfk
r8gSYnXdS)Nr*)r'rrrr0)rr
r
r�get_devicesnszStorage.get_devicescsPy-|jdd�}�fdd�|D�SWnttfk
rKgSYnXdS)z
 /dev/sda r�	partitioncs%g|]}|j��r|�qSr
)r)r+�part)r,r
rr/xs	z*Storage.get_partitions.<locals>.<listcomp>N)r1rr0)rr,Z
partitionsr
)r,r�get_partitionsts
zStorage.get_partitionscs\y9|jjd���fdd�|jdd�D�SWnttfk
rWgSYnXdS)Nr*cs*g|] }�|ddkr|�qS)r�diskr
)r+r6)r*r
rr/�s	z%Storage.get_disks.<locals>.<listcomp>�MAJOR�8)r'rr1rr0)rr
)r*r�	get_disks}s
'zStorage.get_diskscCsXy5|jjd�j|�}|jd�jd�SWnttfk
rSdSYnXdS)Nr*rr�0)r'rrr0)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|	�rt|	��#}
|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_sizecCs�i}x�|jjdd�D]n}|dd	krt|�}t|j|d��|d<t|�||d<||djd|i�qW||_|S)
NZ	subsystem�blockr7�1�7ZDEVNAMErr)rIrJ)r)Zlist_devicesr�strrG�dict�updater')rr*r,rr
r
r�probe�s	z
Storage.probeN)r!r"r#rr1r2r5r9r;rGrNr
r
r
rr&as	r&)
Zloggingr<rDr(Z
probert.utilsrZ	getLoggerrrr&r
r
r
r�<module>sG

Zerion Mini Shell 1.0