3 ܓiq @sdZy ddlZWnek r,ddlZYnXGdddZGdddeZGdddeZd d ZGd d d eZGd ddeZ GdddeZ GdddeZ GdddeZ GdddeZ ddZGdddZGdddeZGdddeZdS)zS This provides a restricted tag language to define the sos report index/report Nc@s eZdZiZddZddZdS)NodecCs tj|jS)N)jsondumpsdata)selfr/usr/lib/python3.6/reporting.py__str__sz Node.__str__cCsdS)NFr)rnoderrrcan_addsz Node.can_addN)__name__ __module__ __qualname__rr r rrrrrsrc@seZdZdZdS)Leafz0Marker class that can be added to a Section nodeN)r r r__doc__rrrrr"src@s(eZdZdZddZddZddZdS) Reportz?The root element of a report. This is a container for sections.cCs i|_dS)N)r)rrrr__init__)szReport.__init__cCs t|tS)N) isinstanceSection)rr rrrr ,szReport.can_addcGs*x$|D]}|j|r|j|j|j<qWdS)N)r rname)rnodesr rrradd/s  z Report.addN)r r rrrr rrrrrr&srcCst|tr|S|jddS)z3returns a string text for a given unicode/str inpututf8ignore)rstrdecode)srrr_decode5src@s(eZdZdZddZddZddZdS) rzeA section is a container for leaf elements. Sections may be nested inside of Report objects only.cCst||_i|_dS)N)rrr)rrrrrr>s zSection.__init__cCs t|tS)N)rr)rr rrrr BszSection.can_addcGs4x.|D]&}|j|r|jj|jgj|jqWdS)N)r r setdefaultADDS_TOappend)rrr rrrrEs  z Section.addN)r r rrrr rrrrrr:src@seZdZdZddZdS)CommandZcommandscCst||t|d|_dS)N)r return_codehref)rr)rrr"r#rrrrOszCommand.__init__N)r r rrrrrrrr!Ksr!c@seZdZdZddZdS) CopiedFileZ copied_filescCst|t|d|_dS)N)rr#)rr)rrr#rrrrYszCopiedFile.__init__N)r r rrrrrrrr$Usr$c@seZdZdZddZdS) CreatedFileZ created_filescCst|t|d|_dS)N)rr#)rr)rrr#rrrrbszCreatedFile.__init__N)r r rrrrrrrr%^sr%c@seZdZdZddZdS)AlertZalertscCst||_dS)N)rr)rcontentrrrrkszAlert.__init__N)r r rrrrrrrr&gsr&c@seZdZdZddZdS)NoteZnotescCst||_dS)N)rr)rr'rrrrssz Note.__init__N)r r rrrrrrrr(osr(cCs |jdS)a Return True if 'string' ends with a backslash, and False otherwise. Define this as a named function for no other reason than that pep8 now forbids binding of a lambda expression to a name: 'E731 do not assign a lambda expression, use a def' \)endswith)stringrrrends_bswsr,c@seZdZdZdZdZdZdZdZdZ dZ dZ d Z dZ d Zd d Zeed dfeeddfeeddfeeddfeeddffZgZddZddZddZdS)PlainTextReportz@Will generate a plain text report from a top_level Report objectz * %(name)sz ! %sz * %szLoaded Plugins:z %(name)s z%(name)s=Hz- commands executed:z- files copied:z- files created:z - alerts:z - notes:cCsttj|j|_dS)N)sorteddictitemsr report_data)rZ report_noderrrrszPlainTextReport.__init__c Cs8g|_}t|jdkr$|j|j|j|jd}d}t|j}xL|jD]B\}}||jd|i7}|d7}||jdkrJ||krJ||j7}qJW||j 7}|j|x^|jD]T\}}|j|j |j|j d|ix*|j D] \}} } } |j ||j| | | qWqWt|jdkr |j|jdjtdd|} | S)Nrr.rr/cSst|tr|S|jddS)Nrr)rrr)irrrsz)PlainTextReport.unicode..)line_buflenHEADERr PLUGLISTHEADERr6 PLUGLISTITEMPLUGLISTMAXITEMS PLUGLISTSEPPLUGLISTFOOTER PLUGDIVIDER PLUGINFORMAT subsectionsprocess_subsectionrFOOTERjoinmap) rr:liner8Z plugcountZ section_name_Zsection_contentsZtype_format_headerfooteroutputrrrunicodes2          zPlainTextReport.unicodecCs`||kr\|jj|x.t|j|dddD]}|jj||q,Wt|dkr\|jj|dS)NcSst|tr|dSdS)Nrr.)rr4)xrrrr9sz4PlainTextReport.process_subsection..)keyr)r:r r3getr;)rZsectionrQrLrKrMitemrrrrEs  z"PlainTextReport.process_subsectionN)r r rrr<rFLEAFALERTNOTEr=r>r@r?rArCrBr!r$r%r&r(rDr:rrOrErrrrr-s,    "r-c@sveZdZdZdZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zeed dfeeddfeeddfeeddfeeddffZdS) HTMLReportz:Will generate a HTML report from a top_level Report objecta Sos System Report zz(
  • %(name)s
  • z
  • %s
  • z#

    Loaded Plugins:

    z* z r0z
    %(name)s
    z/

    Plugin %(name)s

    z
    z

    Commands executed:

      z
    z

    Files copied:

      z

      Files created:

        z

        Alerts:

          z

          Notes:

            N)r r rrr<rFrTrUrVr=r>r@r?rArCrBr!r$r%r&r(rDrrrrrWs$    rWc@seZdZdZddZdS) JSONReportz:Will generate a JSON report from a top_level Report objectcCstj|jddd}|S)NF)indentZ ensure_ascii)rrr6)rrNrrrrOszJSONReport.unicodeN)r r rrrOrrrrrXsrX)rr ImportErrorZ simplejsonrrrrrr!r$r%r&r(r,r-rWrXrrrrs$      K&