HEX
Server: Apache
System: Linux msm5694.mjhst.com 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: camjab_ssh (1000)
PHP: 5.3.29
Disabled: NONE
Upload Files
File: //usr/libexec/lsm.d/local_sanity_check.pyc
ó
/ÎP`c@sâddlZddlZddlZddlmZmZmZmZmZmZm	Z	ddlm
Zd„Zd„Z
defd„ƒYZdefd	„ƒYZd
ejfd„ƒYZedkrÞejd
dƒndS(iÿÿÿÿN(tVolumet	LocalDisktPooltSystemtLsmErrortErrorNumbertDisk(tCapabilitiescCs(x!|D]}|j|ƒstSqWtS(N(t	supportedtFalsetTrue(tcaptcap_listtc((s(/usr/libexec/lsm.d/local_sanity_check.pyRs
cCs(d|j|jdj|ƒ|fGHdS(Ns'
[WARN]: Volume '%s(%s)', Disk '%s': %st (tnametidtjoin(tvolt	blk_pathstmsg((s(/usr/libexec/lsm.d/local_sanity_check.pytwarn"stLocalVolcBseZd„ZRS(cCs(||_||_||_||_dS(N(RRtsysR(tselfRRRR((s(/usr/libexec/lsm.d/local_sanity_check.pyt__init__(s			(t__name__t
__module__R(((s(/usr/libexec/lsm.d/local_sanity_check.pyR'stFailurecBs eZdZd„Zd„ZRS(s©
VOL_ID:     "{VOL_ID}"
VOL_NAME:   "{VOL_NAME}"
SYS_ID:     "{SYS_ID}"
SYS_NAME:   "{SYS_NAME}"
BLK_PATHS:  "{BLK_PATHS}"
ISSUE:      "{ISSUE}"
SUGGEST:    "{SUGGEST}"
cCs1||_||_||_||_||_dS(N(RRRRtsuggest(RRRRRR((s(/usr/libexec/lsm.d/local_sanity_check.pyR:s
				cCsktjji|jjd6|jjd6|jjd6|jjd6dj|jƒd6|j	d6|j
d6S(	NtVOL_IDtVOL_NAMEtSYS_IDtSYS_NAMERt	BLK_PATHStISSUEtSUGGEST(Rt
OUTPUT_FORMATtformatRRRRRRRR(R((s(/usr/libexec/lsm.d/local_sanity_check.pytgen_fail_msgAs	




(RRR%RR'(((s(/usr/libexec/lsm.d/local_sanity_check.pyR/s		tSanityCheckcBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCsmd}tjdƒdk	r-tjdƒ}ntjdƒ}|dkrWd}d}ntj||ƒ|_|jjƒ|_i}i}g|_x7|jD],}|||j	<|jj
|ƒ||j	<qWx€|jjƒD]o}tj
|jƒ}|rÝ|jjt||||j||jƒƒd|j|j	dj|ƒfGHqÝqÝW|jsi|jdƒndS(Nt
LSMCLI_URItLSMCLI_PASSWORDslocal://s!
Disk path of volume '%s(%s)': %sRs*No local disk is managed by libstoragemgmt(tNonetostgetenvtlsmtClientR
tsystemstsysst
local_volsRtcapabilitiestvolumesRtvpd83_searchtvpd83tappendRt	system_idRRtskipTest(Rturitpasswordtsys_hashtcap_hashRRR((s(/usr/libexec/lsm.d/local_sanity_check.pytsetUpOs2		

%	cCs|jjƒdS(N(R
tclose(R((s(/usr/libexec/lsm.d/local_sanity_check.pyttearDownlscCs,ttjdƒtkr(|j|ƒndS(s–
        If skipTest is supported(new in python 2.7), skip this test with
        provided message.
        Silently return if not supported.
        R9N(thasattrtunittesttTestCaseR
R9(Rtmesssage((s(/usr/libexec/lsm.d/local_sanity_check.pyt_skip_current_testoscCsWddd}|jtd„|Dƒƒƒ}|jt|ƒdkd||fƒdS(Nt-iHs
css|]}|jƒVqdS(N(R'(t.0tf((s(/usr/libexec/lsm.d/local_sanity_check.pys	<genexpr>{sis
%s%s(Rtlistt
assertTruetlen(Rtfailstsplitertoutput((s(/usr/libexec/lsm.d/local_sanity_check.pyt_check_failysc	CsÛg}t}x¥|jD]š}t}|j}|j}|j}|j}t|tj	tj
gƒswt||dƒqn|jj
|ƒ}	|	d}
|	d}|tjkrÂt||dƒqn|tjkrt}|jt|||dd|jƒƒn>|tjkr>t}|jt|||dd|jƒƒn|
tjkrct||dƒqn|
tjkr¡t}|jt|||d	d
|jƒƒn|rt}qqW|j|ƒ|s×|jdƒndS(Ns<Capabilities VOLUMES and VOLUME_CACHE_INFO are not supportediisUnknown physical disk caches…Physical disk cache of volume is determined by the disk vendor which is not suggested, data loss might occurred on sudden power loss.s&lsmcli vpdcu --vol %s --policy DISABLEs’Physical disk cache of volume is enabled which might(mostly) not be protected by battery/capacitor, data loss might occurred on sudden power loss.sUnknown write cache policys~Write cache of volume is always enabled regardless of battery/capacitor status, data loss might occurred on sudden power loss.s#lsmcli vwcpu --vol %s --policy AUTOs(No local disks are capable for this test(R	R2R
RRRRRtCaptVOLUMEStVOLUME_CACHE_INFORR
tvolume_cache_infoRtPHYSICAL_DISK_CACHE_UNKNOWNt$PHYSICAL_DISK_CACHE_USE_DISK_SETTINGR7RRtPHYSICAL_DISK_CACHE_ENABLEDtWRITE_CACHE_POLICY_UNKNOWNtWRITE_CACHE_POLICY_WRITE_BACKRORE(RRLt
flag_has_passtlvt	flag_passRRRRt
cache_infotwrite_cache_policytphy_disk_cache((s(/usr/libexec/lsm.d/local_sanity_check.pyttest_volume_cache~sV				



cCsWg}t}i}x$|jjƒD]}|||j<q"Wi}i}y+x$|jjƒD]}|||j<qXWWn+tk
r}|jtjkr—qž‚nXx|j	D]„}	|	j
}
|	j}|	j}|	j
}
||j}|jtjkrt||
d|j|jfƒn|jtj@s&t|tjgƒrñ|j|krd|jj|ƒ||j<n||j}|dtjkrñxg|dD]X}||}|jtj@s|jt|
||
d|j||jfdƒƒqqqWqñn|jt|
||
d|j|jfdƒƒq¨nt}q¨W|j|ƒ|sS|j dƒndS(	NsUnknown pool status %d %siisDisk %s(%s) is not healthy: %ds*Need investigation of output of`lsmcli ld`sPool is not healthy: %d '%s's+Need investigation of output of `lsmcli lp`s(No local disks are capable for this test(!R	R
tpoolsRtdisksRtcodeRt
NO_SUPPORTR2RRRRtpool_idtstatusRtSTATUS_UNKNOWNRtstatus_infot	STATUS_OKRRPtPOOL_MEMBER_INFOtpool_member_infotMEMBER_TYPE_DISKRR7RRR
RORE(RRLRYt	pool_hashtpooltpmi_hasht	disk_hashtdisktlsm_errRZRRRRtpmitdisk_id((s(/usr/libexec/lsm.d/local_sanity_check.pyttest_pool_status¼sb				
		





c	Csâg}t}x¬|jD]¡}|j}|j}|j}|jtjkrlt||d|j|j	fƒn|jtj
@s±|jt|||d|j|j	fdƒƒqnt
}qW|j|ƒ|sÞ|jdƒndS(NsUnknown system status %d %ssSystem is not healthy: %d '%s's+Need investigation of output of `lsmcli ls`s(No local disks are capable for this test(R	R2RRRReRRfRRgRhR7RR
RORE(RRLRYRZRRR((s(/usr/libexec/lsm.d/local_sanity_check.pyttest_system_statusös*					


(	RRR>R@REROR_RtRu(((s(/usr/libexec/lsm.d/local_sanity_check.pyR(Ns			
		>	:t__main__t	verbosityi(RBR,R.RRRRRRRRRPRRtobjectRRRCR(Rtmain(((s(/usr/libexec/lsm.d/local_sanity_check.pyt<module>s4		Ã