HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/awscli/customizations/emr/__pycache__/createcluster.cpython-36.pyc
3

�U_�c�@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)@sVeZdZdZejZdejd�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�g&Z6e7j8d9d:�Z9e7j8d9d;�Z:d<d=�Z;d>d?�Z<d@dA�Z=dBdC�Z>dDdE�Z?dFdG�Z@dHdI�ZAdJdK�ZBdLdM�ZCdNdO�ZDdPdQ�ZEdRdS�ZFdTS)U�
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-usersZ
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-levelZinteger)rZ
cli_type_namerzmanaged-scaling-policyzplacement-group-configsZemrzcreate-cluster-synopsis.txtzcreate-cluster-examples.rstcCs�i}|j|d<|j|�d}|jdkr@|jdk	r@tjdd|d��|jdkrn|jdk	rnd|jkrntjdd|d��|jdk	r�|jdk	r�tjd	d
d��i}|jdk	r�t	j
|j�|d<ntj|j|j
|jd
�|d<|jdk	�r |j|d<|jdk	�r ytj|j�|d<Wntk
�rtd��YnX|jdk�rh|jdk	�rhtjd|j�}|dk�r^tj|jd��|j|d<tj|d|j�tj|d|j�|jdk	�r�tj|d|j�|jdk�r�t|_|jdk�r�i|_t|jd<tj|d|j�|jdk	�r$x4|dD](}d|j�k�r�|j dk�r�tj!���q�Wtj|d|j �|j"dk	�rPtj|d|j"�|j#dk�rn|j$dk�rnd|_#tj%|j#d|j$d�|d<tj%|j&d |j'd!�|d"<|j(dk�r�|j)dk�r�d|_(tj%|j(d#|j)d$�|d%<tj*|j+�|d&<||d'<|jdk	�r|j,||jd(�tj%|j-d)|j.d*�}|jdk�r8|dk�r8tj/�|dk�r\|j0|d+|j1||�gd,�|j2dk	�r�|jdk�r�t3j4|j5|j2|dd-�\}	}
}|j0|d.|	�|j0|d/|
�|j0|d+|�n(g|d0<x|j2D]}|d0j6|��q�W|j7}
|
dk	�r8t8j9|
j:d1�|
j:d2�d3�}tj;t<j=t<j>t<j?|d4�}|j0|d+|g�|j@dk	�rT|jA||j@d5�|jBdk	�rt|jC||jB|jd6�|jDdk	�r�tEjF|jD|j5|jd7�}|j0|d+|d,�|jGdk	�r�tj|d8|jG�|jHdk	�r�tj|d9|jH�|jIdk	�r�tj|d:tJ|jI��|jKdk	�rtj|d;|jK�|jLdk	�r6tj|d<|jL�|jMdk	�rL|jM|d=<|jNdk	�rhtj|d>|jN�|jOdk	�r�tj|d?|jO�|jP|�tjQ|jRd@||j5|jS|jT�}|jU|�}tjV|jRd@||�dAS)BN�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&ZInstanceFleets)�instance_groups�
instance_type�instance_countZInstanceGroupsZReleaseLabel�Configurationsz=aws: error: invalid json argument for option --configurationsz\d?\..*)�ami_versionZ
AmiVersionZAdditionalInfoZLogUriZLogEncryptionKmsKeyIdZServiceRoleZAutoScalingPolicyZAutoScalingRoleZScaleDownBehaviorFz--no-auto-terminatez--auto-terminateZKeepJobFlowAliveWhenNoStepsz--termination-protectedz--no-termination-protectedZTerminationProtectedz--visible-to-all-usersz--no-visible-to-all-usersZVisibleToAllUsersZTags�	Instances)�cluster�parsed_attrsz--enable-debuggingz--no-enable-debuggingZSteps)r/�key�value)�regionZparsed_applicationsr-ZNewSupportedProducts�BootstrapActionsZApplicationsZDirZ
BackupVersion)�dirZbackup_version)�jarr�action_on_failure�args)r/�parsed_boostrap_actions)r/�
emrfs_args�
release_label)Zparsed_step_listr3r;ZSecurityConfigurationZCustomAmiIdZEbsRootVolumeSizeZRepoUpgradeOnBootZKerberosAttributesZStepConcurrencyLevelZManagedScalingPolicyZPlacementGroupConfigsZrun_job_flowr)Wr�#_validate_release_label_ami_version�use_default_roles�service_roler�MutualExclusiveOptionErrorZec2_attributesr)Zinstance_fleetsrZ"validate_and_build_instance_fleetsrZ"validate_and_build_instance_groupsr*r+r;rr�loads�
ValueErrorr-�re�matchZInvalidAmiVersionErrorrZ
apply_dictZadditional_infoZlog_uriZlog_encryption_kms_key_idrr�keysZauto_scaling_roleZMissingAutoScalingRoleErrorZscale_down_behaviorZno_auto_terminaterZapply_boolean_optionsrZno_termination_protectedZvisible_to_all_usersZno_visible_to_all_usersZ
parse_tagsr�_build_ec2_attributesZenable_debuggingZno_enable_debuggingZLogUriError�_update_cluster_dict�_build_enable_debuggingr!rZbuild_applicationsr3�append�restore_from_hbase_backupr	Z$build_hbase_restore_from_backup_args�get�
build_steprZHBASE_JAR_PATHZHBASE_RESTORE_STEP_NAMEZCANCEL_AND_WAIT�bootstrap_actions�_build_bootstrap_actionsr"�_handle_emrfs_parametersr#r
Zbuild_step_config_listZsecurity_configurationZ
custom_ami_idZebs_root_volume_size�intZrepo_upgrade_on_bootZkerberos_attributesZstep_concurrency_levelZmanaged_scaling_policyZplacement_group_configs�_validate_required_applicationsZcallZ_sessionZendpoint_urlZ
verify_ssl�_construct_resultZdisplay_response)�self�parsed_args�parsed_globals�paramsZservice_role_validation_messageZinstances_configZis_valid_ami_versionZinstance_groupZdebugging_enabledZapp_listZba_listZ	step_listZapplicationZhbase_restore_configr8Zstep_configZ
steps_listZrun_job_flow_responseZconstructed_result�rV�#/usr/lib/python3.6/createcluster.py�_run_main_command�sd




























zCreateCluster._run_main_commandcCs>d}d}|dk	r$|jd�}|jd�}|dk	r6||d�SiSdS)NZ	JobFlowId�
ClusterArn)Z	ClusterIdrY)rJ)rRZrun_job_flow_resultZ	jobFlowIdZ
clusterArnrVrVrWrQts

zCreateCluster._construct_resultcCsx|j�}|d}d|kr.d|kr.tjddd��d|krLd|krLtjddd��d|ks\d|krrd|ksld|krrtj�tj|d|dd	�tj|d|d
d	�tj|d|dd	�d|kr�t�|d<tj|d|ddd	�d|kr�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)Nr.ZSubnetIdZ	SubnetIds)r%r&ZAvailabilityZoneZAvailabilityZonesZKeyNameZ
Ec2KeyName)�
src_params�src_key�dest_params�dest_keyZEc2SubnetIdZEc2SubnetIdsZ	Placementr(ZJobFlowRoleZEmrManagedMasterSecurityGroupZEmrManagedSlaveSecurityGroupZServiceAccessSecurityGroupZAdditionalMasterSecurityGroupsZAdditionalSlaveSecurityGroups)rUr1r2)rDrr?ZSubnetAndAzValidationErrorr�apply_params�dict�apply)rRr/r0rDZ	instancesrVrVrWrE�sl










z#CreateCluster._build_ec2_attributesc	Cs�|jd�}|dkrg}g}t|�t|�tjkr8td��xz|D]r}i}|jd�dk	rd|jd�|d<n
tj|d<i}tj|d|dd�tj|d|dd�tj|d|d�|j	|�q>W||}t|�d	kr�||d<|S)
Nr4zGaws: error: maximum number of bootstrap actions for a cluster exceeded.r$ZPath)rZr[r\r]ZArgsZScriptBootstrapAction)rUr1r2r)
rJ�lenrZMAX_BOOTSTRAP_ACTION_NUMBERrAZBOOTSTRAP_ACTION_NAMErr^r`rH)	rRr/r9Zcluster_ba_listrLZbaZ	ba_configZscript_arg_config�resultrVrVrWrM�s8




z&CreateCluster._build_bootstrap_actionscCsL|jrtj}tjg}n tj|j�}tjtj|jd�g}tj	tj
tj||d�S)N)Z
relative_pathr3)rr7r6r8)r;rZCOMMAND_RUNNERZDEBUGGING_COMMANDrZget_script_runnerr3Z
build_s3_linkZDEBUGGING_PATHrKZDEBUGGING_NAMEZTERMINATE_CLUSTER)rRrSrTr6r8rVrVrWrG�s
z%CreateCluster._build_enable_debuggingcCs>||j�kr|||7<n|dk	r:t|�dkr:|||<|S)Nr)rDra)rRr/r1r2rVrVrWrF�s
z"CreateCluster._update_cluster_dictcCsH|jdk	r"|jdk	r"tjddd��|jdkrD|jdkrDtjddd��dS)Nz
--ami-versionz--release-label)r%r&)r-r;rr?ZRequiredOptionsError)rRrSrVrVrWr<s



z1CreateCluster._validate_release_label_ami_versioncCsrtg�}|jdk	r&tdd�|jD��}|j||�}|jdk	rVtj|krV|jtjj��t|�dkrnt	j
|d��dS)NcSsg|]}|dj��qS)r$)�lower)�.0ZapprVrVrW�
<listcomp>szACreateCluster._validate_required_applications.<locals>.<listcomp>r)r!)�setr!�#_get_missing_applications_for_stepsrIrZHBASE�add�titlerarZMissingApplicationsError)rRrS�specified_apps�missing_appsrVrVrWrPs


z-CreateCluster._validate_required_applicationscCs�ttjtjtjg�}tg�}|jdk	r�x\|jD]R}t|�t|�krDP|jd�}|dk	r.|j�}||kr.||kr.|j	|dj
��q.W|S)NZType)rfrZHIVEZPIGZIMPALAr#rarJrcrhri)rRrjrSZallowed_app_stepsrk�stepZ	step_typerVrVrWrg$s



z1CreateCluster._get_missing_applications_for_stepscCs|jrdd�|D�}|S)NcSs$g|]}|jdkr|jdkr|�qS)r>Zinstance_profile)r)rd�xrVrVrWre8s
zICreateCluster._filter_configurations_in_special_cases.<locals>.<listcomp>)r=)rRrrSZparsed_configsrVrVrW�'_filter_configurations_in_special_cases5sz5CreateCluster._filter_configurations_in_special_casescCsN|r,|j|�tj|�}|j|d|gd�ntj|j|�}|j|d|d�dS)Nr,)r/r1r2r4)�validate_no_emrfs_configurationrZbuild_emrfs_confiurationrFZbuild_bootstrap_action_configsr3)rRr/r:r;Zemrfs_configurationZemrfs_ba_config_listrVrVrWrN=s

z&CreateCluster._handle_emrfs_parameterscCs<d|kr8x.|dD]"}|dk	r|jd�tjkrtj�qWdS)Nr,ZClassification)rJrZ
EMRFS_SITErZ DuplicateEmrFsConfigurationError)rRr/�configrVrVrWroMs
z-CreateCluster.validate_no_emrfs_configurationN)G�__name__�
__module__�__qualname__�NAMEr
ZCREATE_CLUSTER_DESCRIPTIONZDESCRIPTIONZ
RELEASE_LABELZAMI_VERSIONrZINSTANCE_GROUPS_SCHEMAZINSTANCE_GROUPSZ
INSTANCE_TYPEZINSTANCE_COUNTZAUTO_TERMINATEZINSTANCE_FLEETS_SCHEMAZINSTANCE_FLEETSZCLUSTER_NAMEZLOG_URIZLOG_ENCRYPTION_KMS_KEY_IDZSERVICE_ROLEZAUTOSCALING_ROLEZUSE_DEFAULT_ROLESZCONFIGURATIONSZEC2_ATTRIBUTESZEC2_ATTRIBUTES_SCHEMAZTERMINATION_PROTECTEDZSCALE_DOWN_BEHAVIORZ
VISIBILITYZ	DEBUGGINGZTAGSZTAGS_SCHEMAZBOOTSTRAP_ACTIONSZBOOTSTRAP_ACTIONS_SCHEMAZAPPLICATIONSZAPPLICATIONS_SCHEMAZEMR_FSZ
EMR_FS_SCHEMAZSTEPS_SCHEMAZSTEPSZADDITIONAL_INFOZ HBASE_RESTORE_FROM_BACKUP_SCHEMAZRESTORE_FROM_HBASEZSECURITY_CONFIGZ
CUSTOM_AMI_IDZEBS_ROOT_VOLUME_SIZEZREPO_UPGRADE_ON_BOOTZKERBEROS_ATTRIBUTES_SCHEMAZKERBEROS_ATTRIBUTESZSTEP_CONCURRENCY_LEVELZMANAGED_SCALING_POLICY_SCHEMAZMANAGED_SCALING_POLICYZPLACEMENT_GROUP_CONFIGS_SCHEMAZPLACEMENT_GROUP_CONFIGSZ	ARG_TABLErZ	FROM_FILEZSYNOPSISZEXAMPLESrXrQrErMrGrFr<rPrgrnrNrorVrVrVrWr"s�m
F%r)rBZawscli.customizations.commandsrZawscli.customizations.emrrrrrrrr	r
rrr
Z!awscli.customizations.emr.commandrZ#awscli.customizations.emr.constantsrrZbotocore.compatrrrVrVrVrW�<module>s"