o
    .&ßa   ã                   @   s´   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
 d dlmZ dZdZdZdZd	Zd
ZdddddœZdddddœZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) é    N)ÚurlopenÚURLError)ÚSystemÚUbuntuÚWindowsÚRHEL©Útimeoutéd   é
   é€   é   z^[A-Za-z0-9+=,.@_-]+$z2^arn:aws:iam::[0-9]{12}:user/[A-Za-z0-9/+=,.@_-]+$zinstance-namez--instance-name <instance-name>Tz/Required. The name of the on-premises instance.)ÚnameÚsynopsisÚrequiredÚ	help_textziam-user-arnz--iam-user-arn <iam-user-arn>Fz@Optional. The IAM user associated with the on-premises instance.c                 C   s0   |j r|j | _ n| j d¡| _ | j stdƒ‚d S )NÚregionzRegion not specified.)r   ÚsessionÚget_config_variableÚRuntimeError)ÚparamsÚparsed_globals© r   úH/usr/lib/python3/dist-packages/awscli/customizations/codedeploy/utils.pyÚvalidate_region2   s   
ÿr   c                 C   sT   | j r&t t| j ¡stdƒ‚| j  d¡rtdƒ‚t| j ƒtkr(td t¡ƒ‚d S d S )Nz*Instance name contains invalid characters.zi-z%Instance name cannot start with 'i-'.z3Instance name cannot be longer than {0} characters.)	Úinstance_nameÚreÚmatchÚINSTANCE_NAME_PATTERNÚ
ValueErrorÚ
startswithÚlenÚMAX_INSTANCE_NAME_LENGTHÚformat©r   r   r   r   Úvalidate_instance_name;   s   ÿÿúr%   c                 C   sr   | j r5t| j ƒtkrtd t¡ƒ‚| j D ]"}t|d ƒtkr%td t¡ƒ‚t|d ƒtkr4td t¡ƒ‚qd S d S )Nz.Instances can only have a maximum of {0} tags.ÚKeyz-Tag Key cannot be longer than {0} characters.ÚValuez/Tag Value cannot be longer than {0} characters.)Útagsr!   ÚMAX_TAGS_PER_INSTANCEr   r#   ÚMAX_TAG_KEY_LENGTHÚMAX_TAG_VALUE_LENGTH)r   Útagr   r   r   Úvalidate_tagsI   s.   ÿÿ
ÿÿÿÿÿòr-   c                 C   s$   | j rt t| j ¡stdƒ‚d S d S )NzInvalid IAM user ARN.)Úiam_user_arnr   r   ÚIAM_USER_ARN_PATTERNr   r$   r   r   r   Úvalidate_iam_user_arn`   s
   ÿþr0   c              	   C   s–   t  ¡ dkr tj ¡ d }d|v rt| ƒ| _d|v rt| ƒ| _nt  ¡ dkr+t| ƒ| _d| vr4tt	j
ƒ‚z
tddd	� td
ƒ‚ ttfyJ   Y d S w )NÚLinuxr   r   zRed Hat Enterprise Linux Serverr   Úsystemz(http://169.254.169.254/latest/meta-data/é   r   z'Amazon EC2 instances are not supported.)Úplatformr2   ÚawscliÚcompatÚlinux_distributionr   r   r   r   r   ÚUNSUPPORTED_SYSTEM_MSGr   r   r	   )r   Údistributionr   r   r   Úvalidate_instancef   s&   

€
ÿÿr:   c                 C   sp   |  dd¡}|| v r4t| |ƒ}|r6t dt|ƒ¡}|r)| d¡| _| d¡| _d S td 	|  dd¡¡ƒ‚d S d S )Nú-Ú_zs3://(.+?)/(.+)r3   é   zC--{0} must specify the Amazon S3 URL format as s3://<bucket>/<key>.)
ÚreplaceÚgetattrr   r   ÚstrÚgroupÚbucketÚkeyr   r#   )r   Úarg_nameÚs3_locationÚmatcherr   r   r   Úvalidate_s3_locationz   s    

ÿþørG   )r4   r   Úawscli.compatr5   r   r   Ú(awscli.customizations.codedeploy.systemsr   r   r   r   Úsocketr	   r"   r)   r*   r+   r   r/   ÚINSTANCE_NAME_ARGÚIAM_USER_ARN_ARGr   r%   r-   r0   r:   rG   r   r   r   r   Ú<module>   s8   û
û
	