~edZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z ddl m Z dd l mZdd lmZdd lmZdd lmZgd ZGddeZddZddZddZy)z%Deployment code for the sysinfo tool.N) Formatter) getLogger)RotatingFileHandler)Deferred) maybeDeferred) namedClass)VERSION)BaseConfiguration)format_sysinfo)SysInfoPluginRegistry)LoadDiskMemory Temperature Processes LoggedInUsersNetworkceZdZdZeZdZejdk7reejjdfz ZdZ dZ fdZ fdZd Zd ZxZS) SysInfoConfigurationz9Specialized configuration for the Landscape sysinfo tool.)z/etc/landscape/client.confrz~/.landscape/sysinfo.confz/var/lib/landscape/client/sysinfoc@t|d|jd<y)Nconfig)super__init___command_line_defaults)self __class__s >/usr/lib/python3/dist-packages/landscape/sysinfo/deployment.pyrzSysInfoConfiguration.__init__+s 04##H-ct|}|jddd|jddd|jdtdd d j d j t |_|S) zg Specialize L{Configuration.make_parser}, adding any sysinfo-specific options. z--sysinfo-plugins PLUGIN_LISTzNComma-delimited list of sysinfo plugins to use. Default is to use all plugins.)metavarhelpz--exclude-sysinfo-pluginszhComma-delimited list of sysinfo plugins to NOT use. This always take precedence over plugins to include.z--widthPz(Maximum width for each column of output.)typedefaultr#zDefault plugins: {}z, )r make_parser add_optionintformatjoin ALL_PLUGINSepilog)rparserrs rr'z SysInfoConfiguration.make_parser0s $& !2    '!"    ;  .44TYY{5KL  rcf|jdDcgc]}|jc}Scc}w)N,)splitstrip)r plugin_specxs rget_plugin_namesz%SysInfoConfiguration.get_plugin_namesPs'#.#4#4S#9:a :::s.c R|jt}n|j|j}|jg}n|j|j}|Dcgc] }||vs| }}|Dcgc]&}t d|j d|(c}Scc}wcc}w)Nzlandscape.sysinfo..)sysinfo_pluginsr,r5exclude_sysinfo_pluginsrlower)rincludeexcluder4plugins plugin_names r get_pluginsz SysInfoConfiguration.get_pluginsSs    '!G++D,@,@AG  ' ' /G++D,H,HIG%:')91:: '   J$[%6%6%8$9;-H    ; s B'B1+B$)__name__ __module__ __qualname____doc__r versiondefault_config_filenamesosgetuidpath expanduserdefault_data_dirconfig_sectionrr'r5r? __classcell__)rs@rrrsfCG>ryy{a GG  : ;%   4N5 @; rrc~|:tjdk(rd}|Stjjd}|S)zs Work out the correct path to store logs in depending on the effective user id of the current process. rz/var/log/landscapez ~/.landscape)rFrGrHrI) landscape_dirs rget_landscape_log_directoryrOesA  99;! 0M GG..~>M rcXt|}td}d|_tjj |stj |tjj|d}t|dd}|j||jtdy)Nzlandscape-sysinfoFz sysinfo.logi)maxBytes backupCountz'%(asctime)s %(levelname)-8s %(message)s) rOr propagaterFrHisdirmkdirr+r addHandler setFormatterr)rNlogger log_filenamehandlers r setup_loggingr\rs/ >M * +FF 77== ' 77<< }=L!G  g #LMNrc t t t j |djD]}j|fd fdGtjfdfd}j|jSS#t$r"}tjd|Yd}~d}~wwxYw) zQ @param reactor: The reactor to (optionally) run the sysinfo plugins in. zUnable to setup logging. NT)!accept_nonexistent_default_configc ttjjj j dy)Nz )widthindent)printr get_headers get_notes get_footnotesr`)resultrrs r show_outputzrun..show_outputsA ##%!!#%%'ll   rcBjjSN)run addCallback)rgrsr run_sysinfozrun..run_sysinfos{{}((55rc8tjSri)r chainDeferred)donerlsrzrun..sM+.<.stop_reactors   a .Mr) r\OSErrorsysexitr rloadr?addrcallWhenRunningaddBothrj) argsrtrepluginrurrorlrgs `` @@@@rrjrjs2') ! #F KKK=$$& F  6z B   \"  K} K[ 2 ,QC0112s B?? C*C%%C*ri)NN)rCrFrwloggingrrlogging.handlersrtwisted.internet.deferrrtwisted.python.reflectr landscaper landscape.lib.configr landscape.sysinfo.sysinfor r r,rrOr\rjrrrsS+ 0+0-24; E ,E P  O 3r