ó /ÎP`c@sâddlZddlZddlZddlmZmZmZmZmZmZm Z ddlm Z d„Z d„Z defd„ƒYZdefd „ƒYZd ejfd „ƒYZed krÞejd dƒndS(iÿÿÿÿN(tVolumet LocalDisktPooltSystemtLsmErrort ErrorNumbertDisk(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  t SanityCheckcBsGeZd„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 {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 RR RRRtCaptVOLUMEStVOLUME_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_passRR RRt cache_infotwrite_cache_policytphy_disk_cache((s(/usr/libexec/lsm.d/local_sanity_check.pyttest_volume_cache~sV           c CsWg}t}i}x$|jjƒD]}|||jR@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.pyts   4  à