o ckF[!@sddlZddlZddlZddlZddlmZmZmZmZm Z dZ e gZ ej eddZe edejvr?eejdgZ ndejvrYgZ ejdejD] Z e ee qOGdd d eZdS) N) expanduser ConfigParser NoOptionErrorNoSectionErrorStringIOz /etc/boto.cfg~z.boto BOTO_CONFIG BOTO_PATHc@seZdZd2ddZddZddZd d Zd d Zd dZddZ ddZ ddZ d3ddZ d3ddZ d4ddZd3ddZd3ddZd4d d!Zd5d#d$Zd6d&d'Zd(d)Zd*d+Zd3d,d-Zd.d/Zd0d1ZdS)7ConfigNTcCstddd|_|rE|r||n |r||n|tdtjvrGttjd}z| |WdSt yDt d|YdSwdSdS)Nz /mnt/pyami0) working_dirdebugAWS_CREDENTIAL_FILEz'Unable to load AWS_CREDENTIAL_FILE (%s)) r_parserload_from_pathreadfpreadBotoConfigLocationsosenvironrload_credential_fileIOErrorwarningswarn)selfpathfpdo_load full_pathr3/usr/lib/python3/dist-packages/boto/pyami/config.py__init__6s$      zConfig.__init__cCs|d|_dS)Nr)r)rstaterrr __setstate__GszConfig.__setstate__cCs t|j|SN)getattrr)rnamerrr __getattr__Ps zConfig.__getattr__cOs|jj|i|Sr$)r has_option)rargskwargsrrr r(SszConfig.has_optioncCsVt}|dt|dD]}||ddddq|d||dS) z:Load a credential file as is setup like the Java utilitiesz[Credentials] rAWSAccessKeyIdaws_access_key_id AWSSecretKeyaws_secret_access_keyrN)rwriteopen readlinesreplaceseekr)rrc_datalinerrr rVs   zConfig.load_credential_filecCsbt|}|D]!}td|}|r)|d}tj|\}}|tj ||q| |dS)Nz^#import[\s ]*([^\s^ ]*)[\s ]*$) r1r2rematchgrouprrsplitrjoinr)rrfiler6r9 extended_filedirrrr r_s   zConfig.load_from_pathcCstt}||||s||||||t|d}|||||s1||||||dS)z 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. wN)rr has_section add_sectionsetr1r0close)rrsectionoptionvalueconfigrrrr save_optionis       zConfig.save_optioncC|t|||dSr$)rIUserConfigPathrrErFrGrrr save_user_option{zConfig.save_user_optioncCrJr$)rIBotoConfigPathrLrrr save_system_option~rNzConfig.save_system_optionc C0z |d|}W|Sttfy|}Y|Sw)NInstancegetrrrr&defaultvalrrr get_instancezConfig.get_instancec CrQNUserrSrUrrr get_userrYzConfig.get_userrc CrQrZ)getintrrrUrrr getint_userrYzConfig.getint_usercCs||||Sr$)rTrrEr&rVrrr get_valueszConfig.get_valuec Cs,z|j||WSttfy|YSwr$)rrTrrr_rrr rTs z Config.getc C0z|j||WSttfyt|YSwr$)rr]rrintr_rrr r]  z Config.getintc Crar$)rgetfloatrrfloatr_rrr rerczConfig.getfloatFcCs<|||r|||}|dkrd}|Sd}|S|}|S)NtrueTF)r(rTlower)rrEr&rVrWrrr getbools   zConfig.getboolcCs(|r |||ddS|||ddS)Nrgfalse)rC)rrEr&rGrrr setboolszConfig.setboolcCs t}||t|dSr$)rr0printgetvalue)rsrrr dumps z Config.dumpc Csl|st}|D]*}|d|||D]}|dkr%|d|q|d||||fqq dS)Nz[%s] r/z%s = xxxxxxxxxxxxxxxxxx z%s = %s )rsectionsr0optionsrT)rrrErFrrr dump_safes zConfig.dump_safec Csddlm}t}||}|s||}||}d|_|D]}i}| |D] } | || || <q+| |||<q"| dS)NrjsonF) boto.compatrtboto connect_sdblookup create_domainnew_itemactiverprqrTdumpssave) r domain_name item_namertsdbdomainitemrEdrFrrr dump_to_sdbs      zConfig.dump_to_sdbc Csddlm}t}||}||}|D]8}||s$||| ||}|D] } || } | dur;d} t | t rH| || | q/| || | q/qdS)NrrsNone)rurtrvrwrxget_itemkeysrArBloads isinstanceboolrkrC) rr~rrtrrrrEr attr_name attr_valuerrr load_from_sdbs"        zConfig.load_from_sdb)NNTr$)r)rd)F)__name__ __module__ __qualname__r!r#r'r(rrrIrMrPrXr\r^r`rTr]rerirkrorrrrrrrr r 4s.               r )rr8rrvrurrrrrrOrrr<rKappendrr;pathsepobjectr rrrr s