
    Vh                       d Z ddlmZ ddlZddlZddlmZ  G d dej                        Z G d	 d
e      Z	 G d de	      Z
 G d de      Z G d de      Z G d de      Z ee      D  ci c]  } | j                         |  c} Zyc c} w )z3Become abstraction for interacting with test hosts.    )annotationsN   )get_subclassesc                  x    e Zd ZdZedd       Zeej                  dd              Z	ej                  dd       Z
y)Becomez&Base class for become implementations.c                6    | j                   j                         S )The name of this plugin.)__name__lowerclss    M/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/become.pynamezBecome.name   s     ||!!##    c                     y)AThe name of the Ansible become plugin that is equivalent to this.N selfs    r   methodzBecome.method       r   c                     y)<Return the given command, if any, with privilege escalation.Nr   )r   commands     r   prepare_commandzBecome.prepare_command   r   r   Nreturnstrr   	list[str]r   r    )r
   
__module____qualname____doc__classmethodr   propertyabcabstractmethodr   r   r   r   r   r   r      sW    0$ $ P  P 	K Kr   r   )	metaclassc                  *    e Zd ZdZedd       ZddZy)DoaszBecome using 'doas'.c                    t        d      )r   z+Ansible has no built-in doas become plugin.)NotImplementedErrorr   s    r   r   zDoas.method!   s     ""OPPr   c                    ddg}|r)|j                  ddt        j                  |      g       |S |j                  dg       |S )r   doasz-nsh-cz-sextendshlexjoinr   r   becomes      r   r   zDoas.prepare_command&   sF    $MM4uzz'':;<  MM4&!r   Nr   r   r
   r!   r"   r#   r%   r   r   r   r   r   r*   r*      s    Q Q	r   r*   c                  4    e Zd ZdZedd       Zedd       Zy)DoasSudozgBecome using 'doas' in ansible-test and then after bootstrapping use 'sudo' for other ansible commands.c                     y)r	   	doas_sudor   r   s    r   r   zDoasSudo.name5   s     r   c                     yr   sudor   r   s    r   r   zDoasSudo.method:        r   Nr   r
   r!   r"   r#   r$   r   r%   r   r   r   r   r9   r9   2   s+    q   r   r9   c                  *    e Zd ZdZedd       ZddZy)SuzBecome using 'su'.c                     y)r   sur   r   s    r   r   z	Su.methodC   s     r   c                ^    g d}|r&|j                  dt        j                  |      g       |S )r   )rD   z-lrootr0   r1   r5   s      r   r   zSu.prepare_commandH   s)    %MM4G!456r   Nr   r   r7   r   r   r   rB   rB   @   s     r   rB   c                  4    e Zd ZdZedd       Zedd       Zy)SuSudozeBecome using 'su' in ansible-test and then after bootstrapping use 'sudo' for other ansible commands.c                     y)r	   su_sudor   r   s    r   r   zSuSudo.nameU   s     r   c                     yr=   r   r   s    r   r   zSuSudo.methodZ   r?   r   Nr   r@   r   r   r   rH   rH   R   s+    o   r   rH   c                  *    e Zd ZdZedd       ZddZy)SudozBecome using 'sudo'.c                     yr=   r   r   s    r   r   zSudo.methodc   r?   r   c                `    ddg}|r'|j                  ddt        j                  |      g       |S )r   r>   z-inr/   r0   r1   r5   s      r   r   zSudo.prepare_commandh   s/    %MM4uzz'':;<r   Nr   r   r7   r   r   r   rM   rM   `   s     r   rM   )r#   
__future__r   r&   r3   utilr   ABCMetar   r*   r9   rB   rH   rM   r   SUPPORTED_BECOME_METHODSr   s   0r   <module>rT      s    9 " 
 
Ks{{ K$6 (t  $R 6 $ 8Ff7MNCHHJON Ns   .B
