ó 'KXc@sÌddlZddlZddlZddlmZddlmZddgZdZdZdZ d Z d Z d „Z d „Z d „Zdd„Zd„Zd„Zddd„Zd„Zd„ZdS(iÿÿÿÿN(t templater(tutiltubuntutdebiansAcquire::HTTP::Proxy "%s"; s'/etc/apt/apt.conf.d/94cloud-init-configs&/etc/apt/apt.conf.d/95cloud-init-proxys ^[\w-]+:\ws_ k=${1} ks=${2}; exec 2>/dev/null [ -n "$k" ] || exit 1; armour=$(gpg --list-keys --armour "${k}") if [ -z "${armour}" ]; then gpg --keyserver ${ks} --recv $k >/dev/null && armour=$(gpg --export --armour "${k}") && gpg --batch --yes --delete-keys "${k}" fi [ -n "${armour}" ] && echo "${armour}" cCsÿtƒ}t||ƒ}| s+d|kr?|jd|ƒdS|d}||d<|jd|ƒtj|dtƒs¼t||||ƒ|jdidd6dd 6ƒ}t||ƒnyt |t t ƒWn#t k rõ} |j d | ƒnXd |kr˜|} || d <|| d <|jdtƒ} | rItj| ƒj} n d„} t|d | d| ƒ} x*| D]} |j ddj| ƒƒqrWntj|dtƒ}|rû|jdƒytjd|ƒWqût k r÷tj|dƒqûXndS(Ntprimarys5Skipping module named %s, no package 'mirror' locatedtmirrorsMirror info: %stapt_preserve_sources_listtapt_old_mirrorssarchive.ubuntu.com/ubuntussecurity.ubuntu.com/ubuntutsecuritys&failed to proxy or apt config info: %st apt_sourcestRELEASEtMIRRORtadd_apt_repo_matchcSstS(N(tFalse(tf((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pytZst aa_repo_matchsAdd source error: %st:tdebconf_selectionss+Setting debconf selections per cloud configsdebconf-set-selectionst-s$Failed to run debconf-set-selections(sdebconf-set-selectionsR(t get_releasetfind_apt_mirror_infotdebugRtget_cfg_option_boolR tgenerate_sources_listtgettrename_apt_liststapply_apt_configt APT_PROXY_FNt APT_CONFIG_FNt ExceptiontwarntADD_APT_REPO_MATCHtretcompiletsearcht add_sourcestjointget_cfg_option_strtsubptlogexc(tnametcfgtcloudtlogt_argstreleasetmirrorsRt old_mirrorstetparamstmatchcfgtmatcherterrorst dconf_sel((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pythandle5sN                  cCsjtjddƒR}|jtƒ|jƒd|j||g}tj|ƒ\}}|jƒSWdQXdS(Ntsuffixs.shs/bin/sh(RtExtendedTemporaryFiletwritetEXPORT_GPG_KEYIDtflushR)R'tstrip(tkeyidt keyservertfhtcmdtstdoutt_stderr((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pyt getkeybyidks   cCsg|}|jdƒr%|dd!}n|jdƒ}|dkrQ||d}n|jddƒ}|S(Nt/iiÿÿÿÿs://it_(tendswithtfindtreplace(Rtstringtpos((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pytmirror2lists_fileprefixts s/var/lib/apt/listsc CsÌxÅ|jƒD]·\}}|j|ƒ}|s4q ntjj|t|ƒƒ}tjj|t|ƒƒ}||kr|q nt|ƒ}x9tjd|ƒD]$} tj | d|| |fƒqœWq WdS(Ns%s_*s%s%s( t iteritemsRtostpathR%RLtlentglobRtrename( R0t new_mirrorstlists_dR)tomirrortnmirrortoprefixtnprefixtolentfilename((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pyR€s  cCs%tjddgƒ\}}|jƒS(Nt lsb_releases-cs(RR'R=(RBRC((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pyRŽscCs‹|jd|jjƒ}|sH|jdƒ}|sH|jdƒdSni|d6}x|D]}|||||dkri}n|dkr-d„}ng}x|D]ü}d|kre|jddgƒq:n|d}tj||ƒ}||ƒràytjd|gƒWq:tjk rÙ}|j|dt|ƒgƒq:Xq:nd|krùd|dtkeyskeyserver.ubuntu.comR?sfailed to get key from %ssapt-keytaddRsfailed add keys%s tomodetabsfailed write to file %sN(sapt-keysaddR(tNonetappendRt render_stringRR'tProcessExecutionErrortstrt startswithRNROR%RDt write_file( tsrclistttemplate_paramsRt errorlisttentRbR1tkstcontents((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pyR$¢sX                  c CsUd }|jdd ƒ}|jdd ƒ}| rI|rItj|ƒ}n| r%tj|dtƒr%d}g}tj||ƒ\}}dj|jdƒdƒ}|r¿|j d|ƒn|j d ƒg}|j j } d | d | f} x|D]} |j | | ƒqøWtj|ƒ}n|j jƒ} |rQ| ji|d 6ƒn| S(s4find an apt_mirror given the cloud and cfg provided.t apt_mirrortapt_mirror_searchtapt_mirror_search_dnsRct.is.%ss .localdomainshttp://%s-mirror%s/%ss%sRN(s .localdomainRc(RhRRtsearch_for_mirrorRR tget_hostname_fqdnR%tsplitRitextendR^R)t datasourcetget_package_mirror_infotupdate( R+R*RR#tmydomtdomst _hostnametfqdnt mirror_listR^t mirrorfmttpostt mirror_info((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pyRàs0    cCsïd d d d f}g|D].\}}|j|ƒr||j|ƒ^q}t|ƒrytj|dj|ƒdƒn"tjj|ƒr›tj|ƒn|jd dƒrÉtj||jd ƒƒn"tjj|ƒrëtj|ƒndS(Nt apt_proxysAcquire::HTTP::Proxy "%s";tapt_http_proxyt apt_ftp_proxysAcquire::FTP::Proxy "%s";tapt_https_proxysAcquire::HTTPS::Proxy "%s";s t apt_config(RˆsAcquire::HTTP::Proxy "%s";(R‰sAcquire::HTTP::Proxy "%s";(RŠsAcquire::FTP::Proxy "%s";(R‹sAcquire::HTTPS::Proxy "%s";( RRPRRnR%RNROtisfiletdel_fileRh(R*t proxy_fnamet config_fnametcfgsR)tfmttproxies((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pyRs ;  (RQRNR!t cloudinitRRtdistrost PROXY_TPLRRR R;R7RDRLRRRRhR$RR(((sN/opt/freeware/lib/python2.7/site-packages/cloudinit/config/cc_apt_configure.pyts&     6   > .