o .&a#@sddlmZddlmZddlmZddlmZddgZdgZdd gZej ej gZ ej ej gZd Zd Zd Zd ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Z d*d+Z!d,S)-) constants)emrutils) exceptions) OrderedDict RetryCount RetryPeriodKMSKeyIdCustomProviderLocationCustomProviderClassz--emrfs Consistent=true/falsez--emrfs Encryption=ClientSidez.--emrfs Encryption=ClientSide,ProviderType=KMSz1--emrfs Encryption=ClientSide,ProviderType=Customc Csxg}t|t|dr$|tjtjtjtj| dtj tj tj gdt |}|tjtjtj|dtj|d|S)NCUSTOMr )pathnameargs) relative_pathregion)_verify_emrfs_args_need_to_configure_cseappendrbuild_bootstrap_actionrEMRFS_CSE_CUSTOM_S3_GET_BA_PATHS3_GET_BA_NAME S3_GET_BA_SRCgetS3_GET_BA_DESTEMRFS_CUSTOM_DEST_PATHS3_GET_BA_FORCE_build_ba_args_to_setup_emrfs build_s3_linkCONFIG_HADOOP_PATH EMRFS_BA_NAME)r emrfs_argsbootstrap_actionsemrfs_setup_ba_argsr#F/usr/lib/python3/dist-packages/awscli/customizations/emr/emrfsutils.pybuild_bootstrap_action_configs s6  r%cCs:t|t|}t|dr|d|tj<tj|d}|S)Nr r )Classification Properties)r_build_emrfs_propertiesrrr!EMRFS_CSE_CUSTOM_PROVIDER_URI_KEY EMRFS_SITE)r emrfs_propertiesemrfs_configurationr#r#r$build_emrfs_confiuration=s r-cCs4d|vr|dtvrtj|ddd|vr'd|vr'tj|d|ddd|vrp|dtjkrpd|vr?tjtdd|dt vrOtj |dd|ddkr`t | t tn|dd krpt | ttd |vr|t| ttt|dst| t tt|d st| ttdSdS) N Encryption) encryptionSSE)sser/ ProviderType object_namemissing) provider_typeKMSr Consistent)upperENCRYPTION_TYPESrUnknownEncryptionTypeError#BothSseAndEncryptionConfiguredErrorrEMRFS_CLIENT_SIDEMissingParametersErrorCSE_OPTION_NAMECSE_PROVIDER_TYPESUnknownCseProviderTypeError_verify_required_argskeysCSE_KMS_REQUIRED_KEYSCSE_KMS_OPTION_NAMECSE_CUSTOM_REQUIRED_KEYSCSE_CUSTOM_OPTION_NAME_verify_child_argsCONSISTENT_OPTIONAL_KEYSCONSISTENT_OPTION_NAMErr r#r#r$rLsP        rcsHtfdd|Dr"ttt|t}tj|t|ddS)Nc3s|]}|vVqdSNr#.0x actual_keysr#r$ xz(_verify_required_args..r3) anylistsortedset differencerr>rjoin)rQ required_keysr4 missing_keysr#rPr$rBws rBcsHtfdd|Dr"ttt|t}tjt||ddS)Nc3s|]}|vVqdSrLr#rMrPr#r$rRrSz%_verify_child_args..)invalidparent_object_name) rTrUrVrW intersectionrInvalidEmrFsArgumentsErrorrrY)rQ child_keysr] invalid_keysr#rPr$rHsrHcCst|}t|SrL)r(_create_ba_args)r r+r#r#r$rsrcCst}t|r t||t|rt||t|dr t||dt|dr+t||dd|vrB|dD] }t |\}}|||<q4|S)zR Assumption: emrfs_args is valid i.e. all required attributes are present r7r Args) r"_need_to_configure_consistent_view&_update_properties_for_consistent_view_need_to_configure_sse_update_properties_for_sser_update_properties_for_cserrsplit_to_key_value)r r+ arg_valuekeyvaluer#r#r$r(s       r(cCsd|vS)Nr8r#rKr#r#r$rdsrdcCs"d|vpd|vo|dtjkS)Nr0r.)r9rEMRFS_SERVER_SIDErKr#r#r$rfsrfcCs2d|vo|dtjkod|vo|d|kS)Nr.r2)r9rr=)r cse_typer#r#r$rsrcCsRt|d|tj<d|vrt|d|tj<d|vr't|d|tj<dSdS)Nr8rr)strlowerrEMRFS_CONSISTENT_KEYEMRFS_RETRY_COUNT_KEYEMRFS_RETRY_PERIOD_KEY)r+r r#r#r$res   recCs*d|vr|dnd}t||tj<dS)Nr0T)rorpr EMRFS_SSE_KEY)r+r sse_valuer#r#r$rgsrgcCsNd|tj<|dkrtj|tj<|d|tj<dS|dkr%|d|tj<dSdS)Ntruer7rr r )r EMRFS_CSE_KEY&EMRFS_CSE_KMS_PROVIDER_FULL_CLASS_NAME+EMRFS_CSE_ENCRYPTION_MATERIALS_PROVIDER_KEYEMRFS_CSE_KMS_KEY_ID_KEY)r+r rnr#r#r$rhs  rhcCs|tj||dSrL)rrEMRFS_BA_ARG_KEY)ba_args key_valuer#r#r$_update_emrfs_ba_argss r~cCs8g}|D]\}}|}|r|d|}t||q|S)N=)itemsr~)r+r|rkrlr}r#r#r$rbs  rbN)"awscli.customizations.emrrrrbotocore.compatrrIrDrF EMRFS_KMS EMRFS_CUSTOMr@r=rmr:rJr?rErGr%r-rrBrHrr(rdrfrrergrhr~rbr#r#r#r$s8     +