HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/awscli/customizations/emr/__pycache__/createcluster.cpython-310.pyc
o

.&�a'e�@s�ddlZddlmZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZddlmZddlm
Z
dd
lmZddlmZddlmZddlmZddlmZGdd�de�ZdS)�N)�BasicCommand)�applicationutils)�argumentschema)�	constants)�
emrfsutils)�emrutils)�
exceptions)�
hbaseutils)�helptext)�instancegroupsutils)�instancefleetsutils)�	steputils)�Command)�
EC2_ROLE_NAME)�
EMR_ROLE_NAME)�jsonc@s�eZdZdZejZgdejd��dejd��de	j
ejd��dejd��dej
d��d	d
dejd��d
d
dd��de	jejd��ddejd��dejd��dejd��dejd��dejd��dd
ejd��dejd��deje	jd��dd
dejd��dd
dd��dejd��d d
d!ejd��d"d
d!d��d#d
d$ejd��d%d
d$d��d&d'eje	jd(��d)ej e	j!d��d*ej"e	j#d��d+ej$e	j%d��d,e	j&ej'd��d-ej(d��d.e	j)ej*d��d/ej+d��d0ej,d��d1ej-d��d2ej.d��d3e	j/ej0d��d4d5ej1d6��d7e	j2ej3d��d8e	j4ej5d��d9e	j6ej7d��Z8e9�:d:d;�Z;e9�:d:d<�Z<d=d>�Z=d?d@�Z>dAdB�Z?dCdD�Z@dEdF�ZAdGdH�ZBdIdJ�ZCdKdL�ZDdMdN�ZEdOdP�ZFdQdR�ZGdSdT�ZHdUS)V�
CreateClusterzcreate-clusterz
release-label)�name�	help_textzami-versionzinstance-groups)r�schemarz
instance-typezinstance-countzauto-terminate�
store_true�auto_terminate)r�action�
group_namerzno-auto-terminate)rrrzinstance-fleetsrzDevelopment Cluster)r�defaultrzlog-urizlog-encryption-kms-key-idzservice-rolezauto-scaling-rolezuse-default-roles)rrr�configurationszec2-attributes)rrrztermination-protected�termination_protectedzno-termination-protectedzscale-down-behaviorzvisible-to-all-users�
visibilityzno-visible-to-all-userszenable-debugging�debugzno-enable-debugging�tags�+)r�nargsrrzbootstrap-actions�applications�emrfs�stepszadditional-infozrestore-from-hbase-backupzsecurity-configurationz
custom-ami-idzebs-root-volume-sizezrepo-upgrade-on-bootzkerberos-attributeszstep-concurrency-level�integer)r�
cli_type_namerzmanaged-scaling-policyzplacement-group-configszauto-termination-policy�emrzcreate-cluster-synopsis.txtzcreate-cluster-examples.rstcCs�i}|j|d<|�|�d}|jdur |jdur tjdd|d��|jdur7|jdur7d|jvr7tjdd|d��|jdurH|jdurHtjd	d
d��i}|jdurXt	�
|j�|d<n
tj|j|j
|jd
�|d<|jdur�|j|d<|jdur�z
t�|j�|d<Wnty�td��w|jdur�|jdur�t�d|j�}|dur�tj|jd��|j|d<t�|d|j�t�|d|j�|jdur�t�|d|j�|jdur�t|_|jdur�i|_t|jd<t�|d|j�|jdu�r|dD]}d|��v�r|j du�rt�!��q�t�|d|j �|j"du�rt�|d|j"�|j#du�r(|j$du�r(d|_#t�%|j#d|j$d�|d<t�%|j&d |j'd!�|d"<|j(du�rO|j)du�rOd|_(t�%|j(d#|j)d$�|d%<t�*|j+�|d&<||d'<|jdu�ru|j,||jd(�t�%|j-d)|j.d*�}|jdu�r�|du�r�tj/�|du�r�|j0|d+|�1||�gd,�|j2du�r�|jdu�r�t3j4|j5|j2|dd-�\}	}
}|�0|d.|	�|�0|d/|
�|�0|d+|�ng|d0<|j2D]
}|d0�6|��q�|j7}
|
du�rt8j9|
�:d1�|
�:d2�d3�}tj;t<j=t<j>t<j?|d4�}|�0|d+|g�|j@du�r|jA||j@d5�|jBdu�r)|jC||jB|jd6�|jDdu�rBtEjF|jD|j5|jd7�}|j0|d+|d,�|jGdu�rPt�|d8|jG�|jHdu�r^t�|d9|jH�|jIdu�rnt�|d:tJ|jI��|jKdu�r|t�|d;|jK�|jLdu�r�t�|d<|jL�|jMdu�r�|jM|d=<|jNdu�r�t�|d>|jN�|jOdu�r�t�|d?|jO�|jPdu�r�t�|d@|jP�|�Q|�t�R|jSdA||j5|jT|jU�}|�V|�}t�W|jSdA||�dBS)CN�Namez| Either choose --use-default-roles or use both --service-role <roleName> and --ec2-attributes InstanceProfile=<profileName>.Tz--use-default-rolesz--service-role)�option1�option2�message�InstanceProfilez --ec2-attributes InstanceProfilez--instance-groupsz--instance-fleets�r)r*�InstanceFleets)�instance_groups�
instance_type�instance_count�InstanceGroups�ReleaseLabel�Configurationsz=aws: error: invalid json argument for option --configurationsz\d?\..*)�ami_version�
AmiVersion�AdditionalInfo�LogUri�LogEncryptionKmsKeyId�ServiceRole�AutoScalingPolicy�AutoScalingRole�ScaleDownBehaviorFz--no-auto-terminatez--auto-terminate�KeepJobFlowAliveWhenNoStepsz--termination-protectedz--no-termination-protected�TerminationProtectedz--visible-to-all-usersz--no-visible-to-all-users�VisibleToAllUsers�Tags�	Instances)�cluster�parsed_attrsz--enable-debuggingz--no-enable-debugging�Steps�rC�key�value)�region�parsed_applicationsr5�NewSupportedProducts�BootstrapActions�Applications�Dir�
BackupVersion)�dir�backup_version)�jarr�action_on_failure�args)rC�parsed_boostrap_actions)rC�
emrfs_args�
release_label)�parsed_step_listrIrW�SecurityConfiguration�CustomAmiId�EbsRootVolumeSize�RepoUpgradeOnBoot�KerberosAttributes�StepConcurrencyLevel�ManagedScalingPolicy�PlacementGroupConfigs�AutoTerminationPolicy�run_job_flowr)Xr�#_validate_release_label_ami_version�use_default_roles�service_roler�MutualExclusiveOptionError�ec2_attributesr/�instance_fleetsr�"validate_and_build_instance_fleetsr�"validate_and_build_instance_groupsr0r1rWrr�loads�
ValueErrorr5�re�match�InvalidAmiVersionErrorr�
apply_dict�additional_info�log_uri�log_encryption_kms_key_idrr�keys�auto_scaling_role�MissingAutoScalingRoleError�scale_down_behavior�no_auto_terminater�apply_boolean_optionsr�no_termination_protected�visible_to_all_users�no_visible_to_all_users�
parse_tagsr�_build_ec2_attributes�enable_debugging�no_enable_debugging�LogUriError�_update_cluster_dict�_build_enable_debuggingr"r�build_applicationsrI�append�restore_from_hbase_backupr	�$build_hbase_restore_from_backup_args�get�
build_stepr�HBASE_JAR_PATH�HBASE_RESTORE_STEP_NAME�CANCEL_AND_WAIT�bootstrap_actions�_build_bootstrap_actionsr#�_handle_emrfs_parametersr$r
�build_step_config_list�security_configuration�
custom_ami_id�ebs_root_volume_size�int�repo_upgrade_on_boot�kerberos_attributes�step_concurrency_level�managed_scaling_policy�placement_group_configs�auto_termination_policy�_validate_required_applications�call�_session�endpoint_url�
verify_ssl�_construct_result�display_response)�self�parsed_args�parsed_globals�params�service_role_validation_message�instances_config�is_valid_ami_version�instance_group�debugging_enabled�app_list�ba_list�	step_list�application�hbase_restore_configrT�step_config�
steps_list�run_job_flow_response�constructed_result�r��I/usr/lib/python3/dist-packages/awscli/customizations/emr/createcluster.py�_run_main_command�s�

�

�


�

�
����


��

�
�
�


���������

�������

������������
���
�

�zCreateCluster._run_main_commandcCs:d}d}|dur|�d�}|�d�}|dur||d�SiS)N�	JobFlowId�
ClusterArn)�	ClusterIdr�)r�)r��run_job_flow_result�	jobFlowId�
clusterArnr�r�r�r�{s

�zCreateCluster._construct_resultcCsx|��}|d}d|vrd|vrtjddd��d|vr&d|vr&tjddd��d|vs.d|vr9d|vs6d|vr9tj�tj|d|dd	�tj|d|d
d	�tj|d|dd	�d|vrht�|d<tj|d|ddd	�d|vr|t�|d<tj|d|ddd	�tj|d
|dd	�tj|d|dd	�tj|d|dd	�tj|d|dd	�tj|d|dd	�tj|d|dd	�tj|d|d�|S)NrB�SubnetId�	SubnetIdsr-�AvailabilityZone�AvailabilityZones�KeyName�
Ec2KeyName��
src_params�src_key�dest_params�dest_key�Ec2SubnetId�Ec2SubnetIds�	Placementr,�JobFlowRole�EmrManagedMasterSecurityGroup�EmrManagedSlaveSecurityGroup�ServiceAccessSecurityGroup�AdditionalMasterSecurityGroups�AdditionalSlaveSecurityGroups�r�rGrH)rtrrf�SubnetAndAzValidationErrorr�apply_params�dict�apply)r�rCrDrt�	instancesr�r�r�r~�s������
�
�������z#CreateCluster._build_ec2_attributesc	Cs�|�d�}|durg}g}t|�t|�tjkrtd��|D]9}i}|�d�dur1|�d�|d<ntj|d<i}tj|d|dd�tj|d|dd�tj|d|d�|�	|�q||}t|�d	krf||d<|S)
NrLzGaws: error: maximum number of bootstrap actions for a cluster exceeded.r(�Pathr��Args�ScriptBootstrapActionr�r)
r��lenr�MAX_BOOTSTRAP_ACTION_NUMBERrl�BOOTSTRAP_ACTION_NAMErr�r�r�)	r�rCrU�cluster_ba_listr��ba�	ba_config�script_arg_config�resultr�r�r�r��s@
�
���z&CreateCluster._build_bootstrap_actionscCsL|jrtj}tjg}nt�|j�}tjtj|jd�g}tj	tj
tj||d�S)N)�
relative_pathrI)rrSrRrT)rWr�COMMAND_RUNNER�DEBUGGING_COMMANDr�get_script_runnerrI�
build_s3_link�DEBUGGING_PATHr��DEBUGGING_NAME�TERMINATE_CLUSTER)r�r�r�rRrTr�r�r�r��s
��z%CreateCluster._build_enable_debuggingcCs@||��vr|||7<|S|durt|�dkr|||<|S)Nr)rtr�)r�rCrGrHr�r�r�r�s�z"CreateCluster._update_cluster_dictcCsL|jdur|jdurtjddd��|jdur"|jdur$tjddd��dSdS)Nz
--ami-versionz--release-labelr-)r5rWrrf�RequiredOptionsError)r�r�r�r�r�rc
s

�

��z1CreateCluster._validate_release_label_ami_versioncCsrtg�}|jdurtdd�|jD��}|�||�}|jdur+tj|vr+|�tj���t|�dkr7t	j
|d��dS)NcSsg|]}|d���qS)r()�lower)�.0�appr�r�r��
<listcomp>szACreateCluster._validate_required_applications.<locals>.<listcomp>r)r")�setr"�#_get_missing_applications_for_stepsr�r�HBASE�add�titler�r�MissingApplicationsError)r�r��specified_apps�missing_appsr�r�r�r�s
��

��z-CreateCluster._validate_required_applicationscCs�ttjtjtjg�}tg�}|jdurB|jD]+}t|�t|�kr#|S|�d�}|durA|��}||vrA||vrA|�	|d�
��q|S)N�Type)r�r�HIVE�PIG�IMPALAr$r�r�r�r�r�)r�r�r��allowed_app_stepsr��step�	step_typer�r�r�r�+s"
�


��z1CreateCluster._get_missing_applications_for_stepscCs|jr
dd�|D�}|S)NcSs$g|]}|jdkr|jdkr|�qS)re�instance_profile)r)r��xr�r�r�r�?s


�zICreateCluster._filter_configurations_in_special_cases.<locals>.<listcomp>)rd)r�rr��parsed_configsr�r�r��'_filter_configurations_in_special_cases<sz5CreateCluster._filter_configurations_in_special_casescCsP|r|�|�t�|�}|j|d|gd�dSt�|j|�}|j|d|d�dS)Nr4rFrL)�validate_no_emrfs_configurationr�build_emrfs_confiurationr��build_bootstrap_action_configsrI)r�rCrVrW�emrfs_configuration�emrfs_ba_config_listr�r�r�r�Ds 
�
��
�z&CreateCluster._handle_emrfs_parameterscCs<d|vr|dD]}|dur|�d�tjkrtj�qdSdS)Nr4�Classification)r�r�
EMRFS_SITEr� DuplicateEmrFsConfigurationError)r�rC�configr�r�r�rTs��z-CreateCluster.validate_no_emrfs_configurationN)I�__name__�
__module__�__qualname__�NAMEr
�CREATE_CLUSTER_DESCRIPTION�DESCRIPTION�
RELEASE_LABEL�AMI_VERSIONr�INSTANCE_GROUPS_SCHEMA�INSTANCE_GROUPS�
INSTANCE_TYPE�INSTANCE_COUNT�AUTO_TERMINATE�INSTANCE_FLEETS_SCHEMA�INSTANCE_FLEETS�CLUSTER_NAME�LOG_URI�LOG_ENCRYPTION_KMS_KEY_ID�SERVICE_ROLE�AUTOSCALING_ROLE�USE_DEFAULT_ROLES�CONFIGURATIONS�EC2_ATTRIBUTES�EC2_ATTRIBUTES_SCHEMA�TERMINATION_PROTECTED�SCALE_DOWN_BEHAVIOR�
VISIBILITY�	DEBUGGING�TAGS�TAGS_SCHEMA�BOOTSTRAP_ACTIONS�BOOTSTRAP_ACTIONS_SCHEMA�APPLICATIONS�APPLICATIONS_SCHEMA�EMR_FS�
EMR_FS_SCHEMA�STEPS_SCHEMA�STEPS�ADDITIONAL_INFO� HBASE_RESTORE_FROM_BACKUP_SCHEMA�RESTORE_FROM_HBASE�SECURITY_CONFIG�
CUSTOM_AMI_ID�EBS_ROOT_VOLUME_SIZE�REPO_UPGRADE_ON_BOOT�KERBEROS_ATTRIBUTES_SCHEMA�KERBEROS_ATTRIBUTES�STEP_CONCURRENCY_LEVEL�MANAGED_SCALING_POLICY_SCHEMA�MANAGED_SCALING_POLICY�PLACEMENT_GROUP_CONFIGS_SCHEMA�PLACEMENT_GROUP_CONFIGS�AUTO_TERMINATION_POLICY_SCHEMA�AUTO_TERMINATION_POLICY�	ARG_TABLEr�	FROM_FILE�SYNOPSIS�EXAMPLESr�r�r~r�r�r�rcr�r�rr�rr�r�r�r�r!s���������
��������������������!��#��&��)��+��-��0��2��5��7��:��=��@��C��F��H��K��M��O��Q��S��V��Y��\��_��cr
F%r)rm�awscli.customizations.commandsr�awscli.customizations.emrrrrrrrr	r
rrr
�!awscli.customizations.emr.commandr�#awscli.customizations.emr.constantsrr�botocore.compatrrr�r�r�r��<module>s$