/P`c@sddlZddlZddlZddlmZmZmZmZmZmZm Z ddlm Z dZ dZ defdYZdefd YZd ejfd YZed krejd dndS(iN(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"stLocalVolcBseZdZRS(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 eZdZdZdZRS(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|jd6|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 SanityCheckcBsGeZdZdZdZdZdZdZdZRS(cCsmd}tjddk 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 Csg}t}x|jD]}t}|j}|j}|j}|j}t|tj tj gswt ||dqn|j j |} | d} | d} | tjkrt ||dqn| tjkrt}|jt|||dd|jn>| tjkr>t}|jt|||dd|jn| tjkrct ||dqn| tjkrt}|jt|||d d |jn|rt}qqW|j||s|jd ndS( Ns<Capabilities VOLUMES and VOLUME_CACHE_INFO are not supportediisUnknown physical disk cachesPhysical 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 DISABLEsPhysical 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$|jjD]}|||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