Ë
    ¸~ÞeË  ã                   óÆ   — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ g d¢Z G d„ de«      Zdd„Zdd„Zdd„Zy)z%Deployment code for the sysinfo tool.é    N)Ú	Formatter)Ú	getLogger)ÚRotatingFileHandler)ÚDeferred)ÚmaybeDeferred)Ú
namedClass)ÚVERSION)ÚBaseConfiguration)Úformat_sysinfo)ÚSysInfoPluginRegistry)ÚLoadÚDiskÚMemoryÚTemperatureÚ	ProcessesÚLoggedInUsersÚNetworkc                   ó®   ‡ — e Zd ZdZeZdZ ej                  «       dk7  reej                  j                  d«      fz  ZdZdZˆ fd„Zˆ fd„Zd	„ Zd
„ Zˆ xZS )ÚSysInfoConfigurationz9Specialized configuration for the Landscape sysinfo tool.)z/etc/landscape/client.confr   z~/.landscape/sysinfo.confz/var/lib/landscape/client/Úsysinfoc                 ó@   •— t         ‰| �  «        d | j                  d<   y )NÚconfig)ÚsuperÚ__init__Ú_command_line_defaults)ÚselfÚ	__class__s    €ú>/usr/lib/python3/dist-packages/landscape/sysinfo/deployment.pyr   zSysInfoConfiguration.__init__+   s   ø€ Ü‰ÑÔà04ˆ×#Ñ# HÒ-ó    c                 óø   •— t         ‰| �  «       }|j                  ddd¬«       |j                  ddd¬«       |j                  dt        dd	¬
«       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.)ÚmetavarÚhelpz--exclude-sysinfo-pluginszhComma-delimited list of sysinfo plugins to NOT use. This always take precedence over plugins to include.z--widthéP   z(Maximum width for each column of output.)ÚtypeÚdefaultr#   zDefault plugins: {}z, )r   Úmake_parserÚ
add_optionÚintÚformatÚjoinÚALL_PLUGINSÚepilog)r   Úparserr   s     €r   r'   z SysInfoConfiguration.make_parser0   s“   ø€ ô
 ‘Ñ$Ó&ˆà×ÑØØ!ð2ð 	ô 	
ð 	×ÑØ'Ø!ð"ð 	ô 	
ð 	×ÑØÜØØ;ð	 	ô 	
ð .×4Ñ4°T·Y±Y¼{Ó5KÓLˆŒØˆr   c                 óf   — |j                  d«      D �cg c]  }|j                  «       ‘Œ c}S c c}w )Nú,)ÚsplitÚstrip)r   Úplugin_specÚxs      r   Úget_plugin_namesz%SysInfoConfiguration.get_plugin_namesP   s'   € Ø#.×#4Ñ#4°SÓ#9Ö:˜a�—‘•	Ò:Ð:ùÒ:s   ”.c           
      óR  — | j                   €t        }n| j                  | j                   «      }| j                  €g }n| j                  | j                  «      }|D �cg c]	  }||vsŒ|‘Œ }}|D �cg c]&  } t	        d|j                  «       › d|› �«      «       ‘Œ( c}S c c}w c c}w )Nzlandscape.sysinfo.ú.)Úsysinfo_pluginsr,   r5   Úexclude_sysinfo_pluginsr   Úlower)r   ÚincludeÚexcluder4   ÚpluginsÚplugin_names         r   Úget_pluginsz SysInfoConfiguration.get_pluginsS   s¹   € Ø×ÑÐ'Ü!‰Gà×+Ñ+¨D×,@Ñ,@ÓAˆGØ×'Ñ'Ð/Ø‰Gà×+Ñ+¨D×,HÑ,HÓIˆGØ%Ö:˜¨°'Ò)9’1Ð:ˆÐ:ð
  'ö	
ð ðŒJØ$ [×%6Ñ%6Ó%8Ð$9¸¸;¸-ÐHóõ ò
ð 	
ùò ;ùò
s   Á	BÁ'BÁ1+B$)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚversionÚdefault_config_filenamesÚosÚgetuidÚpathÚ
expanduserÚdefault_data_dirÚconfig_sectionr   r'   r5   r?   Ú__classcell__)r   s   @r   r   r      sf   ø„ ÙCà€Gà>ÐØ€r‡y�yƒ{�aÒØ Ø�G‰G×ÑÐ:Ó;ð%
ñ 	
Ð ð 4Ðà€Nô5ô
ò@;ö
r   r   c                 ó~   — | €:t        j                  «       dk(  rd} | S t         j                  j                  d«      } | S )zs
    Work out the correct path to store logs in depending on the effective
    user id of the current process.
    r   z/var/log/landscapez~/.landscape)rF   rG   rH   rI   )Úlandscape_dirs    r   Úget_landscape_log_directoryrO   e   sA   € ð
 ÐÜ�9‰9‹;˜!ÒØ0ˆMð Ðô ŸG™G×.Ñ.¨~Ó>ˆMØÐr   c                 óX  — t        | «      } t        d«      }d|_        t        j                  j                  | «      st        j                  | «       t        j                  j                  | d«      }t        |dd¬«      }|j                  |«       |j                  t        d«      «       y )Nzlandscape-sysinfoFzsysinfo.logi Ð é   )ÚmaxBytesÚbackupCountz'%(asctime)s %(levelname)-8s %(message)s)rO   r   Ú	propagaterF   rH   ÚisdirÚmkdirr+   r   Ú
addHandlerÚsetFormatterr   )rN   ÚloggerÚlog_filenameÚhandlers       r   Úsetup_loggingr\   r   s†   € Ü/°Ó>€MÜÐ*Ó+€FØ€FÔÜ�7‰7�=‰=˜Ô'Ü
�‰�ÔÜ—7‘7—<‘< ¨}Ó=€LÜ!ØØØô€Gð
 ×Ñ�gÔØ×ÑœÐ#LÓMÕNr   c                 óÚ  ‡‡‡‡‡‡	— 	 t        «        ‰€
t	        «       Št        «       Š‰j                  | d¬«       ‰j                  «       D ]  }‰j                  |«       Œ ˆˆfd„Š	ˆ	ˆfd„Š‰�Gt        «       Š‰j                  ˆˆfd„«       ˆfd„}‰j                  |«       ‰j                  «        ‰S  ‰«       Š‰S # t        $ r"}t        j                  d|› �«       Y d}~ŒÓd}~ww xY w)	zQ
    @param reactor: The reactor to (optionally) run the sysinfo plugins in.
    zUnable to setup logging. NT)Ú!accept_nonexistent_default_configc           	      ó    •— t        t        ‰j                  «       ‰j                  «       ‰j	                  «       ‰j
                  d¬«      «       y )Nz  )ÚwidthÚindent)Úprintr   Úget_headersÚ	get_notesÚget_footnotesr`   )Úresultr   r   s    €€r   Úshow_outputzrun.<locals>.show_output”   sA   ø€ ÜÜØ×#Ñ#Ó%Ø×!Ñ!Ó#Ø×%Ñ%Ó'Ø—l‘lØôõ	
r   c                  óB   •— ‰j                  «       j                  ‰ «      S ©N)ÚrunÚaddCallback)rg   r   s   €€r   Úrun_sysinfozrun.<locals>.run_sysinfoŸ   s   ø€ Ø�{‰{‹}×(Ñ(¨Ó5Ð5r   c                  ó8   •— t        ‰«      j                  ‰ «      S ri   )r   ÚchainDeferred)Údonerl   s   €€r   ú<lambda>zrun.<locals>.<lambda>¨   s   ø€ ”M +Ó.×<Ñ<¸TÓB€ r   c                 ó@   •— ‰j                  d‰j                  «       | S )Nr   )Ú	callLaterÚstop)rf   Úreactors    €r   Ústop_reactorzrun.<locals>.stop_reactor«   s   ø€ ð ×Ñ˜a §¡Ô.ØˆMr   )r\   ÚOSErrorÚsysÚexitr   r   Úloadr?   Úaddr   ÚcallWhenRunningÚaddBothrj   )
Úargsrt   r   ÚeÚpluginru   r   ro   rl   rg   s
    ``   @@@@r   rj   rj   ‚   sá   ý€ ð2ÜŒð €Ü'Ó)ˆÜ!Ó#€Fð ‡K�K�¸€KÔ=Ø×$Ñ$Ó&ò ˆØ�‰�FÕðõ	
õ6ð Ðô ‹zˆØ×ÑÜBô	
ô	ð 	�‰�\Ô"Ø�‰Œð €Kñ ‹}ˆØ€Køô[ ò 2Ü�‰Ð,¨Q¨CÐ0×1Ñ1ûð2ús   ˆ
B? Â?	C*ÃC%Ã%C*ri   )NN)rC   rF   rw   Úloggingr   r   Úlogging.handlersr   Útwisted.internet.deferr   r   Útwisted.python.reflectr   Ú	landscaper	   Úlandscape.lib.configr
   Úlandscape.sysinfo.sysinfor   r   r,   r   rO   r\   rj   © r   r   ú<module>rˆ      sS   ðÙ +Û 	Û 
Ý Ý Ý 0å +Ý 0Ý -å Ý 2Ý 4Ý ;ò€ôE
Ð,ô E
óP
óOô 3r   