Mini Shell

Direktori : /lib/python3.6/site-packages/blivet/devicelibs/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/blivet/devicelibs/__pycache__/stratis.cpython-36.pyc

3

{)c(�@sddlZejdd�ejdd�ddlmZmZddlZddlZddlmZddl	m
Z
dd	lmZdd
l
mZddlmZddlmZd
ZdZedZedZedZedZe
d�ZdZd&dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Z d'd$d%�Z!dS)(�N�GLibz2.0�Gio)rr�)�StratisError)�Size)�stratis_info)�availability)�	safe_dbus)�utilzorg.storage.stratis3z/org/storage/stratis3z.pool.r0z.filesystem.r0z.blockdev.r0z.Manager.r0z1 TiBz0-9a-zA-Z._-FcCs�tjjstdtjj��tjjdg}x"|D]}|jdt|j��g�q*W|rV|jd�t	j
|�\}}|rptd��ytj|�}Wn.tj
k
r�}ztd�|�WYdd}~XnXt|d�S)Nz<Utility for predicting stratis pool usage '%s' not availableZpoolz
--device-sizez--encryptedz(Failed to predict usage for stratis poolz Failed to get stratis pool usage�used)r�STRATISPREDICTUSAGE_APP�	availabler�name�extend�str�	get_bytes�appendr
�run_program_and_capture_output�json�loads�JSONDecodeErrorr)Z	dev_sizes�	encrypted�cmd�size�rc�out�pred�e�r�/usr/lib/python3.6/stratis.py�	pool_used5s

r cCs�tjjstdtjj��tjtjjddt|j��g�\}}|rJtd|��yt	j
|�}Wn.t	jk
r�}ztd�|�WYdd}~XnXt|d�S)Nz<Utility for predicting stratis pool usage '%s' not availableZ
filesystemz--filesystem-sizez2Failed to predict usage for stratis filesystem: %sz&Failed to get stratis filesystem usager)
rrr
rrr
rrrrrrr)�fs_sizerrrrrrr�filesystem_md_sizeKsr"cCs�tjjstd��tj�|tjj�kr2td|��tj|}y,tj	t
ttdt
jd|jf��\\}}}}Wn4tjk
r�}ztdt|���WYdd}~XnX|s�td||f��dS)Nz"Stratis DBus service not availablez#Stratis pool with UUID %s not foundZDestroyPoolz(o)z!Failed to remove stratis pool: %sz&Failed to remove stratis pool: %s (%d))r�STRATIS_DBUSr
rr�
drop_cache�pools�keysr	�	call_sync�STRATIS_SERVICE�STRATIS_PATH�STRATIS_MANAGER_INTFr�Variant�object_path�
DBusCallErrorr)�	pool_uuid�	pool_info�succ�_uuidr�errrrrr�remove_pool]s 
 "r3c	Cs�tjjstd��tj�|tjj�kr2td|��|tjj�krLtd|��tj|}tj|}y0t	j
t|jt
dtjd|jgf��\\}}}}Wn4t	jk
r�}ztdt|���WYdd}~XnX|s�td||f��dS)Nz"Stratis DBus service not availablez#Stratis pool with UUID %s not foundz)Stratis filesystem with UUID %s not foundZDestroyFilesystemsz(ao)z'Failed to remove stratis filesystem: %sz,Failed to remove stratis filesystem: %s (%d))rr#r
rrr$r%r&Zfilesystemsr	r'r(r,�STRATIS_POOL_INTFrr+r-r)	r.Zfs_uuidr/Zfs_infor0r1rr2rrrr�remove_filesystemvs&

""r5cCs�|r(tj�\}}tj||jd��|}n|r:tj|tj�}tj�}|j|�z�y0t	j
ttt
dtjd|df�|d�\\}}}	}
Wn4t	jk
r�}ztdt|���WYdd}~XnX|	dkr�td|
|	f��Wd|r�tj|�|r�tj|�XdS)Nzutf-8ZSetKeyz(sh)r)Zfdsz"Failed to set key for new pool: %sz'Failed to set key for new pool: %s (%d))�os�pipe�write�encode�open�O_RDONLYrZ
UnixFDListrr	r'r(r)r*rr+r-rr�close)�key_desc�
passphrase�key_file�readr8�fdZfd_listZ_changedZ_setrr2rrrr�set_key�s,
$"
rBcCs�tjjstd��y(tjtttdt	j
d|df��\}}}Wn4tjk
rl}ztdt|���WYdd}~XnX|s~td|��dS)Nz"Stratis DBus service not availableZ
UnlockPoolz(ss)ZkeyringzFailed to unlock pool: %s)
rr#r
rr	r'r(r)r*rr+r-r)r.r0r2Z
_blockdevsrrrr�unlock_pool�s"rCcCs�tjjstd��|r&|p|r&td��tjdd�}|r\d|}t|||�tjdd|f�}ntjdd�}tjd
d�}y2tjt	t
tdtjd|||||f��\\}	}
}}Wn4tjk
r�}
ztd
t
|
���WYdd}
~
XnX|	�s�td||f��tj�dS)Nz"Stratis DBus service not availablez;Passphrase or key file must be specified for encrypted poolz(bq)Frz	blivet-%sz(bs)T�z(b(ss))Z
CreatePoolz(s(bq)as(bs)(b(ss)))z!Failed to create stratis pool: %sz&Failed to create stratis pool: %s (%d))Fr)FrD�rDrD)FrE)rr#r
rrr+rBr	r'r(r)r*r-rrr$)rZdevicesrr>r?Zraid_optr=Zkey_optZ
clevis_optr0�_pathsrr2rrrr�create_pool�s0
"rGc
Cstjjstd��tj�|tjj�kr2td|��tj|}|rZtj	ddt
|j��f�}ntj	dd�}y:tj
t|jtdtj	dtj	d	||f�gf��\\}}}}Wn:tjk
r�}	ztd
|jt
|	�f��WYdd}	~	XnX|s�td|j||f��tj�dS)
Nz"Stratis DBus service not availablez#Stratis pool with UUID %s not foundz(bs)TFrDZCreateFilesystemsz
(a(s(bs)))z(s(bs))z/Failed to create stratis filesystem on '%s': %sz4Failed to create stratis filesystem on '%s': %s (%d))FrD)rr#r
rrr$r%r&rr+rrr	r'r(r,r4r-r)
rr.r!r/Zsize_optr0rFrr2rrrr�create_filesystem�s(
,(rH)F)N)"ZgiZrequire_versionZ
gi.repositoryrrrr6�errorsrrrZstatic_datarZtasksrrDr	r
r(r)r4ZSTRATIS_FILESYSTEM_INTFZSTRATIS_BLOCKDEV_INTFr*ZSTRATIS_FS_SIZEZsafe_name_charactersr r"r3r5rBrCrGrHrrrr�<module>s6
$