o .&a:@sddlZddlmZddlmZddlmZddlmZddl m Z m Z m Z m Z mZeeZddZd d Zd d Zd dZGdddeZdS)N)CLIOperationCaller)get_policy_arn_suffix) BasicCommand)IAM) RESOURCES$LIFECYCLE_DEFAULT_ROLE_ASSUME_POLICYPOLICY_ARN_PATTERNRESOURCE_TYPE_SNAPSHOTRESOURCE_TYPE_IMAGEcCs.|dd|ddd|i}|||S)NResponseMetadata RolePolicy)popupdate)create_role_responseget_policy_responseresultrM/usr/lib/python3/dist-packages/awscli/customizations/dlm/createdefaultrole.py_construct_results   rcCs&|durt|}||||dSdSN)r_display_response)sessionoperation_namerparsed_globalscli_operation_callerrrrdisplay_response's rcCst|}t||}|Sr)rrformat)region policy_name region_suffixrole_arnrrrget_policy_arn1s r!cCs|j}|dur |d}|S)Nr)rget_config_variable)rrrrrr get_region8s r#cs\eZdZdZdZdddddeeegdeeefd gZfd d Zd d Z ddZ Z S)CreateDefaultRolezcreate-default-rolezCreates the default IAM role which will be used by Lifecycle service. If the role does not exist, create-default-role will automatically create it and set its policy. If the role has been already created, create-default-role will not update its policy. z iam-endpointTz

The IAM endpoint to call for creating the roles. This is optional and should only be specified when a custom endpoint should be called for IAM operations.

)name no_paramfile help_textz resource-typez

The resource type for which the role needs to be created. The available options are '%s' and '%s'. This parameter defaults to '%s'.

)r%defaultchoicesr'cstt||dSr)superr$__init__)selfr __class__rrr+\szCreateDefaultRole.__init__cCs\t|j||_|j|_|j|_t|jjd|j|j|j d|_ | |}t |jd||dS)zCall to run the commandsiam) region_name endpoint_urlverify create_roler) r#_session_region iam_endpoint _endpoint_url resource_type_resource_typer create_client verify_ssl _iam_client"_create_default_role_if_not_existsr)r, parsed_argsrrrrr _run_main_s" zCreateDefaultRole._run_maincCst|jd}t}|j|rtd|dStd|t|j|}|dur+t dt |t|jd}|j |sCtd|dStd||j ||}|j |||j|}t||S) zXMethod to create default lifecycle role if it doesn't exist already default_role_namezRole %s existsNz;Role %s does not exist. Creating default role for LifecyclezYYou must specify a region. You can also configure your region by running "aws configure".default_policy_namez!Managed Policy %s does not exist.zManaged Policy %s exists.)rr9rr<check_if_role_existsLOGdebugr#r4 ValueErrorr!check_if_policy_existscreate_role_with_trust_policyattach_policy_to_role get_policyr)r,r role_nameassume_role_policyrmanaged_policy_arnrrrrrr=ws<         z4CreateDefaultRole._create_default_role_if_not_exists) __name__ __module__ __qualname__NAME DESCRIPTIONr r ARG_TABLEr+r?r= __classcell__rrr-rr$?s(  r$)loggingawscli.clidriverrawscli.customizations.utilsrawscli.customizations.commandsrawscli.customizations.dlm.iamr#awscli.customizations.dlm.constantsrrrr r getLoggerrMrCrrr!r#r$rrrrs