o
    !dB                     @   sj   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 e e	Z
G dd deZd	d
 ZdS )    N)BasicCommand)config)configutils)emrutils)
exceptionsc                   @   sT   e Zd ZdZeg dZdd Zdd Zdd Zd	d
 Z	dd Z
dd Zdd ZdS )CommandN)zinstall-applicationszrestore-from-hbase-backupzschedule-hbase-backupzcreate-hbase-backupzdisable-hbase-backupsc                    s   t  fdd| jD S )Nc                 3   s    | ]	}|d   kV  qdS )nameN .0xr   r	   Eusr/lib/python3.10/site-packages/awscli/customizations/emr/command.py	<genexpr>$   s    z'Command.supports_arg.<locals>.<genexpr>)anyZ	ARG_TABLE)selfr   r	   r   r   supports_arg#   s   zCommand.supports_argc                 C   s<   |  |t| j t| j|| _| || | ||S N)	_apply_configsr   get_configs_sessionr   Z
get_regionregion9_validate_unsupported_commands_for_release_based_clusters_run_main_commandr   parsed_argsparsed_globalsr	   r	   r   	_run_main&   s   
zCommand._run_mainc                 C   sn   |  ||}i }|D ]}|| |||j  ||j ||j< q
|r)td|  ntd td|  d S )Nz"Updated arguments with configs: %szNo configs appliedzRunning command with args: %s)_get_applicable_configurationsaddr   LOGdebug)r   r   parsed_configsZapplicable_configurationsZconfigs_addedconfigurationr	   r	   r   r   /   s   


zCommand._apply_configsc                    s0   t | } fdd|D }| | }|S )Nc                    s$   g | ]}|j v r| s|qS r	   )r   
is_presentr
   r   r"   r	   r   
<listcomp>J   s    
z:Command._get_applicable_configurations.<locals>.<listcomp>)r   Zget_applicable_configurations'_filter_configurations_in_special_cases)r   r   r"   configurationsr	   r%   r   r   @   s   z&Command._get_applicable_configurationsc                 C   s   |S r   r	   )r   r(   r   r"   r	   r	   r   r'   S   s   z/Command._filter_configurations_in_special_casesc                 C   s   t d)Nr   )NotImplementedErrorr   r	   r	   r   r   Z   s   	zCommand._run_main_commandc                 C   sT   | j }|| jv r$t|dr&t|j| j| j|j|j	}|r(t
j||dd S d S d S )N
cluster_id)commandrelease_label)NAME/UNSUPPORTED_COMMANDS_FOR_RELEASE_BASED_CLUSTERShasattrr   Zget_release_labelr*   r   r   Zendpoint_urlZ
verify_sslr   Z"UnsupportedCommandWithReleaseError)r   r   r   r+   r,   r	   r	   r   r   e   s   
zACommand._validate_unsupported_commands_for_release_based_clusters)__name__
__module____qualname__r   setr.   r   r   r   r   r'   r   r   r	   r	   r	   r   r      s    	r   c                 K   s^   t |dkr|d dkrdnd}|r+t|}|  D ]}|dd|v r*d| | _qd S d S )N   r   helpFT-_)lenr   r   keysreplacerequired)Zargument_tableargsZsessionkwargsZneed_to_overrider"   Zarg_namer	   r	   r   override_args_required_optiont   s   

r>   )loggingZawscli.customizations.commandsr   Zawscli.customizations.emrr   r   r   r   	getLoggerr0   r    r   r>   r	   r	   r	   r   <module>   s   
\