Sindbad~EG File Manager
3
x?agY � @ s| d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZ ddl m
Z
mZmZ dd l
Z
dd lZG d
d� de�Zd S )z�
KernelModuleService - manages the kvdo kernel module
$Id: //eng/vdo-releases/aluminum/src/python/vdo/vdomgmnt/KernelModuleService.py#3 $
� )�absolute_import)�division)�print_function)�unicode_literals� )�Defaults�Service)�Command�CommandError�
runCommandNc sZ e Zd ZdZddd�Zdd� Zdd� Zd d
� Zdd� Zd
d� Z � fdd�Z
dd� Z� ZS )�KernelModuleServicez>KernelModuleService manages a kernel module on the local node.Tc
C sh |rdnd}yBt ddddd| j d gd|d � t d
ddddtjgd|d � dS tk
rb dS X d
S )z@Returns True if the module is loaded and DM target is available.� r Zlsmod�|Zgrepz-q�'T)�shell�retries�dmsetup�targetsFN)r �_namer �
vdoTargetNamer
)�self�waitr � r �)/usr/lib/python3.6/KernelModuleService.py�running) s
zKernelModuleService.runningc C s t d| jg� dS )zLoads the module if necessary.�modprobeN)r r )r r r r �start6 s zKernelModuleService.startc C s. t d�| jt d�| jd�t d�tj| j� �iS )zAReturns a dictionary representing the status of this object.
�NameZLoadedFzVersion information)�_r r �yamlZ safe_load�version)r r r r �status; s
zKernelModuleService.statusc C s t dd| jg� dS )zRemoves the module.r z-rN)r r )r r r r �stopC s zKernelModuleService.stopc C sD | j d }x4td| j gdd�j� D ]}|jd�dkr"||7 }q"W |S )z'Returns the module version as a string.� ZmodinfoT)�noThrowr r )r r �
splitlines�find)r �s�liner r r r H s
zKernelModuleService.versionc C s` xZt ddgdd�j� D ]B}tjtj�d }tj||�}|dk rttt |j
d�jd���S qW d
S )z/Returns the dmsetup targets version as a numberr r T)r$ z\s+v(\d+\.\d+\.\d+)Nr �.r )r r r )r r% �re�escaper r �match�tuple�map�int�group�split)r r( ZversionMatchr r r r �
targetVersionQ s z!KernelModuleService.targetVersionc s t t| �j|� d S )N)�superr �__init__)r �name)� __class__r r r4 ^ s zKernelModuleService.__init__c C s dS )zgKernelModuleService does not exclude any of its __dict__ contents
from its __repr__ result.
Tr )r �keyr r r �_reprAttributed s z"KernelModuleService._reprAttribute)T)
�__name__�
__module__�__qualname__�__doc__r r r! r"