
    C                         d Z ddlmZ ddlmZ ddlmZ ddlZddlZ ej                  ej                         G d de	             Z
y)zLBase SSHTroubleshooter class for each category of ssh troubleshooting check.    )absolute_import)division)unicode_literalsNc                       e Zd ZdZdZdZdZd Zej                  d        Z
ej                  d        Zej                  d        Zd Zd Zy)	SshTroubleshooterzA class whose instance is a ssh troubleshooter.

  Test authors should subclass Troubleshooter for each troubleshooter
  subcategory.
  Nc                     t         )z;Initialize with project and instance object, and zone.
    NotImplementedErrorselfs    <lib/googlecloudsdk/command_lib/compute/ssh_troubleshooter.py__init__zSshTroubleshooter.__init__'   
         c                     t         )zZHook method for checking prerequisite for troubleshooting before troubleshoot action.
    r	   r   s    r   check_prerequisitez$SshTroubleshooter.check_prerequisite,   
     r   c                     t         )zTHook method for cleaning troubleshooting resource after troubleshooting action.
    r	   r   s    r   cleanup_resourcesz#SshTroubleshooter.cleanup_resources2   r   r   c                     t         )z'Hook method for troubleshooting action.r	   r   s    r   troubleshootzSshTroubleshooter.troubleshoot8   r   r   c                 $    | j                          y N)runr   s    r   __call__zSshTroubleshooter.__call__=   s    HHJr   c                 d    | j                          | j                          | j                          y r   )r   r   r   r   s    r   r   zSshTroubleshooter.run@   s&    r   )__name__
__module____qualname____doc__projectzoneinstancer   abcabstractmethodr   r   r   r   r    r   r   r   r      su     '	$(
  
  
  r   r   )r    
__future__r   r   r   r$   sixadd_metaclassABCMetaobjectr   r&   r   r   <module>r,      sF     S &  ' 
 
 3;;' '  'r   