509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
èhjÍ  ã               @   s:   d dl Z d dlmZ d dlmZ G dd„ dƒZdd„ ZdS )é    N)Úrequest)ÚSubparsersActionc               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚAnalyzerc             C   s*   |j ||d�}| j||ƒ |j|d� dS )a4  
        Add subcommand to existing subcommand group

        Args:
            name(str): Subcommand name
            help_msg(str): Help message for subcommand
            func(function): Function to call on execution
            opts(list of Object()): List of Option objects to add to subcommand
        )Úhelp)ÚfuncN)Z
add_parserÚ_add_subcommand_optionsZset_defaults)ÚselfZ
subcmd_grpÚnameÚhelp_msgr   ÚoptsZ
req_parser© r   ú!/usr/lib/python3.6/sss_analyze.pyÚadd_subcommand   s    zAnalyzer.add_subcommandc             C   sr   xl|D ]d}|j tkrL|jdkr4|j|j|jdd� n|j|j|j|jdd� |j tkr|j|j|jtd� qW dS )zÍ
        Add subcommand options to subcommand parser

        Args:
            parser(str): Subcommand group parser
            opts(list of Object()): List of Option objects to add to subcommand
        NÚ
store_true)r   Úaction)r   Útype)Zopt_typeÚboolZ	short_optÚadd_argumentr	   r
   Úint)r   Úparserr   Úoptr   r   r   r      s    




z Analyzer._add_subcommand_optionsc             C   s   t jƒ }tƒ }|j||ƒ dS )zõ
        Initialize analyzer modules from modules/*

        Args:
            parser (ArgumentParser): Base parser object
            parser_grp (argparse.Action): Parser group that can have
                additional parsers attached.
        N)r   ZRequestAnalyzerr   Ú
setup_args)r   r   Ú
parser_grpZreqZclir   r   r   Úload_modules/   s    
zAnalyzer.load_modulesc             C   sb   t j}t jd|d�}|jddddgd� |jddd	d
� |jdtdd�}|jdƒ}| j||ƒ |S )zÅ
        Top-level argument setup function.
        Setup analyzer argument parsers and subcommand parser/options.

        Returns:
            parser (ArgumentParser): Base parser object
        z-Analyzer tool to assist with SSSD log parsing)ÚdescriptionZformatter_classz--sourceÚfilesZjournald)ÚdefaultÚchoicesz--logdirz/var/log/sssd/z*SSSD Log directory to parse log files from)r   r   NZCOMMANDS)Útitler   ÚmetavarÚModules)ÚargparseZRawTextHelpFormatterÚArgumentParserr   Zadd_subparsersr   Zadd_parser_groupr   )r   Z	formatterr   Z	subparserr   r   r   r   r   >   s    	


zAnalyzer.setup_argsc             C   s4   | j ƒ }|jƒ }t|dƒs&|jƒ  dS |j|ƒ d S )Nr   r   )r   Ú
parse_argsÚhasattrZ
print_helpr   )r   r   Úargsr   r   r   Úmain[   s    
zAnalyzer.mainN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r&   r   r   r   r   r      s
   r   c              C   s   t ƒ } | jƒ  d S )N)r   r&   )Zanalyzerr   r   r   Úrunf   s    r*   )r!   Zsssd.modulesr   Zsssd.parserr   r   r*   r   r   r   r   Ú<module>   s   _