K<]c@sKdZddklZddkZddkZddkZddkZddkZddkl Z l Z ddk l Z ddk lZddklZlZlZlZlZlZlZddklZlZdd klZdd klZddkZddkZdd k l!Z"dd k l#Z#ddk$Z dd k%l&Z&l'Z'ddk(l)Z)l*Z*l+Z+l,Z,l-Z-l.Z.l/Z/l0Z0ddk1l1Z1e2Z3ei4ei5fZ6e7dZ8de9fdYZ:de fdYZ;de fdYZ<de9fdYZ=de9fdYZ>de9fdYZ?dZ@dS(sm Gather information about a system and report it using plugins supplied for application-specific information i(tprint_functionN(t OptionParsertOption(t import_plugin(tImporterHelper(tST_UIDtST_GIDtST_MODEtST_CTIMEtST_ATIMEtST_MTIMEtS_IMODE(tstrftimet localtime(tdeque(trmtree(t_sos(t __version__(tTarFileArchivetZipFileArchive(tReporttSectiontCommandt CopiedFilet CreatedFiletAlerttNotetPlainTextReport(t ConfigParsercCsg}|}|ot|d}nd}xT|D]L}t|t|ddjo|i||}n||d}q4W|ddjo|d }n|i||S(Nt tiiHs, i(tlentappend(t first_linetitemstindenttlinestlinetnewlinetitem((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt _format_list6s!   t TempFileUtilcBs#eZdZdZdZRS(cCs||_g|_dS(N(ttmp_dirtfiles(tselfR*((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt__init__Js cCsQtid|i\}}ti|t|d}|ii||f|S(Ntdirtw(ttempfiletmkstempR*tostclosetopenR+R (R,tfdtfnametfobj((s1/usr/lib/python2.6/site-packages/sos/sosreport.pytnewNs  c Cs|xl|iD]a\}}y|i|iWntj onXyti|Wq tj oq Xq Wg|_dS(N(R+tflushR3t ExceptionR2tunlink(R,R6tf((s1/usr/lib/python2.6/site-packages/sos/sosreport.pytcleanUs   (t__name__t __module__R-R8R=(((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR)Hs  tOptionParserExtendedcBseZdZeidZRS(s Show examples cCsbti||ttdttdtdttdtdtdS(s( Prints help content including examples sSome examples:s6 enable cluster plugin only and collect dlm lockdumps:s- # sosreport -o cluster -k cluster.lockdumps? disable memory and samba plugins, turn off rpm -Va collection:s/ # sosreport -n memory,samba -k rpm.rpmva=offN(Rt print_helptprint_(R,tout((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRAes     (R>R?t__doc__tsyststdoutRA(((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR@cst SosOptioncBs>eZdZeidZeidZeidZdZRS(s0Allow to specify comma delimited list of pluginstextendcCsm|djo=y|id}WnqiX|i|ti|n ti|||||||dS(s$ Performs list extension on plugins RHt,N(tsplitt ensure_valueRRHRt take_action(R,tactiontdesttopttvaluetvaluestparsertlvalue((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRLzs  (sextend(sextend(sextend(R>R?RDRtACTIONSt STORE_ACTIONSt TYPED_ACTIONSRL(((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRGts    t XmlReportcBsJeZdZdZddddddZdZdZdZRS(s Report build class cCsyddk}Wntj ot|_dSXt|_dS|id|_|iiddd|_|iiddd|_ |iiddd|_ dS(Nis1.0tsostcommandsR+( tlibxml2t ImportErrortFalsetenabledtnewDoctdoctnewChildtNonetrootRYR+(R,RZ((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR-s  c Cs|ipdS|iiddd}|idd||iddt|} |o|iddt|n|p|o7|idd|} |o| idd|qn|p|o7|idd|} |o| idd|qndS( s! Appends command run into report NtcmdtcmdlinetexitcodetruntimeRFtfiletstderr(R]RYR`Rat setNsProptstr( R,RdReRFRhtf_stdouttf_stderrRfRctcmdchild((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt add_commands cCst|ipdS|iiddd}|idd||iddt|t}|iddt|t}|iddttt |t |iddt dt |t }|idd t|t |idd t dt |t}|idd t|t|idd t dt |t}|idd t|tdS( s! Appends file(s) added to report NRgR6tuidtgidtmodetctimes%a %b %d %H:%M:%S %Yttstamptatimetmtime(R]R+R`RaRiRjRRtoctR RR R RR R (R,R6tstatstcfiletcchild((s1/usr/lib/python2.6/site-packages/sos/sosreport.pytadd_files& )   cCs2|ipdS|ii|iidddS(s Serializes xml Ni(R]tui_logtinfoR_t serializeRa(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR}s cCsh|ipdSti}|i|iidd|i|ii |i d||i dS(s Serializes to file NiRN( R]R0tNamedTemporaryFiletwriteR_R}RaR9tarchiveRztnameR3(R,R6toutf((s1/usr/lib/python2.6/site-packages/sos/sosreport.pytserialize_to_files   N( R>R?RDR-RaRnRzR}R(((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRWs   t SoSOptionscBseZeZgZgZgZgZeZeZ dZ eZ eZ dZ eZeZeZdZdZeZeZdZdZeZdZd3Zd3dZdZedZei dZedZ!e!i d Z!ed Z"e"i d Z"ed Z#e#i d Z#edZ$e$i dZ$edZ%e%i dZ%edZ&e&i dZ&edZ'e'i dZ'edZ(e(i dZ(edZ)e)i dZ)edZ*e*i dZ*edZ+e+i dZ+edZ,e,i dZ,ed Z-e-i d!Z-ed"Z.e.i d#Z.ed$Z/e/i d%Z/ed&Z0e0i d'Z0ed(Z1e1i d)Z1ed*Z2e2i d+Z2ed,Z3e3i d-Z3ed.Z4e4i d/Z4ed0Z5e5i d1Z5d2Z6RS(4i iRtautocCs*|o|i||_n d|_dS(N(t _parse_argst_optionsRa(R,targs((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR-scCs(|idj otddndS(Ns&SoSOptions object already initialized sfrom command line(RRat ValueError(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_check_options_initializedscCs"|idj o |iiS|iS(N(RRat list_pluginst _list_plugins(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs7|it|tptdn||_dS(Ns)SoSOptions.list_plugins expects a boolean(Rt isinstancetboolt TypeErrorR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRat nopluginst _noplugins(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRat enablepluginst_enableplugins(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR s cCs"|idj o |iiS|iS(N(RRat onlypluginst _onlyplugins(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR%s cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR+s cCs"|idj o |iiS|iS(N(RRatplugoptst _plugopts(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR0s cCs ||_dS(N(R(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR6scCs"|idj o |iiS|iS(N(RRat usealloptionst_usealloptions(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR=s cCs7|it|tptdn||_dS(Ns*SoSOptions.usealloptions expects a boolean(RRRRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRCs cCs"|idj o |iiS|iS(N(RRatall_logst _all_logs(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRJs cCs7|it|tptdn||_dS(Ns%SoSOptions.all_logs expects a boolean(RRRRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRPs cCs"|idj o |iiS|iS(N(RRatlog_sizet _log_size(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRWs cCs4|i|djotdn||_dS(Nis5SoSOptions.log_size expects a value greater than zero(RRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR]s  cCs"|idj o |iiS|iS(N(RRatbatcht_batch(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRes cCs7|it|tptdn||_dS(Ns"SoSOptions.batch expects a boolean(RRRRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRks cCs"|idj o |iiS|iS(N(RRatbuildt_build(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRrs cCs7|it|tptdn||_dS(Ns"SoSOptions.build expects a boolean(RRRRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRxs cCs"|idj o |iiS|iS(N(RRat verbosityt _verbosity(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCsA|i|djp |djotdn||_dS(Niis+SoSOptions.verbosity expects a value [0..3](RRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRatverifyt_verify(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCsA|i|djp |djotdn||_dS(Niis(SoSOptions.verify expects a value [0..3](RRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRatquiett_quiet(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs7|it|tptdn||_dS(Ns"SoSOptions.quiet expects a boolean(RRRRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRatdebugt_debug(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs7|it|tptdn||_dS(Ns"SoSOptions.debug expects a boolean(RRRRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRatcase_idt_case_id(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRat customer_namet_customer_name(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRatprofilest _profiles(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRat list_profilest_list_profiles(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRat config_filet _config_file(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRaR*t_tmp_dir(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR*s cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR*s cCs"|idj o |iiS|iS(N(RRatreportt_report(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs7|it|tptdn||_dS(Ns#SoSOptions.report expects a boolean(RRRRR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs"|idj o |iiS|iS(N(RRatcompression_typet_compression_type(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs cCs|i||_dS(N(RR(R,RP((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs c Cstdt|_}|idddddddtd d |id d dd ddddd ddt|idddd ddddd ddt|idddd ddddd ddt|idddd ddddd ddt|iddddd dd!dd"d d#|id$d%dddd&dtd d'|id(dddd)dtd d*|id+dddd,dtd d-|id.dddd/dtd d0|id1d2dd3dd4d d5|id6d7dddd8dtd d9|id6d:dddd;dtd d<|id=dd3dd>d d?|id@ddddAd dB|idCddddAd dD|idEdFdd ddGdddtd dH|idIddddJdt|idKddddLd dM|idNddddOd dP|idQddddRd dSdd]|idTddddUd dVdt|idWdXddYd dZdd[|i|d\S(^s) Parse command line options and argumentst option_classs-ls--list-pluginsRMt store_trueRNRtdefaultthelps)list plugins and available plugin optionss-ns--skip-pluginsRHRttypetstringsdisable these pluginss-es--enable-pluginsRsenable these pluginss-os--only-pluginsRsenable these plugins onlys-ks--plugin-optionRs7plugin options in plugname.option=value format (see -l)s --log-sizetstoreRi tints)set a limit on the size of collected logss-as --alloptionsRs%enable all options for loaded pluginss --all-logsRs-collect all available logs regardless of sizes--batchRs(batch mode - do not prompt interactivelys--buildRs;preserve the temporary directory and do not package resultss-vs --verbosetcountRsincrease verbosityRs--verifyRs+perform data verification during collections--quietRsonly print fatal errorss--debugRs6enable interactive debugging using the python debuggers--ticket-numberRsspecify ticket numbers --case-idsspecify case identifiers-ps --profileRs-enable plugins selected by the given profiless--list-profilesRs--nameRsspecify report names --config-fileRs$specify alternate configuration files --tmp-dirR*s%specify alternate temporary directorys --no-reportRsDisable HTML/XML reportings-zs--compression-typeRsDcompression technology to use [auto, gzip, bzip2, xz] (default=auto)RiN(R@RGRRt add_optionR\RRat parse_args(R,RRR((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR s              N(7R>R?R\RRRRRRRRRRRRRRRRRRRRRRRRaRR-RtpropertyRtsetterRRRRRRRRRRRRRRRRRRR*RRR(((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs   t SoSReportcBseZdZdZdZdZdZdZdZdZ dZ e d Z d d Z d Zd ZdZdZdZdZdZdZdZdZddZdZdZdZdZdZdZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&d&Z'd'Z(d(Z)d)Z*d*Z+d+Z,d,Z-d-Z.d.Z/d/Z0d0Z1RS(1sThe main sosreport classc Cst|_t|_t|_t|_h|_d|_d|_ ||_ d|_ y)ddk }|i |i |iWntj onXt||_|i|iytii|_Wn tj o|idnX|ii|_tii|ii|ii }tii!| pti"|ti# o5d|}|d7}t$i%i&||idn||_ t'i(ddd|i |_)t*|i)|_ |i+dS( Niistemporary directory %s s"does not exist or is not writable itprefixssos.R.(,Rtloaded_pluginstskipped_pluginst all_optionsRWt xml_reporttglobal_plugin_optionsRaRt tempfile_utilt_argstsys_tmptsignaltSIGTERMtget_exit_handlerR:Rtoptst _set_debugt _read_configRXtpoliciestloadtpolicytKeyboardInterruptt_exittis_roott_is_rootR2tpathtabspatht get_tmp_dirR*tisdirtaccesstW_OKRERhRR0tmkdtempttmpdirR)t_set_directories(R,RRttmptmsg((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR-bsB            $   cCs%|iidtdtfdS(Ns %s ssosreport (version %s)(R{R|t_R(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt print_headerscCsuh |id6|id6|id6|id6|id6|id6|iid6|id6|id 6|i d 6|i d 6S( NtcmddirtlogdirtrptdirRtsoslogRRt xmlreportt cmdlineoptstconfigR( RRRRRRRRRRR(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt get_commonss          cCs |iiS(N(RR8(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt get_temp_filescCstii|i|ii}|iidjo(|ii}|||i|_ nt ||i|_ |i i |ii ot ntdS(NR(R2RtjoinRRtget_archive_nameRRtget_preferred_archiveRRt set_debugRtTrueR\(R,t archive_namet auto_archive((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt _set_archivescCsF|ii|id|ii|id|ii|iddS(Ni(RtmakedirsRRR(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_make_archive_pathsscCsd|_d|_d|_dS(Nt sos_commandstsos_logst sos_reports(RRR(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs  cCs3|iio|it_t|_n t|_dS(N(RRt _exceptionREt excepthookRt raise_pluginsR\(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs   c Cs{ttdptii oti|||n@ddk}ti|||dddtit |i dS(s* Wrap exception in debugger if not in tty tps1iNtlimitiRg( thasattrRERhtisattyt__excepthook__tpdbt tracebacktprint_exceptionRFRBtpm(tetypeteval_tetraceR((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs!  icCs tdS(N(t SystemExit(R,terror((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRscsfd}|S(NcsidS(N(R(tsignumtframe(R,(s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt exit_handlers((R,R((R,s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRscCsct|_|iio|ii}nd}y|iit|Wntj onXdS(Ns /etc/sos.conf(RRRRtreadfpR4tIOError(R,R((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs  cCsFtid|_|iiti|i|_|iiti|ii }|i ti d|iti |ii ||iiptiti}|i ti d|iio7|iidjo$|iti|itinU|iio7|iidjo$|iti |itin|iti|ii |ntid|_|iiti |i|_|iiti|ii }|i ti d|ii ||iipLtiti}|i ti d|iti |ii |ndS(NRXs&%(asctime)s %(levelname)s: %(message)ss %(message)siitsos_ui(tloggingt getLoggerRtsetLeveltDEBUGRt sos_log_fileR3t FileHandlerRt setFormattert FormattertINFOt addHandlerRRt StreamHandlerRERhRtWARNINGR{tsos_ui_log_fileRF(R,tflogtconsolet ui_fhandlert ui_console((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_setup_loggingsB          cCst|ddo/|ii|iidtiiddnt|ddo/|ii|i idtiiddndS(NRRNRssos.logR#sui.log( tgetattrRaRRzRRR2RRR#(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt _add_sos_logss cCscg}|iiddoCg}|iiddidD]}||iq?~}n|S(NtpluginstdisableRI(Rt has_optiontgetRJtstrip(R,tdisabledt_[1]tplugin((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_get_disabled_pluginss <cCs|ii}t|iiptSt|dptS|o|i|i otSt g}|iD]}|||iijqm~S(NR( RRRRRRR\t_is_not_specifiedRtany(R,t plugin_classRR1tp((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_is_in_profile#s cCs#||iijp||ijS(N(RRR3(R,t plugin_name((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt _is_skipped-scCs=||ii o#||iijo||iijS(N(Rt check_enabledRRR(R,R9t pluginClass((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt _is_inactive1scCs=||ii o#||iijo||iijS(N(Rtdefault_enabledRRR(R,R9R<((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_is_not_default6scCs|iio||iijS(N(RR(R,R9((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR4;s tunknowncCs/|ii|i||i|fdS(N(RR RR(R,R6treason((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_skip?s  cCs,|ii|i||ifdS(N(RR RR(R,R6((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_loadFs  c Csddk}t|i}|i}t|_t|_t|i i}x|D]}t i i |\}}y8t |t|ii}t|pwXn|ii|} |ii| pN|iitd||i idjo|i| tdwXqn| ioB|i o7|iitd||i| tdwXn|ii|t| do|ii| in|i| } | p|i| tdwXn|i|o|i| td wXn|i || o|i| td wXn|i!|| o|i| td wXn| o| } |i"|o$| o|i| td wXn|i#| WqXt$j o:} |iitd || f|i%oqqXXqXWdS(Nis%plugin %s does not validate, skippingisdoes not validates7plugin %s requires root permissionsto execute, skippings requires rootRtexcludedtskippedtinactivetoptionals not specifieds(plugin %s does not install, skipping: %s(&t sos.pluginsRR+t get_modulesRt plugin_namestsetRRRR2RtsplitextRttupleRtvalid_subclassest match_plugintvalidate_pluginRtwarningRRRBt requires_rootRR|R RtupdateR8R:R=R?R4RCR:R( R,RXthelperR+tusing_profilestplugtplugbasetexttplugin_classesR6t in_profiletdefault_profilete((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt load_pluginsLsh        cCsz|iioixf|iD]W\}}xHt|i|iD]1\}}t|dtjot|dRRR{RRRRRRRRRRRRRR(R,RRaRVR\((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRbs0)      cCsqg}|idtx1|iD]&\}}|id||ifq!W|iiddi|dddS(sWFetch version information from all plugins and store in the report version files sosreport: %ss%s: %stcontents RNs version.txtN(R RRtversionRRR(R,tversionsRaRV((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR{s cCs|iitd|iidd}xt|iD]v}|d7}|d\}}d|t|i|f}|iidjod|}n d|}|iip!t i i |t i i ny|i Wq<tj o q<ttfj o}|itjoH|iid|iid|i|iid|idn|ion|i|d q<|ion|i|d q<Xq<W|iiddS( Ns! Running plugins. Please wait ...Riis Running %d/%d: %s... s %ss%s s %s while collecting plugin datatcollect(R{R|RR^RRRRRRERFRR9RRRRRRRRRRR(R,t plugruncounttiRaRVt status_lineR\((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRsF        c Csx]|iD]R\}}xC|iD]8}y(|ii|dti|dWq q Xq Wq Wy&|iitii|i dWnst t fj oa}|i t joH|iid|iid|i|iid|idqnXdS(Ntsrcpaths sosreport.xmlRs %s while writing report datai(Rt copied_filesRRzR2tstatRRRRRRRRR{RRR(R,RaRVtoneFileR\((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRs&     c Cst}x,|iD]!\}}td|}x$|iD]}|it|q8W|io|it|inx9|iD].}|it d|ddd|dqWx?|i D]4}|it d|ddddd |d qWx-|i D]"\}}|it d|qW|i|qWya|i} t|i} | i| | i|ii| id tiid d Wnsttfj oa} | itjoH|iid|iid| i|iid|i dqnXdS(NRRthrefs..tdstpathtexet return_codeis../RgRNRssos.txtRs %s while writing text reporti(!RRRtalertstaddRt custom_textRRRtexecuted_commandsRt copy_stringsRRRtunicodeRR9RRzRR2RRRRRRR{RRR( R,RRaRVtsectiontalertR<RcRR5toutputR\((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt plain_reportsF            cCsy|iWnsttfj oa}|itjoH|iid|iid|i|iid|idqnXdS(NRs %s while writing HTML reporti( t _html_reportRRRRR{RRR(R,R\((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt html_reports  c Cs|i}|idt}t}xR|iD]G\}}x+|iD] }|id|||fqKW|i|q5W|id|idd}xjtt|D]V}|id||||ft|dd}|d jo|id qqW|d jp|id n|id |id |id x|D]}|id|qYW|idxO|iD]D\}}y|i } Wn|i oqqX|i| qW|id|i |i i |idtiidddS(Ns Sos System Report s%s: %ss

Loaded Plugins:

s is iiiss
%s
s

Alerts:

ssRNRssos.html(RRRRRR trangeRtdivmodRRR9RRzRR2RR( R,trfdt allAlertst plugNamesRaRVRtrrRthtml((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyRsX                    cCsx|iD]\}}y|iWq ttfj o}|itjoH|iid|iid|i|iid|i dn|i on|i |dq |i on|i |dq Xq WdS(NRs% %s while post-processing plugin dataitpostproc( RRRRRRR{RRRRR(R,RaRVR\((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR.s$     cCsQ|ptSt|d}ti|}|i|i|i|iS(Ntrb(R\R4thashlibR8RStreadR3t hexdigest(R,Rt hash_namet archive_fptdigest((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_create_checksumAs cCsAt|d|d}|o|i|dn|idS(NReR/s (R4RR3(R,RRtchecksumtfp((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt_write_checksumKsc Cs |id}d}|iiptid}|iipttdnzy|i i |ii }Wnt t fj oU}|itjo<tdttd|itd|idqn |iioqtSnXWdti|Xn|i i}tii|}y2tii|i|}ti|||}Wn.t t fj ottd|tSXd}|iip|ii}|i||}|i|||tii|itii|} |d|} | d|} yti|| | }Wn.t t fj ottd|tSXyti| | Wqt t fj ottd | tSXn|ii|||ti |i!o|i!i"n|i#ot$|i#nt%S( Ni?sCreating compressed archive...Rs %s while finalizing archiveisError moving directory: %sResError moving archive file: %ssError moving checksum file: %s(&R*RaRRR2tumaskRRRRtfinalizeRRRRRRRRR\tget_archive_pathRtbasenameRRtrenameRtget_preferred_hash_nameRRtdisplay_resultsRtshutdownRR=RRR( R,Rt directoryt old_umaskR\tdir_namet final_dirRRt final_namet archive_hasht final_hash((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyt final_workRsr          $     cCs)|ip|iitdtStS(Nsno valid plugins were enabled(RRRRR\R(R,((s1/usr/lib/python2.6/site-packages/sos/sosreport.pytverify_pluginss cCs||i|R?RDR-RRRRRRRt staticmethodRRRRR(R*R3R8R:R=R?R4RBRCR]RcRoRsRxRRRRRRRRRRRRRRRRRRR(((s1/usr/lib/python2.6/site-packages/sos/sosreport.pyR_s^ /         *        C  3  7  "  &  ' =   `  cCst|}|idS(sThe main entry pointN(RR(RRX((s1/usr/lib/python2.6/site-packages/sos/sosreport.pytmains (ARDt __future__RRER R2RRtoptparseRRRHRt sos.utilitiesRRRRRRR R R ttimeR R t collectionsRtshutilRR0RRXRRRt sos.policiest sos.archiveRRt sos.reportingRRRRRRRRRRRBtENOSPCtEROFSRR\R(tobjectR)R@RGRWRRR(((s1/usr/lib/python2.6/site-packages/sos/sosreport.pytsF     4   : V