o
    .&ßaí  ã                   @   sn   d dl Z d dlZd dlZdZG dd„ dƒZG dd„ deƒZG dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZdS )é    Nzcodedeploy.onpremises.ymlc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚSystemzgOnly Ubuntu Server, Red Hat Enterprise Linux Server and Windows Server operating systems are supported.c                 C   s    |j | _ | j jd|jd�| _d S )NÚs3)Úregion_name)ÚsessionÚcreate_clientÚregionr   ©ÚselfÚparams© r   úJ/usr/lib/python3/dist-packages/awscli/customizations/codedeploy/systems.pyÚ__init__   s
   þzSystem.__init__c                 C   ó   t dƒ‚)NÚvalidate_administrator©ÚNotImplementedError©r	   r   r   r   r   "   ó   zSystem.validate_administratorc                 C   r   )NÚinstallr   r   r   r   r   r   %   r   zSystem.installc                 C   r   )NÚ	uninstallr   r   r   r   r   r   (   r   zSystem.uninstallN)Ú__name__Ú
__module__Ú__qualname__ÚUNSUPPORTED_SYSTEM_MSGr   r   r   r   r   r   r   r   r      s    ÿr   c                   @   sD   e Zd ZdZdZd ee¡ZdZdd„ Zdd„ Z	d	d
„ Z
dd„ ZdS )ÚWindowsz C:\ProgramData\Amazon\CodeDeployzconf.onpremises.ymlz{0}\{1}zcodedeploy-agent.msic                 C   s   t jj ¡ s
tdƒ‚d S )Nz.You must run this command as an Administrator.)ÚctypesÚwindllÚshell32ÚIsUserAnAdminÚRuntimeErrorr   r   r   r   r   2   s
   ÿÿzWindows.validate_administratorc                 C   s  d|v r|j | _tjg d¢tjtjd�}| ¡ \}}d}|jdkr,||vr,td |¡ƒ‚| j	j
|j|jd�}t| jdƒ�}| |d	  ¡ ¡ W d   ƒ n1 sPw   Y  tjd
 | j¡dddgdd� t g d¢¡ tjg d¢tjtjd�}| ¡ \}}d|vr…tdƒ‚d S )NÚ	installer©úpowershell.exeú-CommandzStop-Serviceú-NameÚcodedeployagent©ÚstdoutÚstderrú;Cannot find any service with service name 'codedeployagent'r   ú,Failed to stop the AWS CodeDeploy Agent:
{0}©ÚBucketÚKeyÚwbÚBodyz.\{0}z/quietz/lz".\codedeploy-agent-install-log.txtT)Úshell)r"   r#   zRestart-Servicer$   r%   )r"   r#   zGet-Servicer$   r%   ÚRunningz:The AWS CodeDeploy Agent did not start after installation.)r    Ú	INSTALLERÚ
subprocessÚPopenÚPIPEÚcommunicateÚ
returncoder   Úformatr   Ú
get_objectÚbucketÚkeyÚopenÚwriteÚreadÚ
check_call)r	   r
   ÚprocessÚoutputÚerrorÚ	not_foundÚresponseÚfr   r   r   r   8   sJ   ù	ÿÿÿ
ýúù	ÿÿzWindows.installc                 C   sX   t jg d¢t jt jd�}| ¡ \}}d}|jdkr|  ¡  d S ||vr*td |¡ƒ‚d S )Nr!   r&   r)   r   r*   )r3   r4   r5   r6   r7   Ú_remove_agentr   r8   )r	   r
   r@   rA   rB   rC   r   r   r   r   o   s   ù	ÿ
ÿÿzWindows.uninstallc                 C   s@   t jg d¢t jt jd�}| ¡ \}}|jdkrtd |¡ƒ‚d S )N)ÚwmicÚproductÚwherezname="CodeDeploy Host Agent"Úcallr   z/nointeractiver&   r   z1Failed to uninstall the AWS CodeDeploy Agent:
{0})r3   r4   r5   r6   r7   r   r8   )r	   r@   rA   rB   r   r   r   rF   „   s   ù	
ÿÿÿzWindows._remove_agentN)r   r   r   Ú
CONFIG_DIRÚCONFIG_FILEr8   ÚCONFIG_PATHr2   r   r   r   rF   r   r   r   r   r   ,   s    7r   c                   @   sT   e Zd ZdZeZd ee¡ZdZdd„ Z	dd„ Z
dd	„ Zd
d„ Zdd„ Zdd„ ZdS )ÚLinuxz/etc/codedeploy-agent/confz{0}/{1}r   c                 C   s   t  ¡ dkr
tdƒ‚d S )Nr   z"You must run this command as sudo.)ÚosÚgeteuidr   r   r   r   r   r   �   s   ÿzLinux.validate_administratorc                 C   sò   d|v r|j | _|  |¡ |  |¡ | jj|j|jd�}t| jdƒ�}| 	|d  
¡ ¡ W d   ƒ n1 s6w   Y  t ddd | j¡g¡ | j ¡ }tj ¡ }|j|d< |j|d	< |j|d
< |jd urj|j|d< tjd | j¡dg|d� d S )Nr    r+   r.   r/   Úchmodz+xz./{0}Ú
AWS_REGIONÚAWS_ACCESS_KEY_IDÚAWS_SECRET_ACCESS_KEYÚAWS_SESSION_TOKENÚauto)Úenv)r    r2   Ú_update_systemÚ_stop_agentr   r9   r:   r;   r<   r=   r>   r3   r?   r8   r   Úget_credentialsrO   ÚenvironÚcopyr   Ú
access_keyÚ
secret_keyÚtoken)r	   r
   rD   rE   ÚcredentialsÚenvironmentr   r   r   r   ¡   s,   

ÿÿ







þzLinux.installc                 C   s&   |   |¡}|jdkr|  |¡ d S d S )Nr   )rY   r7   rF   )r	   r
   r@   r   r   r   r   ¼   s   

ÿzLinux.uninstallc                 C   r   )NÚ
preinstallr   r   r   r   r   rX   Á   r   zLinux._update_systemc                 C   r   )NÚremove_agentr   r   r   r   r   rF   Ä   r   zLinux._remove_agentc                 C   sJ   t jg d¢t jt jd�}| ¡ \}}|jdkr#|j|vr#td |¡ƒ‚|S )N)Úserviceúcodedeploy-agentÚstopr&   r   r*   )r3   r4   r5   r6   r7   Únot_found_msgr   r8   )r	   r
   r@   rA   rB   r   r   r   rY   Ç   s   ýÿzLinux._stop_agentN)r   r   r   rK   ÚDEFAULT_CONFIG_FILErL   r8   rM   r2   r   r   r   rX   rF   rY   r   r   r   r   rN   —   s    rN   c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚUbuntuc                 C   s    t  g d¢¡ t  g d¢¡ d S )N)úapt-getú-yÚupdate)rk   rl   r   zruby2.0©r3   r?   r   r   r   r   rX   Ö   s   zUbuntu._update_systemc                 C   ó   t  g d¢¡ d S )N)Údpkgz-rre   rn   r   r   r   r   rF   Ú   ó   zUbuntu._remove_agentc                 C   ó   d|_ t | |¡S )Nz&codedeploy-agent: unrecognized service©rg   rN   rY   r   r   r   r   rY   Ý   ó   zUbuntu._stop_agentN©r   r   r   rX   rF   rY   r   r   r   r   rj   Õ   s    rj   c                   @   ri   )ÚRHELc                 C   ro   )N)Úyumrl   r   Úrubyrn   r   r   r   r   rX   ã   rq   zRHEL._update_systemc                 C   ro   )N)rw   rl   Úerasere   rn   r   r   r   r   rF   æ   rq   zRHEL._remove_agentc                 C   rr   )Nz<Redirecting to /bin/systemctl stop  codedeploy-agent.servicers   r   r   r   r   rY   é   rt   zRHEL._stop_agentNru   r   r   r   r   rv   â   s    rv   )	r   rO   r3   rh   r   r   rN   rj   rv   r   r   r   r   Ú<module>   s   k>