o
    !d                      @   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timeoutd   
         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.)nameZsynopsisrequiredZ	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   ZsessionZget_config_variableRuntimeError)paramsZparsed_globals r   Jusr/lib/python3.10/site-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.)	Z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.)Ziam_user_arnr   r   IAM_USER_ARN_PATTERNr   r   r   r   r   validate_iam_user_arn`   s
   r)   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.)platformr+   awsclicompatZlinux_distributionr   r   r   r   r   ZUNSUPPORTED_SYSTEM_MSGr   r   r	   )r   distributionr   r   r   validate_instancef   s&   


r1   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://(.+?)/(.+)r,      zC--{0} must specify the Amazon S3 URL format as s3://<bucket>/<key>.)
replacegetattrr   r   strgroupbucketkeyr   r   )r   Zarg_nameZs3_locationZmatcherr   r   r   validate_s3_locationz   s    

r;   )r-   r   Zawscli.compatr.   r   r   Z(awscli.customizations.codedeploy.systemsr   r   r   r   socketr	   r   r#   r$   r%   r   r(   ZINSTANCE_NAME_ARGZIAM_USER_ARN_ARGr   r   r'   r)   r1   r;   r   r   r   r   <module>   s8   

	