ó FRTc@sddlZddlZddlZddlZddlmZmZmZdZegZ ej j edƒdƒZ e j e ƒdejkr«eejdƒgZ nLdejkr÷gZ x4ejdjdƒD]Z e j ee ƒƒq×Wnd efd „ƒYZdS( iÿÿÿÿN(t expandusert ConfigParsertStringIOs /etc/boto.cfgt~s.botot BOTO_CONFIGt BOTO_PATHt:tConfigcBs×eZdded„Zd„Zd„Zd„Zd„Zd„Z dd„Z dd„Z dd „Z dd „Z dd „Zdd „Zd d„Zed„Zd„Zd„Zdd„Zd„Zd„ZRS(cCs¿tj|idd6dd6ƒ|r»|r:|j|ƒn#|rP|j|ƒn |jtƒdtjkr»ttjdƒ}y|j |ƒWq¸t k r´t j d|ƒq¸Xq»ndS(Ns /mnt/pyamit working_dirt0tdebugtAWS_CREDENTIAL_FILEs'Unable to load AWS_CREDENTIAL_FILE (%s)( Rt__init__tload_from_pathtreadfptreadtBotoConfigLocationstostenvironRtload_credential_filetIOErrortwarningstwarn(tselftpathtfptdo_loadt full_path((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyR 6s   cCsytƒ}|jdƒxBt|dƒjƒD]+}|j|jddƒjddƒƒq,W|jdƒ|j|ƒdS( s:Load a credential file as is setup like the Java utilitiess[Credentials] trtAWSAccessKeyIdtaws_access_key_idt AWSSecretKeytaws_secret_access_keyiN(Rtwritetopent readlinestreplacetseekR(RRtc_datatline((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyRIs   ) cCs’t|ƒ}xr|jƒD]d}tjd|ƒ}|r|jdƒ}tjj|ƒ\}}|jtjj ||ƒƒqqW|j |ƒdS(Ns^#import[\s ]*([^\s^ ]*)[\s ]*$i( R"R#tretmatchtgroupRRtsplitR tjoinR(RRtfileR'R)t extended_filetdir((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyR Rs #cCs¤tƒ}|j|ƒ|j|ƒs5|j|ƒn|j|||ƒt|dƒ}|j|ƒ|jƒ|j|ƒs|j|ƒn|j|||ƒdS(sÛ Write the specified Section.Option to the config file specified by path. Replace any previous value. If the path doesn't exist, create it. Also add the option the the in-memory config. twN(RRt has_sectiont add_sectiontsetR"R!tclose(RRtsectiontoptiontvaluetconfigR((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyt save_option\s    cCs|jt|||ƒdS(N(R9tUserConfigPath(RR5R6R7((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pytsave_user_optionnscCs|jt|||ƒdS(N(R9tBotoConfigPath(RR5R6R7((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pytsave_system_optionqscCs*y|jd|ƒ}Wn |}nX|S(NtInstance(tget(Rtnametdefaulttval((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyt get_instancets  cCs*y|jd|ƒ}Wn |}nX|S(NtUser(R?(RR@RARB((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pytget_user{s  icCs*y|jd|ƒ}Wn |}nX|S(NRD(tgetint(RR@RARB((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyt getint_user‚s  cCs|j|||ƒS(N(R?(RR5R@RA((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyt get_value‰scCs-ytj|||ƒ}Wn |}nX|S(N(RR?(RR5R@RARB((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyR?Œs  cCs3ytj|||ƒ}Wnt|ƒ}nX|S(N(RRFtint(RR5R@RARB((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyRF“s gcCs3ytj|||ƒ}Wnt|ƒ}nX|S(N(Rtgetfloattfloat(RR5R@RARB((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyRJšs cCsR|j||ƒrH|j||ƒ}|jƒdkr?t}qNt}n|}|S(Nttrue(t has_optionR?tlowertTruetFalse(RR5R@RARB((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pytgetbool¡s  cCs3|r|j||dƒn|j||dƒdS(NRLtfalse(R3(RR5R@R7((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pytsetbool¬scCs%tƒ}|j|ƒ|jƒGHdS(N(RR!tgetvalue(Rts((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pytdump²s  cCs›|stƒ}nx‚|jƒD]t}|jd|ƒxZ|j|ƒD]I}|dkrl|jd|ƒqF|jd||j||ƒfƒqFWqWdS(Ns[%s] R s%s = xxxxxxxxxxxxxxxxxx s%s = %s (RtsectionsR!toptionsR?(RRR5R6((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyt dump_safe·s  c CsÉddlm}tjƒ}|j|ƒ}|sC|j|ƒ}n|j|ƒ}t|_x]|j ƒD]O}i}x-|j |ƒD]} |j || ƒ|| /opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyt dump_to_sdbÂs  c Csõddlm}tjƒ}|j|ƒ}|j|ƒ}x´|jƒD]¦}|j|ƒsl|j|ƒn|j ||ƒ}xk|jƒD]]} || } | dkr±d} nt | t ƒrÖ|j || | ƒqŒ|j|| | ƒqŒWqGWdS(Niÿÿÿÿ(RZtNone(R[RZR\R]R^tget_itemtkeysR1R2tloadsRkt isinstancetboolRSR3( RRdReRZRfRgRhR5Rit attr_namet attr_value((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyt load_from_sdbÑs    N(t__name__t __module__RkROR RR R9R;R=RCRERGRHR?RFRJRPRQRSRVRYRjRs(((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyR4s&             (RR(RR\R[RRRR<RRR,R:tappendRR+R(((s>/opt/freeware/lib/python2.7/site-packages/boto/pyami/config.pyts