Mini Shell

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

3

{)c
"�@s^ddlZddlZddlZddlmZddlZddlZejdd�ddlm	Z
ddlZejd�Z
ddlmZd	d
lmZd	dlmZd	dlmZd	d
lmZd	dlmZd	dlmZddlmZed�Zed�Zed�Zed�Z ed�Z!ed�Z"ed�Z#ed�Z$ed�Z%e
j&j'Z(ej)dddddddd g�Z*e+ej,j-d!d"�e*D���Z.ed#d$d%g�Z/e/d&ed'��e/d(ed)��fZ0ej1gZ2d*Z3d+Z4e5e
j6d,��r�ye
j7j8e
j6j9d�Wne
j:k
�r�d-Z;YnXd.Z;nd-Z;e<�Z=d/d0�Z>d1d2�Z?d3d4�Z@e@d5d6��ZAe@d7d8��ZBe@d9d:��ZCd;d<�ZDe@d=d>��ZEed?d@��ZFdAdB�ZGdCdD�ZHdEdF�ZIdGdH�ZJdIdJ�ZKdKdL�ZLdS)M�N)�
namedtuple�BlockDevz2.0)rZblivet�)�raid�)�Size)�N_)�flags)�lvs_info)�availability)�run_program)�contextmanagerz1 MiBz4 MiBz2 MiBz16 GiBz64 KiBz1 GiBz17455015526400 Bz8 MiB�linearZstripedZraid0Zraid1Zraid4Zraid5Zraid6Zraid10cCsg|]}|jdkr|j�qS)r)�name�names)�.0�level�r�/usr/lib/python3.6/lvm.py�
<listcomp>Asr�
ThPoolProfilerZdesczthin-genericZGenericzthin-performanceZPerformancez/run/lvm/lvmetad.socketz0-9a-zA-Z._-�DEVICESFTcCsfd}ts<xtD]}|d|7}qW|d7}d|}d|}nd}tjsN|d7}|d7}tjj|�d	S)
zBlvm command accepts lvm.conf type arguments preceded by --config. �z	"a|%s$|",z"r|.*|"zfilter=[%s]z devices { %s } � zbackup {backup=0 archive=0} z(log {level=7 file=/tmp/lvm.log syslog=0}N)�HAVE_LVMDEVICES�_lvm_devicesr	Zlvm_metadata_backup�blockdev�lvmZset_global_config)Z
device_stringZdeviceZ
filter_stringZ
config_stringrrr�_set_global_config^s

rcCstsdStjjtt��dS)N)rrrZset_devices_filter�listrrrrr�_set_lvm_devicesxsr cs tjjsdd�S�fdd�}|S)Nc_sdS)Nr)�args�kwargsrrr�<lambda>�sz&needs_config_refresh.<locals>.<lambda>cs�||�}t�t�|S)N)rr )r!r"�ret)�fnrr�fn_with_refresh�s
z-needs_config_refresh.<locals>.fn_with_refresh)r�BLOCKDEV_LVM_PLUGINZ	available)r%r&r)r%r�needs_config_refreshsr(cCstjd|�tj|�dS)z@ Add a device (PV) to the list of devices LVM is allowed to use z:lvm filter: device %s added to the list of allowed devicesN)�log�debugr�add)�pathrrr�lvm_devices_add�sr-cCs@tjd|�ytj|�Wn tk
r:tjd|�dSXdS)zC Remove a device (PV) to the list of devices LVM is allowed to use z>lvm filter: device %s removed from the list of allowed devicesz%s wasn't in the devices listN)r)r*r�remove�KeyError)r,rrr�lvm_devices_remove�sr0cCstjd�tj�dS)Nz)lvm filter: clearing the lvm devices list)r)r*r�clearrrrr�lvm_devices_reset�s
r2cCstj�S)N)r�copyrrrr�lvm_devices_copy�sr4cCstjddjt|���|}dS)Nz0lvm filter: restoring the lvm devices list to %sz, )r)r*�joinr)�devicesrrrr�lvm_devices_restore�sr7ccst�}t�dVt|�dS)N)r4r2r7)r6rrr�empty_lvm_devices�sr8cCs�x�|D]�}|jj|jjkrq|j|jkr*q|j|j�}|dkrV|jd|jj|jf�}|r�|j}|rx|jd�|jkrx|S|j}|r�|jd�|jkr�|S|j}|r�|jd�|jkr�|St	j
|j|jd|j�r|SqWdS)a�Try to determine which of the lvs is the parent of the internal_lv

    :param internal_lv: the internal LV to determine parent LV from
    :type internal_lv: :class:`~.devices.lvm.LMVInternalLogicalVolumeDevice`
    :param lvs: LVs searched for a potential parent LV
    :type lvs: :class:`~.devices.lvm.LMVLogicalVolumeDevice`
    :param lv_info: all available information about LVs
    :type lv_info: dict

    Nz%s-%sz[]�$)ZvgrZlvname�getZdisplay_lvnameZpool_lv�stripZdata_lvZmetadata_lv�re�matchZname_suffix)Zinternal_lvZlvs�lv_infoZlv�infoZ	pool_nameZdata_lv_nameZmetadata_lv_namerrr�determine_parent_lv�s*
r@cCstjjt�S)N)�osr,�exists�LVMETAD_SOCKET_PATHrrrr�lvmetad_socket_exists�srDcCsntjjd||f�}|dkr dS|jddkr2dSytddd||fg�}Wntk
rdd}YnX|dkS)	Nz%s-%sr�wZlvchangez-prwz%s/%sr���)r
�cacher:�attrr�OSError)Zvg_nameZlv_namer>Zrcrrr�ensure_lv_is_writable�s
rJcCs8|dks|dkrdStjd|�s$dSt|�dkr4dSdS)N�.z..Fz ^[a-zA-Z0-9+_.][a-zA-Z0-9+_.-]*$�7T)r<r=�len)rrrr�is_lvm_name_valid�srNcCsttj|t�tt�S)N)�min�mathZceil� LVM_THINP_ADDRESSABLE_CHUNK_SIZE�LVM_THINP_MIN_CHUNK_SIZE�LVM_THINP_MAX_CHUNK_SIZE)Zthpool_sizerrr�recommend_thpool_chunk_sizesrTcCs|tko|tkS)N)�LVM_CACHE_MIN_METADATA_SIZE�LVM_CACHE_MAX_METADATA_SIZE)Zmd_sizerrr�is_valid_cache_md_sizesrW)MrPrAr<�collectionsr�	itertoolsZgiZrequire_versionZ
gi.repositoryrrZloggingZ	getLoggerr)rr�sizerZi18nrr	Zstatic_datar
Ztasksr�utilr�
contextlibr
ZLVM_PE_STARTZLVM_PE_SIZEZLVM_THINP_MIN_METADATA_SIZEZLVM_THINP_MAX_METADATA_SIZErRrSrQrUrVZLVMCacheModeZWRITETHROUGHZLVM_CACHE_DEFAULT_MODEZ
RAIDLevelsZraid_levelsr�chain�
from_iterableZraid_seg_typesrZKNOWN_THPOOL_PROFILESr'ZEXTERNAL_DEPENDENCIESrCZsafe_name_characters�hasattrZLVMTechrZ
is_tech_availrZLVMErrorr�setrrr r(r-r0r2r4r7r8r@rDrJrNrTrWrrrr�<module>st



0