Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/cloudinit/distros/parsers/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/distros/parsers/__pycache__/resolv_conf.cpython-38.pyc

U

�Ad��@sLddlmZddlmZddlmZddlmZe�e	�Z
Gdd�d�ZdS)�)�StringIO)�log)�util)�chop_commentc@s~eZdZdd�Zdd�Zedd��Zedd��Zejd	d��Zed
d��Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�
ResolvConfcCs||_d|_dS�N)�_text�	_contents)�self�text�r�G/usr/lib/python3/dist-packages/cloudinit/distros/parsers/resolv_conf.py�__init__szResolvConf.__init__cCs|jdkr|�|j�|_dSr)r	�_parser�r
rrr
�parses
zResolvConf.parsecCs|��|�d�S)N�
nameserver�r�_retr_optionrrrr
�nameserversszResolvConf.nameserverscCs"|��|�d�}|r|dSdS)N�domainrr)r
Zdmrrr
�local_domains

zResolvConf.local_domaincCs0|��|�d�|j�ddt|�dgf�|S)Nr�option�)r�_remove_optionr	�append�str)r
rrrr
r's
cCsB|��|�d�}g}|D]"}|�d�D]}|r(|�|�q(q|S)N�search)rr�splitr)r
Zcurrent_sds�flat_sdsZsdlistZsdrrr
�search_domains.s
zResolvConf.search_domainscCs�|��t�}|jD]t\}}|dkr0|�d�q|dkrL|�d|d�q|dkr|\}}}d||f}t|�rz||7}|�d|�q|��S)N�blank�
�all_commentz%s
rrz%s %s)rrr	�write�len�getvalue)r
�contents�	line_type�
components�cfg_opt�	cfg_valueZcomment_tail�linerrr
�__str__9s
zResolvConf.__str__cCs<g}|jD],\}}|dkr
|\}}}||kr
|�|�q
|S)Nr�r	r)r
�opt_name�foundr(r)r*r+�
_comment_tailrrr
rIs
zResolvConf._retr_optioncCs�|��|�d�}t|�}|�t|��t�|�}t|�t|�krF|St|�dkrjt�	d|�|dd�S|�
d�|D]}|j�dd|dgf�qx|S)Nr�z`ignoring nameserver %r: adding would exceed the maximum of '3' name servers (see resolv.conf(5))rr)rr�listrrr�	uniq_listr%�LOGZwarningrr	)r
�nsZ
current_nsZnew_ns�nrrr
�add_nameserverRs"

�
zResolvConf.add_nameservercs8�fdd�}g}|jD]}||�s|�|�q||_dS)Ncs.|\}}|dkrdS|\}}}|�kr*dSdS)NrFTr)�itemr(r)r*Z
_cfg_valuer1�r/rr
�
remove_opths
z-ResolvConf._remove_option.<locals>.remove_optr.)r
r/r;Znew_contents�crr:r
rgs	
zResolvConf._remove_optioncCs�|j}t|�}|�t|��t�|�}t|�t|�kr:|St|�dkrRtd|��d�|�}t|�dkrttd|��|�	d�|j
�dd|dgf�|S)	N�z8Adding %r would go beyond the '6' maximum search domains� �zEAdding %r would go beyond the 256 maximum search list character limitrrr)r r3rrrr4r%�
ValueError�joinrr	)r
Z
search_domainrZnew_sdsZs_listrrr
�add_search_domainws,
��
��
zResolvConf.add_search_domaincCs�g}t|���D]�\}}|��}|s6|�d|gf�qt|d�\}}t|���sb|�d|gf�q|sjd}z|�dd�\}}	Wn8ttfk
r�}
zt	d|d�|
�W5d}
~
XYnX|dkr�t	d|��|�d	||	|gf�q|S)
Nr!z;#r#r�z)Incorrectly formatted resolv.conf line %s)rrrZsortlistZoptionsz Unexpected resolv.conf option %sr)
�	enumerate�
splitlines�striprrr%r�
IndexErrorr@�IOError)r
r'�entries�ir,Zsline�head�tailr*Z
cfg_values�errr
r�s0
��zResolvConf._parseN)�__name__�
__module__�__qualname__rr�propertyrr�setterr r-rr8rrBrrrrr
rs 




	rN)�iorZ	cloudinitrZloggingrZcloudinit.distros.parsersrZ	getLoggerrNr5rrrrr
�<module>s