Current File : //lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyo
�
oB�]c@siddlmZddlmZddlmZddlmZeje	�Z
defd��YZdS(i����(tStringIO(tchop_comment(tlog(tutilt
ResolvConfcBs�eZd�Zd�Zed��Zed��Zed��Zd�Zd�Z	d�Z
d�Zd	�Zej
d
��Zd�ZRS(cCs||_d|_dS(N(t_texttNonet	_contents(tselfttext((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt__init__s	cCs+|jdkr'|j|j�|_ndS(N(RRt_parseR(R((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytparsescCs|j�|jd�S(Nt
nameserver(Rt_retr_option(R((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytnameserverss
cCs+|j�|jd�}|r'|dSdS(Ntdomaini(RRR(Rtdm((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytlocal_domains

cCsd|j�|jd�}g}x>|D]6}x-|jd�D]}|r<|j|�q<q<Wq&W|S(Ntsearch(RRtsplitRtappend(Rtcurrent_sdstflat_sdstsdlisttsd((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytsearch_domains's

cCs�|j�t�}x�|jD]�\}}|dkrE|jd�q|dkri|jd|d�q|dkr|\}}}d||f}t|�r�||7}n|jd|�qqW|j�S(Ntblanks
tall_comments%s
itoptions%s %s(RRRtwritetlentgetvalue(Rtcontentst	line_typet
componentstcfg_optt	cfg_valuetcomment_tailtline((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt__str__2s
	
cCs^g}xQ|jD]F\}}|dkr|\}}}||krV|j|�qVqqW|S(NR(RR(Rtopt_nametfoundR"R#R$R%t
_comment_tail((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyRBscCs�|j�|jd�}t|�}|jt|��tj|�}t|�t|�krc|St|�dkr�tj	d|�|d S|j
d�x-|D]%}|jjdd|dgf�q�W|S(NR
is`ignoring nameserver %r: adding would exceed the maximum of '3' name servers (see resolv.conf(5))Rt(RRtlistRtstrRt	uniq_listRtLOGtwarningt_remove_optionR(Rtnst
current_nstnew_nstn((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytadd_nameserverKs
	

#csR�fd�}g}x-|jD]"}||�s|j|�qqW||_dS(Ncs?|\}}|dkrtS|\}}}|�kr;tStS(NR(tFalsetTrue(titemR"R#R$t
_cfg_valueR+(R)(sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt
remove_opt_s(RR(RR)R<tnew_contentstc((R)sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyR2]s	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/Rt
ValueErrortjoinR2R(Rt
search_domainRtnew_sdsts_list((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pytadd_search_domainns 	


cCs@|j�|jd�|jjddt|�dgf�|S(NRRR,(RR2RRR.(RR((sI/usr/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
nameserversdomainssearchRFRG(t	enumeratet
splitlineststripRRRRRt
IndexErrorR@tIOError(
RR!tentriestiR'tslinetheadttailR$t
cfg_values((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyR�s,		 (t__name__t
__module__R
RtpropertyRRRR(RR7R2REtsetterR(((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyRs								N(
tsixRtcloudinit.distros.parsersRt	cloudinitRtloggingRt	getLoggerRSR0tobjectR(((sI/usr/lib/python2.7/site-packages/cloudinit/distros/parsers/resolv_conf.pyt<module>s