Ñò i'dWc@s@dZddkZddkZddkZddkiZddklZddkl Z ddk l Z ddk l Z ddk lZlZddklZlZdd klZlZdd klZdd klZdd klZdd klZddklZd„Z d„Z!d„Z"de#fd„ƒYZ$dS(s archiveadm info iÿÿÿÿN(tetree(t attrgetter(t OptionGroup(turlparse(t_t SetUIDasEUID(tUnifiedArchivetLOGFILE(tverify_credentialst ArchiveError(t InstallEngine(tES_DATA_EXCEPTION(tINSTALL_LOGGER_NAME(tTarget(tSizecCs tdƒS(s8Initialize and return usage string for 'info' subcommands‰ info [-p|--parsable | -t|--targets] [-k|--key ] [-c|--cert ] [-C|--ca-cert ] [-v|--verbose] (R(((s ../info.pyt get_usage1sc Cst|ddƒ}|idddddddtd ƒƒ|id d dddd dtd ƒƒ|idddddddtdƒƒ|idddddddtdƒƒ|idddddddtdƒƒ|idddddddtdƒƒ|i|ƒdS( sSet up the optionssRetrieve Archive Informations-ks--keytactiontstoretdesttkeythelpsPrivate key filename for HTTPS.s-cs--certtcerts"Client certificate file for HTTPS.s-Cs --ca-certtcacertsCA certificate file for HTTPS.s-ps --parsablet store_truetparsablesPrint easily parsable strings.s-ts --targetsttargetss:Output ai_manifest(4) target XML for archive origin systems-vs --verbosetverbosesReport verbose information.N(RtNonet add_optionRtadd_option_group(tparsertgroup((s ../info.pyt setup_options<s      cCsÌtitƒ}|idƒ|d}|io |iottdƒƒ‚n|ip |i o+|i o|i ottdƒƒ‚nt |dd ƒ}|i d jo»t ii|ƒ}t ii|ƒpttdƒ|ƒ‚nt ii|ƒottdƒ|ƒ‚ntƒiiƒz4t i|t iƒpttdƒ|ƒ‚nWd QXnxod d d gD]^}t||ƒ}|d j o<t ii|ƒ o(ttd ƒh|d6|d6ƒ‚q|q|Wt|i|igƒoRy&t|iƒ|i|i |iƒWqItj ottdƒƒ‚qIXntiƒ}|iddddh|d6|id 6|i d 6|id 6ƒ|i ƒ\}} |ti!joç| i"ƒ} d } t#} xxt$i%| ƒD]g} |id| ƒ| i&t'}|id|ƒt(|t)ƒo |} nt(|t*ƒo t+} qÝqÝW| otdƒ‚qœ| d j ott|ƒƒ‚qœttdt,ƒƒ‚n|i-i.i/dt0ƒ}t1||ƒ}|GHd S(s-archiveadm(1m) info subcommand implementationsarchiveadm: run_infois@archiveadm info: 'parsable' and 'targets' are mutually exclusives,archiveadm info: key and cert must be pairedtschemesarchiveadm info: %s not founds"archiveadm info: %s is a directorys archiveadm info: %s not readableNRRRs3archiveadm info: %(cred)s file '%(file)s' not foundtcredtfiles$archiveadm info: invalid credentialstInstantiateUnifiedArchives#solaris_install/archive/checkpointstkwargstpaths%s checkpoint faileds%sts)Archive query failed, see %s for details.t class_type(2tloggingt getLoggertILNtdebugRRt SystemExitRRRRRR!tosR&tabspathtexiststisdirRt__exit__t __enter__taccesstR_OKtgetattrtanyRRtgeturlt RuntimeErrorR t get_instancetregister_checkpointtexecute_checkpointst EXEC_SUCCESStpoptFalseterrsvctget_errors_by_mod_idt error_dataR t isinstanceR tKeyboardInterrupttTrueRtdoctvolatiletget_first_childRtUnifiedArchiveInfo(toptionstargstloggerR&turiR"t cred_filetenginetstatust failed_cpstfailuret archive_errortcontrolcterrtetuat archive_info((s ../info.pytrun_infoPsx  )$!            RIcBs#eZdZdd„Zd„ZRS(sšProvides formatted output for archiveadm.info based upon the UnifiedArchive passed in. Once initialized, the object may be printed directly. cCsŒt|tƒptdƒ‚n||_|o=|ipd|_|ipd|_|i pd|_ nd|_d|_d|_ dS(s Construct an info object. Arguments: ua An instance of UnifiedArchive options An optional options object s#'ua' passed not UnifiedArchive typeN( RCRt ValueErrort_uaRRt _parsableRt_targetsRt_verbose(tselfRWRJ((s ../info.pyt__init__¬s   cCsp g}t|iiƒ}dttdƒttdƒ|ƒƒjoXxAt|ƒD]3\}}|iidjo|i|ƒ}PqPqPW|i d|ƒnh}x|D]}h}d}x|i D]} || i 7}qÄW||dƒd.ƒ|d?tinsertt zfs_streamstspaceRtstrtuppertendswithtinttsplitt partitiont translateRR]R^t_origin_targetRt fromstringR R:RFtimport_from_manifest_xmltiterRERGtget_descendantsR tORIGINtget_xml_tree_strR\R?RjRkR}tarchRmtextendt archive_typeRqRrtjointappendRwtbranchRxRyR{R|RtstringtrjustRŠtget(R_toutsRtiRntgzt system_sizestsizest total_sizetstreamtsize_strtwholet_nonetpartt origin_nodeROtorigint list_systemst archive_tagst archive_entrytarchive_headertelemt system_tagst system_headerRbRzt system_entrytfmtt system_listtzlist((s ../info.pyt__repr__Às$(     +&            %% % '   N(t__name__t __module__t__doc__RR`RÂ(((s ../info.pyRI¥s (%RÅR)R.R§tsolaris_install.errsvcR@tlxmlRtoperatorRtoptparseRRtsolaris_installRRtsolaris_install.archiveRRtsolaris_install.archive.utilRR tsolaris_install.engineR R tsolaris_install.loggerR R+tsolaris_install.targetR tsolaris_install.target.sizeRRR RYtobjectRI(((s ../info.pyts(     U