FRTc@swdZddlZddlmZddlmZddlZddlmZddlmZddlm Z ddl m Z dd l m Z dd lm Zdd lmZd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%d Z&d!Z'd"Z(d#e)fd$YZ*d%e+fd&YZ,d'Z-dS((sC This class encapsulates the provider-specific header differences. iN(tsix(tdatetime(tconfig(t expanduser(tConfig(tACL(tCannedACLStrings(tPolicyt header_prefixtmetadata_prefixsx-amz-sx-goog-s acl-headers auth-headerscopy-source-headerscopy-source-version-id-headerscopy-source-range-headersdelete-marker-headers date-headersmetadata-directive-headersresumable-upload-headerssecurity-token-headers storage-classs mfa-headersserver-side-encryption-headersversion-id-headersrestore-headertStorageCopyErrortStorageCreateErrortStorageDataErrortStoragePermissionsErrortStorageResponseErrortProfileNotFoundErrorcBseZRS((t__name__t __module__(((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyRHstProvidercBsDeZid*d6d,d6Zied6ed6Zied6ed6Z idd6d d6Z ie d6e d6Z ie d6e d6Ziiee6ed e6ed e6d e6ed e6ede6ede6ede6ede6ede6d+e6ede6ede6ede6ede6ede6ede 6d6ie!e6e!d e6e!d e6de6e!d e6e!de6d+e6e!de6e!de6e!de6e!de6e!de6d+e6e!de6d+e6d+e6d+e 6d6Z"iie#j$j%e&6e#j$j'e(6e#j$j)e*6e#j$j+e,6e#j$j-e.6d6ie#j$j/e&6e#j$j0e(6e#j$j1e*6e#j$j2e,6e#j$j3e.6d6Z4d+d+d+d+dZ5dZ6dZ7e8e6e7Z9dZ:dZ;e8e:e;Z<d Z=d!Z>e8e=e>Z?d"Z@d+d+d+d+d#ZAd$ZBd%ZCd&ZDd'ZEd(ZFd)ZGRS(-taws_access_key_idtaws_secret_access_keytaws_security_tokent aws_profiletawstgs_access_key_idtgs_secret_access_keytgooglets3tgssmeta-tacltAWSs copy-sourcescopy-source-version-idscopy-source-rangetdates delete-markersmetadata-directivessecurity-tokensserver-side-encryptions version-ids storage-classtmfatrestoretGOOG1t resumablec Csd|_d|_d|_||_||_||_||_||_|j |j|_ |j |j|_ d|_ tjjtdd|d}tdt|_tjj|r|jj|n|j|||||j|jd|j|j}tjd|r8tjd||_nd|j|j}tjd|rvtjd||_nd|j|j} tjd| rtjd| |_ndS( Nt~t.t credentialstdo_loads%s_hostt Credentialss%s_ports%s_host_header(tNonethosttportt host_headert access_keyt secret_keytsecurity_tokent profile_nametnamet AclClassMapt acl_classt CannedAclsMapt canned_aclst_credential_expiry_timetostpathtjoinRRtFalsetshared_credentialstisfiletload_from_pathtget_credentialstconfigure_headerstconfigure_errorst HostKeyMapRt has_optiontgettgetint( tselfR1R-R.R/R0t shared_patht host_opt_namet port_opt_namethost_header_opt_name((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyt__init__s6         "  cCs |jr|jn|jS(N(t_credentials_need_refresht#_populate_keys_from_metadata_servert _access_key(RE((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytget_access_keys  cCs ||_dS(N(RM(REtvalue((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytset_access_keyscCs |jr|jn|jS(N(RKRLt _secret_key(RE((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytget_secret_keys  cCs ||_dS(N(RQ(RERO((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytset_secret_keyscCs |jr|jn|jS(N(RKRLt_security_token(RE((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytget_security_tokens  cCs ||_dS(N(RT(RERO((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytset_security_tokenscCsu|jdkrtS|jtj}|j|j|jdddd }|d krmtj j dt StSdS( Niii iii<s!Credentials need to be refreshed.i@Bi@Bi,( R6R)R:Rtutcnowt microsecondstsecondstdaystbototlogtdebugtTrue(REtdeltat seconds_left((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyRKs  c Cs|j|j\}}}}|dkr_|dk r_|jtjkr_tj|j}n|j} |dk r||_tj j dnU|jtjkrtj|j|_tj j dn|dk rq| j ||r| j |||_tj j d|qt j d||r^t j d|||_tj j d|qtd|nt| j d|r| j d||_tj j dn:t j d |rt j d ||_tj j d n|dk r ||_tj j d n|jtjkrKtj|j|_tj j d n|dk r| j ||r| j |||_tj j d |qt j d||rt j d|||_tj j d|qtd|n| j d|r(| j d||_tj j dnt j d |rbt j d ||_tj j dnt j d drt j d d} yddl} Wn$tk rtj jdnX| j| |j|_tj j dn|dk r||_tj j dnJ|dk rZ|dkrZ|dkrZ|jtjkrrtj|j|_tj j dqZ| j |pd|r| j |pd||_tj j dqZ|dk rt j d||rWtj j dt j d|||_tj j d|qWqZt j d |rZt j d ||_tj j dqZn|jdksx|jdkr|j|jr|jn|j|j|_dS(Ns$Using access key provided by client.s/Using access key found in environment variable.s@Using access key found in shared credential file for profile %s.s profile %ss2Using access key found in config file: profile %s.sProfile "%s" not found!tdefaults1Using access key found in shared credential file.R(s&Using access key found in config file.s$Using secret key provided by client.s/Using secret key found in environment variable.s@Using secret key found in shared credential file for profile %s.s2Using secret key found in config file: profile %s.s1Using secret key found in shared credential file.s&Using secret key found in config file.tkeyringisZThe keyring module could not be imported. For keyring support, install the keyring module.s"Using secret key found in keyring.s(Using security token provided by client.s3Using security token found in environment variable.s5Using security token found in shared credential file.sconfig has options6Using security token found in config file: profile %s.s*Using security token found in config file.(t CredentialMapR1R)tupperR7tenvironR;R-R[R\R]RBRCRRR.Rbt ImportErrorterrort get_passwordR/RMRQtMetadataServiceSupportRLt_convert_key_to_str( RER-R.R/R0taccess_key_nametsecret_key_nametsecurity_token_nametprofile_name_nametsharedt keyring_nameRb((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyR>s                                      cCstjjdddlm}tjddd}tjddd}|d |d |d d }|rt|j d }|d|_ |j |d|_ |d|_ |d}tj|d|_tjjd|jtj|ndS(Ns,Retrieving credentials from metadata server.i(tget_instance_metadatatBototmetadata_service_timeoutg?tmetadata_service_num_attemptsittimeoutt num_retriestdatas#meta-data/iam/security-credentials/it AccessKeyIdtSecretAccessKeytTokent Expirations%Y-%m-%dT%H:%M:%SZs.Retrieved credentials will expire in %s at: %s(R[R\R]t boto.utilsRqRtgetfloatRDtlisttvaluesRMRjRQRTRtstrptimeR6tnow(RERqRutattemptstmetadatatsecurityt expires_at((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyRLzs"      cCs t|tjrt|S|S(N(t isinstanceRt text_typetstr(REtkey((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyRjs cCs|j|j}|t|_|t|_|t|_|t|_ |t |_ |t |_ |t|_|t|_|t|_|t|_|t|_|t|_|t|_|t|_|t|_|t |_!|t"|_#dS(N($t HeaderInfoMapR1tMETADATA_PREFIX_KEYR tHEADER_PREFIX_KEYRtACL_HEADER_KEYt acl_headertAUTH_HEADER_KEYt auth_headertCOPY_SOURCE_HEADER_KEYtcopy_source_headert!COPY_SOURCE_VERSION_ID_HEADER_KEYtcopy_source_version_idtCOPY_SOURCE_RANGE_HEADER_KEYtcopy_source_range_headertDATE_HEADER_KEYt date_headertDELETE_MARKER_HEADER_KEYt delete_markertMETADATA_DIRECTIVE_HEADER_KEYtmetadata_directive_headertSECURITY_TOKEN_HEADER_KEYtsecurity_token_headertRESUMABLE_UPLOAD_HEADER_KEYtresumable_upload_headertSERVER_SIDE_ENCRYPTION_KEYtserver_side_encryption_headertSTORAGE_CLASS_HEADER_KEYtstorage_class_headertVERSION_ID_HEADER_KEYt version_idtMFA_HEADER_KEYt mfa_headertRESTORE_HEADER_KEYtrestore_header(REtheader_info_map((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyR?s(                cCsU|j|j}|t|_|t|_|t|_|t|_ |t |_ dS(N( tErrorMapR1tSTORAGE_COPY_ERRORtstorage_copy_errortSTORAGE_CREATE_ERRORtstorage_create_errortSTORAGE_DATA_ERRORtstorage_data_errortSTORAGE_PERMISSIONS_ERRORtstorage_permissions_errortSTORAGE_RESPONSE_ERRORtstorage_response_error(REt error_map((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyR@s     cCs|j|jS(N(RAR1(RE((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytget_provider_namescCs|j|jS(N(tChunkedTransferSupportR1(RE((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytsupports_chunked_transfers(saws_access_key_idsaws_secret_access_keyRRN(sgs_access_key_idsgs_secret_access_keyNN(HRRR)RcRRR2tCannedS3ACLStringstCannedGSACLStringsR4RAR:R^RRitAWS_HEADER_PREFIXRRRRRRRRRRRRRRRRRtGOOG_HEADER_PREFIXRR[t exceptiont S3CopyErrorRt S3CreateErrorRt S3DataErrorRtS3PermissionsErrorRtS3ResponseErrorRt GSCopyErrort GSCreateErrort GSDataErrortGSPermissionsErrortGSResponseErrorRRJRNRPtpropertyR-RRRSR.RURVR/RKR>RLRjR?R@RR(((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyRLs                               "       r     cCs tdS(NR(R(((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pyt get_defaults(.t__doc__R7t boto.compatRRR[RRtboto.pyami.configRt boto.gs.aclRRRt boto.s3.aclRRRRRRRRRRRRRRRRRRRRRRRRRRt ValueErrorRtobjectRR(((s:/opt/freeware/lib/python2.7/site-packages/boto/provider.pytsN  w