ó 'KXc@sJddlmZddlmZddlmZdefd„ƒYZdS(iÿÿÿÿ(tStringIO(tutil(t chop_commentt ResolvConfcBseZd„Zd„Zed„ƒZed„ƒZed„ƒZd„Zd„Z d„Z d„Z d „Z ej d „ƒZd „ZRS( cCs||_d|_dS(N(t_texttNonet _contents(tselfttext((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt__init__s cCs+|jdkr'|j|jƒ|_ndS(N(RRt_parseR(R((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytparse scCs|jƒ|jdƒS(Nt nameserver(R t _retr_option(R((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt nameservers$s cCs+|jƒ|jdƒ}|r'|dSdS(Ntdomaini(R R R(Rtdm((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt local_domain)s  cCsd|jƒ|jdƒ}g}x>|D]6}x-|jdƒD]}|r<|j|ƒq<q<Wq&W|S(Ntsearch(R R tsplitRtappend(Rt current_sdstflat_sdstsdlisttsd((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytsearch_domains1s  cCsÏ|jƒtƒ}x¯|jD]¤\}}|dkrE|jdƒq|dkri|jd|dƒq|dkr|\}}}d||f}t|ƒr­||7}n|jd|ƒqqW|jƒS(Ntblanks t all_comments%s itoptions%s %s(R RRtwritetlentgetvalue(Rtcontentst line_typet componentstcfg_optt cfg_valuet comment_tailtline((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt__str__<s       cCs^g}xQ|jD]F\}}|dkr|\}}}||krV|j|ƒqVqqW|S(NR(RR(Rtopt_nametfoundR!R"R#R$t _comment_tail((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyR Ls  cCsÉ|jƒ|jdƒ}t|ƒ}|jt|ƒƒtj|ƒ}t|ƒt|ƒkrc|St|ƒdkrˆtd|ƒ‚n|j dƒx-|D]%}|j jdd|dgfƒqœW|S(NR is6Adding %r would go beyond the '3' maximum name serversRt( R R tlistRtstrRt uniq_listRt ValueErrort_remove_optionR(Rtnst current_nstnew_nstn((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytadd_nameserverUs     #csR‡fd†}g}x-|jD]"}||ƒs|j|ƒqqW||_dS(Ncs?|\}}|dkrtS|\}}}|ˆkr;tStS(NR(tFalsetTrue(titemR!R"R#t _cfg_valueR*(R((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt remove_opths   (RR(RR(R:t new_contentstc((R(sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyR0fs   cCsÜ|j}t|ƒ}|jt|ƒƒtj|ƒ}t|ƒt|ƒkrS|St|ƒdkrxtd|ƒ‚ndj|ƒ}t|ƒdkr¬td|ƒ‚n|j dƒ|j jdd|dgfƒ|S( Nis8Adding %r would go beyond the '6' maximum search domainst isEAdding %r would go beyond the 256 maximum search list character limitRRR+( RR,RR-RR.RR/tjoinR0R(Rt search_domainRtnew_sdsts_list((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytadd_search_domainws      cCs@|jƒ|jdƒ|jjddt|ƒdgfƒ|S(NRRR+(R R0RRR-(RR((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyRŒs  %c Cs2g}x%t|jƒƒD]\}}|jƒ}|sS|jd|gfƒqnt|dƒ\}}t|jƒƒs–|jd|gfƒqn|s¥d}ny|jddƒ\}} Wn+tt fk rît d|dƒ‚nX|dkrt d |ƒ‚n|jd || |gfƒqW|S(NRs;#RR+is)Incorrectly formatted resolv.conf line %sR RRtsortlisttoptionss Unexpected resolv.conf option %sR(s nameserversdomainssearchRCsoptions( t enumeratet splitlineststripRRRRRt IndexErrorR/tIOError( RR tentriestiR&tslinetheadttailR#t cfg_values((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyR “s,    (t__name__t __module__R R tpropertyRRRR'R R5R0RBtsetterR (((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyRs      N(Rt cloudinitRtcloudinit.distros.parsersRtobjectR(((sR/opt/freeware/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyts