Mini Shell

Direktori : /lib/python3.6/site-packages/blivet/tasks/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/blivet/tasks/__pycache__/availability.cpython-36.opt-1.pyc

3

�Mfw[�@s�ddlZddlZddlmZddlmZddlmZmZddl	Z	e	j
dd�e	j
dd�e	j
d	d�dd
lmZ
ddlmZmZddlZejd�Zd
ZGdd�de�Zeej�Gdd�de��ZGdd�de�Ze�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Ze�ZGd d!�d!e�Z e �Z!d"d#�Z"d$d%�Z#d&d'�Z$d(d)�Z%d*d+�Z&d,d-�Z'e
j(j)e
j(j*Be
j(j+Be
j(j,BZ-ed.e
j.e
j/j0e-e
j/j1e-e
j/j2e-id/�Z3ee3�Z4e
j5j)e
j5j6Be
j5j,Be
j5j7Be
j5j8Be
j5j9BZ:ed0e
j;e
j<j=e:e
j<j>e:e
j<j?e
j5j)id/�Z@ee@�ZAed0e
j;e
j<jBe
j5j)e
j5j6Be
j5j,Bid/�ZCeeC�ZDe
jEjFe
jEjGBe
jEj,BZHed1e
jIe
jJjKeHid/�ZLeeL�ZMed1e
jIe
jJjNeHid/�ZOeeO�ZPe
jQj)e
jQj)Be
jQjRBe
jQj+Be
jQj,BZSed2e
jTe
jUjVeSid/�ZWeeW�ZXe
jYj)e
jYjZBe
jYj+Be
jYj,BZ[ed3e
j\e
j]j^e[e
j]j_e[e
j]j`e[e
j]jae[e
j]jbe
jYj,e
j]jce
jYj,e
j]jde
jYj,e
j]jee
jYj,e
jYj+Bid/�Zfeef�Zgehe
j]d4��r�ed3e
j\e
j]jie
jYj)e
jYjZBe
jYj,Bid/�Zjeej�Zkn
ed5d6�Zkehe
j]d7��red3e
j\e
j]jle
jYj+id/�Zmeem�Znn
ed8d6�Zne
joj)e
joj*Be
joj+Be
joj,BZped9e
jqe
jrjsepid/�Zteet�Zue
jvj+e
jvj,BZwed:e
jxe
jyjzewid/�Z{ee{�Z|e
j}j)e
j}j~Be
j}j,Be
j}jBZ�ed;e
j�e
j�j�e�id/�Z�ee��Z�e$d<e4�Z�e$d=eA�Z�e$d>eD�Z�e$d?eM�Z�e$d@eP�Z�e$dAeX�Z�e$dBeg�Z�e$dCek�Z�e$dDen�Z�e$dEeu�Z�e$dFe|�Z�e$dGe��Z�edHdIdJdKdL�Z�ee��Z�edMdNdOdPdL�Z�ee��Z�e"dQ�Z�e"dR�Z�e"dS�Z�e"dT�Z�e#dUe��Z�e#dHe��Z�e#dVe��Z�e"dW�Z�e"dX�Z�e"dY�Z�e"dZ�Z�e"d[�Z�e"dM�Z�e#dMe��Z�e#d\e��Z�e"d]�Z�e"d^�Z�e"d_�Z�e"d`�Z�e"da�Z�e"db�Z�e"dc�Z�e"dd�Z�e"de�Z�e"df�Z�e"dg�Z�e"dh�Z�e"di�Z�e#dje��Z�e#dke��Z�e"dl�Z�e"dm�Z�e"dn�Z�e"do�Z�e"dp�Z�e"dq�Z�e"dr�Z�e"ds�Z�e"dt�Z�eee�Z�e%due��Z�dS)v�N)�
add_metaclass�)�	safe_dbus)�STRATIS_SERVICE�STRATIS_PATH�BlockDevz2.0�GLib�Gio)r)rr	ZblivetTc@s8eZdZdZdd�Zdd�Zedd��Zedd	��Zd
S)�ExternalResourcez An external resource. cCs||_||_d|_dS)z� Initializes an instance of an external resource.

            :param method: A method object
            :type method: :class:`Method`
            :param str name: the name of the external resource
        N)�_method�name�_availability_errors)�self�methodr�r�"/usr/lib/python3.6/availability.py�__init__0szExternalResource.__init__cCs|jS)N)r)rrrr�__str__;szExternalResource.__str__cCsNt�}tr|j}nd|_|jdkr.|jj|�}trJ|jdkrJ|dd�|_|S)z� Whether the resource has any availability errors.

            :returns: [] if the resource is available
            :rtype: list of str
        N)�list�CACHE_AVAILABILITYr
r�availability_errors)rZ_errorsrrrr>s
z$ExternalResource.availability_errorscCs
|jgkS)z~ Whether the resource is available.

            :returns: True if the resource is available
            :rtype: bool
        )r)rrrr�	availableWszExternalResource.availableN)	�__name__�
__module__�__qualname__�__doc__rr�propertyrrrrrrr
,s
r
c@seZdZdZejdd��ZdS)�Methodz: Method for determining if external resource is available.cCs
t��dS)z� Returns [] if the resource is available.

            :param resource: any external resource
            :type resource: :class:`ExternalResource`

            :returns: [] if the external resource is available
            :rtype: list of str
        N)�NotImplementedError)r�resourcerrrrfs
zMethod.availability_errorsN)rrrr�abc�abstractmethodrrrrrrasrc@seZdZdZdd�ZdS)�Pathz1 Methods for when application is found in  PATH. cCs tj|j�sd|jgSgSdS)a Returns [] if the name of the application is in the path.

            :param resource: any application
            :type resource: :class:`ExternalResource`

            :returns: [] if the name of the application is in the path
            :rtype: list of str
        zapplication %s is not in $PATHN)�shutilZwhichr)rrrrrrws	zPath.availability_errorsN)rrrrrrrrrr"ssr"c@seZdZdd�Zdd�ZdS)�AppVersionInfocCs||_||_||_||_dS)a� Initializer.

            :param str app_name: the name of the application
            :param required_version: the required version for this application
            :param version_opt: command line option to print version of this application
            :param version_regex: regular expression to extract version from
                                  output of @version_opt
            :type required_version: :class:`distutils.LooseVersion` or NoneType
        N)�app_name�required_version�version_opt�
version_regex)rr%r&r'r(rrrr�s
zAppVersionInfo.__init__cCsd|j|jfS)Nz%s-%s)r%r&)rrrrr�szAppVersionInfo.__str__N)rrrrrrrrrr$�sr$c@s"eZdZdZddd�Zdd�ZdS)�
VersionMethodz< Methods for checking the version of the external resource. NcCs||_d|_dS)zP Initializer.

            :param :class:`AppVersionInfo` version_info:
        N)�version_infor
)rr*rrrr�szVersionMethod.__init__cCs�|jdk	rtr|jdd�Stj|�|_|jjdkrB|jdd�SyJtjj|jj	|jj|jj
|jj�}|s�d|jj	|jjf}|jj|�Wn@tj
k
r�}z"d|jj	|f}|jj|�WYdd}~XnX|jdd�S)Nz8installed version of %s is less than required version %sz)failed to get installed version of %s: %s)r
rr"rr*r&�blockdev�utilsZcheck_util_versionr%r'r(�appendZ
UtilsError)rr�ret�err�errrr�s&
z!VersionMethod.availability_errors)N)rrrrrrrrrrr)�s
r)c@seZdZdd�Zdd�ZdS)�BlockDevTechInfocCs||_||_||_dS)z� Initializer.

            :param str plugin_name: the name of the libblockdev plugin
            :param check_fn: function used to check for support availability
            :param technologies: list of required technologies
        N)�plugin_name�check_fn�technologies)rr2r3r4rrrr�szBlockDevTechInfo.__init__cCs
d|jS)Nzblockdev-%s)r2)rrrrr�szBlockDevTechInfo.__str__N)rrrrrrrrrr1�sr1c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�BlockDevMethodz@ Methods for when application is actually a libblockdev plugin. cCs||_d|_dS)zP Initializer.

            :param :class:`AppVersionInfo` version_info:
        N)�
_tech_infor
)rZ	tech_inforrrr�szBlockDevMethod.__init__cCspg}xf|jjj�D]V\}}y|jj||�Wqtjk
rf}z|jd|j|jf�WYdd}~XqXqW|S)Nz%s: %s)	r6r4�itemsr3rZGErrorr-Z
value_name�message)r�errorsZtech�moder0rrr�_check_technologies�s,z"BlockDevMethod._check_technologiescCsJ|jjtj�krd|jjgS|j�}|rBd|jjdj|�fgSgSdS)z� Returns [] if the plugin is loaded.

            :param resource: a libblockdev plugin
            :type resource: :class:`ExternalResource`

            :returns: [] if the name of the plugin is loaded
            :rtype: list of str
        z libblockdev plugin %s not loadedzUlibblockdev plugin %s is loaded but some required technologies are not available (%s)z; N)r6r2r+Zget_available_plugin_namesr;�join)rrZtech_missingrrrr�s	z"BlockDevMethod.availability_errorsN)rrrrrr;rrrrrr5�s	r5c@s eZdZdZdd�Zdd�ZdS)�
DBusMethodz: Methods for when application is actually a DBus service. cCs||_||_d|_dS)zP Initializer.

            :param :class:`AppVersionInfo` version_info:
        N)�	dbus_name�	dbus_pathr
)rr>r?rrrrszDBusMethod.__init__cCsfy.tjjdtjj|j|j�}tj	|j|j�}Wntj
k
rLd|jgSX|rVgSd|jgSdS)z� Returns [] if the service is available.

            :param resource: a DBus service
            :type resource: :class:`ExternalResource`

            :returns: [] if the name of the plugin is loaded
            :rtype: list of str
        NzDBus service %s not available)r+r,Zdbus_service_availabler	ZBusTypeZSYSTEMr>r?rZcheck_object_availableZ
DBusCallErrorr)rrZavailrrrrs	zDBusMethod.availability_errorsN)rrrrrrrrrrr=�s	r=c@s"eZdZdZddd�Zdd�ZdS)�_UnavailableMethodz2 Method that indicates a resource is unavailable. NcCs|pd|_dS)Nzalways unavailable)�	error_msg)rrArrrr$sz_UnavailableMethod.__init__cCs|jgS)N)rA)rrrrrr'sz&_UnavailableMethod.availability_errors)N)rrrrrrrrrrr@ s
r@c@seZdZdZdd�ZdS)�_AvailableMethodz0 Method that indicates a resource is available. cCsgS)Nr)rrrrrr2sz$_AvailableMethod.availability_errorsN)rrrrrrrrrrB.srBcCs
tt|�S)z� Construct an external resource that is an application.

        This application will be available if its name can be found in $PATH.
    )r
r")rrrr�application9srCcCs
t||�S)a Construct an external resource that is an application.

        This application will be available if its name can be found in $PATH
        AND its version is at least the required version.

        :param :class:`VersionMethod` version_method: the version method
    )r
)rZversion_methodrrr�application_by_versionAsrDcCs
t||�S)z> Construct an external resource that is a libblockdev plugin. )r
)rZblockdev_methodrrr�blockdev_pluginLsrEcCs
t||�S)z8 Construct an external resource that is a DBus service. )r
)rZdbus_methodrrr�dbus_serviceQsrFcCs
tt|�S)z< Construct an external resource that is always unavailable. )r
�UnavailableMethod)rrrr�unavailable_resourceVsrHcCs
tt|�S)z: Construct an external resource that is always available. )r
�AvailableMethod)rrrr�available_resource[srJZbtrfs)r2r3r4ZcryptoZdmZloopZlvm�VDOzCInstalled version of libblockdev doesn't support LVM VDO technology)rA�SHAREDzFInstalled version of libblockdev doesn't support shared LVM technologyZmdraidZmpathZswapzlibblockdev btrfs pluginzlibblockdev crypto pluginz0libblockdev crypto plugin (integrity technology)zlibblockdev dm pluginz'libblockdev dm plugin (raid technology)zlibblockdev loop pluginzlibblockdev lvm pluginz'libblockdev lvm plugin (vdo technology)z.libblockdev lvm plugin (shared LVM technology)zlibblockdev mdraid pluginzlibblockdev mpath pluginzlibblockdev swap pluginZe2fsckz1.41.0z-Vze2fsck ([0-9+\.]+) .*)r%r&r'r(Zmkdosfsz4.2z--helpzmkfs\.fat ([0-9+\.]+) .*Z
debugreiserfsZdfZdosfsckZ
dosfslabelZdumpe2fsZe2labelzfsck.hfsplusZhformatZjfs_tuneZkpartxZ
lvmdevicesZmke2fsz
mkfs.btrfsz	mkfs.gfs2zmkfs.hfspluszmkfs.jfszmkfs.xfsZmkntfsZ
mkreiserfsZmlabelZ	multipathZntfsinfoZ	ntfslabelZ
ntfsresizeZreiserfstuneZ	resize2fsZtune2fsZ	xfs_adminZxfs_dbZ
xfs_freezeZ
xfs_growfsZ
xfs_repairz	fsck.f2fsz	mkfs.f2fsZmountzstratis-predict-usageZstratis)�r r#Zsixr�rZdevicelibs.stratisrrZgiZrequire_versionZ
gi.repositoryrr+rr	ZloggingZ	getLogger�logr�objectr
�ABCMetarr"r$r)r1r5r=r@rGrBrIrCrDrErFrHrJZ
BtrfsTechModeZCREATEZDELETEZMODIFYZQUERYZBLOCKDEV_BTRFS_ALL_MODESZbtrfs_is_tech_availZ	BtrfsTechZ	MULTI_DEVZSUBVOLZSNAPSHOTZBLOCKDEV_BTRFSZBLOCKDEV_BTRFS_TECHZCryptoTechModeZ
OPEN_CLOSEZADD_KEYZ
REMOVE_KEYZRESIZEZBLOCKDEV_CRYPTO_ALL_MODESZcrypto_is_tech_availZ
CryptoTechZLUKSZLUKS2ZESCROWZBLOCKDEV_CRYPTOZBLOCKDEV_CRYPTO_TECHZ	INTEGRITYZBLOCKDEV_CRYPTO_INTEGRITYZBLOCKDEV_CRYPTO_TECH_INTEGRITYZ
DMTechModeZCREATE_ACTIVATEZREMOVE_DEACTIVATEZBLOCKDEV_DM_ALL_MODESZdm_is_tech_availZDMTechZMAPZBLOCKDEV_DMZBLOCKDEV_DM_TECHZRAIDZBLOCKDEV_DM_RAIDZBLOCKDEV_DM_TECH_RAIDZLoopTechModeZDESTROYZBLOCKDEV_LOOP_ALL_MODESZloop_is_tech_availZLoopTechZLOOP_TECH_LOOPZ
BLOCKDEV_LOOPZBLOCKDEV_LOOP_TECHZLVMTechModeZREMOVEZBLOCKDEV_LVM_ALL_MODESZlvm_is_tech_availZLVMTechZBASICZ
BASIC_SNAPZTHINZCACHEZCALCSZ
THIN_CALCSZCACHE_CALCSZ	GLOB_CONFZBLOCKDEV_LVMZBLOCKDEV_LVM_TECH�hasattrrKZBLOCKDEV_LVM_VDOZBLOCKDEV_LVM_TECH_VDOrLZBLOCKDEV_LVM_SHAREDZBLOCKDEV_LVM_TECH_SHAREDZ
MDTechModeZBLOCKDEV_MD_ALL_MODESZmd_is_tech_availZMDTechZMD_TECH_MDRAIDZBLOCKDEV_MDZBLOCKDEV_MD_TECHZ
MpathTechModeZBLOCKDEV_MPATH_ALL_MODESZmpath_is_tech_availZ	MpathTechZBASEZBLOCKDEV_MPATHZBLOCKDEV_MPATH_TECHZSwapTechModeZACTIVATE_DEACTIVATEZ	SET_LABELZBLOCKDEV_SWAP_ALL_MODESZswap_is_tech_availZSwapTechZSWAP_TECH_SWAPZ
BLOCKDEV_SWAPZBLOCKDEV_SWAP_TECHZBLOCKDEV_BTRFS_PLUGINZBLOCKDEV_CRYPTO_PLUGINZ BLOCKDEV_CRYPTO_PLUGIN_INTEGRITYZBLOCKDEV_DM_PLUGINZBLOCKDEV_DM_PLUGIN_RAIDZBLOCKDEV_LOOP_PLUGINZBLOCKDEV_LVM_PLUGINZBLOCKDEV_LVM_PLUGIN_VDOZBLOCKDEV_LVM_PLUGIN_SHAREDZBLOCKDEV_MDRAID_PLUGINZBLOCKDEV_MPATH_PLUGINZBLOCKDEV_SWAP_PLUGINZE2FSPROGS_INFOZE2FSPROGS_VERSIONZDOSFSTOOLS_INFOZDOSFSTOOLS_VERSIONZDEBUGREISERFS_APPZDF_APPZDOSFSCK_APPZDOSFSLABEL_APPZDUMPE2FS_APPZ
E2FSCK_APPZE2LABEL_APPZFSCK_HFSPLUS_APPZHFORMAT_APPZJFSTUNE_APPZ
KPARTX_APPZ
LVMDEVICESZMKDOSFS_APPZMKDOSFS_NEW_APPZ
MKE2FS_APPZMKFS_BTRFS_APPZ
MKFS_GFS2_APPZMKFS_HFSPLUS_APPZMKFS_JFS_APPZMKFS_XFS_APPZ
MKNTFS_APPZMKREISERFS_APPZ
MLABEL_APPZ
MULTIPATH_APPZNTFSINFO_APPZ
NTFSLABEL_APPZNTFSRESIZE_APPZREISERFSTUNE_APPZ
RESIZE2FS_APPZTUNE2FS_APPZXFSADMIN_APPZ	XFSDB_APPZ
XFSFREEZE_APPZ
XFSRESIZE_APPZ
XFSREPAIR_APPZ
FSCK_F2FS_APPZ
MKFS_F2FS_APPZ	MOUNT_APPZSTRATISPREDICTUSAGE_APPZSTRATIS_SERVICE_METHODZSTRATIS_DBUSrrrr�<module>sj
5&)"
&