Your IP : 216.73.217.13


Current Path : /usr/lib/python3/dist-packages/cloudinit/config/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/cloudinit/config/__pycache__/cc_rsyslog.cpython-38.pyc

U

�Ad'�	@sxUdZddlZddlZddlmZddlmZddlmZddlm	Z	m
Z
ddlmZddl
mZdd	lmZmZdd
lmZddlmZdZd
ddeegeed�ed�gdgd�Zeed<ee�ZdZdZdZiZeed<dZdZdZ dZ!dZ"dZ#dZ$e�%e&�Z'e�(d �Z)e�(d!�Z*efd"d#�Z+eed$�d%d&�Z,d'd(�Z-d2d)d*�Z.Gd+d,�d,�Z/d3d-d.�Z0e1eeee2dd/�d0d1�Z3dS)4z-Rsyslog: Configure system logging via rsyslog�N)�Logger)�dedent)�log)�subp�util)�Cloud)�Config)�
MetaSchema�get_meta_doc)�ALL_DISTROS)�PER_INSTANCEz�This module configures remote system logging using rsyslog.

Configuration for remote servers can be specified in ``configs``, but for
convenience it can be specified as key value pairs in ``remotes``.
Z
cc_rsyslogZRsyslogz$Configure system logging via rsyslogz�            rsyslog:
                remotes:
                    maas: 192.168.1.1
                    juju: 10.0.4.1
                service_reload_command: auto
            a7            rsyslog:
                config_dir: /opt/etc/rsyslog.d
                config_filename: 99-late-cloud-config.conf
                configs:
                    - "*.* @@192.158.1.1"
                    - content: "*.*   @@192.0.2.1:10514"
                      filename: 01-example.conf
                    - content: |
                        *.*   @@syslogd.example.com
                remotes:
                    maas: 192.168.1.1
                    juju: 10.0.4.1
                service_reload_command: [your, syslog, restart, command]
            �rsyslog)�id�name�titleZdescriptionZdistrosZ	frequencyZexamplesZactivate_by_schema_keys�metaz20-cloud-config.confz/etc/rsyslog.d�auto�DEF_REMOTES�configsZconfig_filenameZ
config_dirZservice_reload_commandZrsyslog_filenameZrsyslog_dir�remotesz[ ]*[#]+[ ]*z_^(?P<proto>[@]{0,2})(([\[](?P<bracket_addr>[^\]]*)[\]])|(?P<addr>[^:]*))([:](?P<port>[0-9]+))?$cCs.|tkr |�dd�}|�d|�Stj|dd�S)NZrsyslog_svcnamer
z
try-reloadT)Zcapture)�
DEF_RELOADZ
get_optionZmanage_servicer)�distro�command�service�r�=/usr/lib/python3/dist-packages/cloudinit/config/cc_rsyslog.py�
reload_syslog^sr)�cfg�returnc
Cs�|�di�}t|�d�t�r\t�d�t|�d�i}t|krH|t|t<t|kr\|t|t	<tgtft	t
tftttft
tttfftttff}|D]L\}}}||kr�|||<q�t|||�s�td|�d|�dt||�����q�|S)z�Return an updated config.

    Support converting the old top level format into new format.
    Raise a `ValueError` if some top level entry has an incorrect type.
    r
zDEPRECATION: This rsyslog list format is deprecated and will be removed in a future version of cloud-init. Use documented keys.zInvalid type for key `z`. Expected type(s): z. Current type: )�get�
isinstance�list�LOG�warning�KEYNAME_CONFIGS�KEYNAME_LEGACY_FILENAME�KEYNAME_FILENAME�KEYNAME_LEGACY_DIR�KEYNAME_DIR�DEF_DIR�str�DEF_FILENAME�KEYNAME_RELOADr�KEYNAME_REMOTESr�dict�
ValueError�type)r�mycfgZfillup�key�defaultZvtypesrrr�load_configes0��
�r4c
	Cs�g}t|�D]�\}}t|t�rNd|kr8t�d|d�q|d}|�d|�}n|}|}|��}|stt�d|d�qtj�	||�}d}||kr�d}|�
|�z*d}	|�d	�s�d	}	tj
|||	|d
�Wqtk
r�t�td|�YqXq|S)N�contentz%No 'content' entry in config entry %s��filenamezEntry %s has an empty filenameZab�wb��
)�omodezFailed to write to %s)�	enumerater r.r"r#r�strip�os�path�join�append�endswithrZ
write_file�	ExceptionZlogexc)
r�	def_fname�cfg_dir�filesZcur_posZentr5r7r;Zendlrrr�apply_rsyslog_changes�s<
�

rGcCs
zt�|�\}}|��}Wntk
r8|d}}YnX|����}d}t|�dkr\|}n"t|�dkrr|\}}ntd|��t�|�}|s�td|��|�d�}|�d�p�|�d�}|�d�}	|�d	�r�|�	d
�s�td|��|r�|s�|}t
|||||	d�}
|
��|
S)
Nr6�zline had multiple spaces: %szInvalid host specification '%s'�proto�addrZbracket_addr�port�[�]z"host spec had invalid brackets: %s�r�matchrIrJrK)�
COMMENT_RE�splitr=r/�len�HOST_PORT_RErO�group�
startswithrB�SyslogRemotesLine�validate)�liner�dataZcommentZtoksrOZ	host_portrIrJrK�trrr�parse_remotes_line�s>



�r[c@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)rVNcCs\|sd}||_||_|sd}|dkr*d}n|dkr6d}||_||_|rRt|�|_nd|_dS)Nz*.*�udp�@�@@�tcp)rrOrIrJ�intrK)�selfrrOrIrJrKrrr�__init__�szSyslogRemotesLine.__init__c
CsZ|jrHzt|j�Wn2tk
rF}ztd|j�|�W5d}~XYnX|jsVtd��dS)Nzport '%s' is not an integerzaddress is required)rKr`r/rJ)ra�errrrW�s��zSyslogRemotesLine.validatecCsd|j|j|j|j|jfS)Nz.[name=%s match=%s proto=%s address=%s port=%s]rN)rarrr�__repr__�s�zSyslogRemotesLine.__repr__cCs�|jd}|jdkr|d7}n|jdkr0|d7}d|jkrN|d|jd7}n
||j7}|jrl|d	|j7}|jr�|d
|j7}|S)N� r\r]r_r^�:rLrMz:%sz # %s)rOrIrJrKr)raZbufrrr�__str__s





zSyslogRemotesLine.__str__)NNNNN)�__name__�
__module__�__qualname__rbrWrdrgrrrrrV�s�
	rVcCs�|sdSg}|dk	r|�|�|��D]\\}}|s4q&z|�tt||d���Wq&tk
r�}zt�d|||�W5d}~XYq&Xq&|dk	r�|�|�d�|�dS)N)rz!failed loading remote %s: %s [%s]r:)rA�itemsr*r[r/r"r#r@)r�header�footer�linesrrXrcrrr�remotes_to_rsyslog_cfgs
$
ro)rr�cloudr�argsrc

Cs�d|kr|�d|�dSt|�}|t}|trH|�t|tddd��|ds^|�d�dSt|t|t|td�}|s�|�d	�dSzt	|j
|td
�}Wn4tj
k
r�}	zd}|�d|	�W5d}	~	XYnX|r�|��|�d
||�dS)Nr
z;Skipping module named %s, no 'rsyslog' key in configurationz# begin remotesz
# end remotes)rlrmrz.Empty config rsyslog['configs'], nothing to do)rrDrEz0restart of syslog not necessary, no changes made)rFzFailed to reload syslogz%s configured %s files)�debugr4r$r-rArorGr&r(rrr,rZProcessExecutionErrorr#Z
cycle_logging)
rrrprrqr1rZchangesZ	restartedrcrrr�handle,sF���
�
rs)N)NN)4�__doc__r>�reZloggingr�textwraprZ	cloudinitrrrZcloudinit.cloudrZcloudinit.configrZcloudinit.config.schemar	r
Zcloudinit.distrosrZcloudinit.settingsrZMODULE_DESCRIPTIONr�__annotations__r+r)rrr.r$r&r(r,r%r'r-Z	getLoggerrhr"�compilerPrSrr4rGr[rVror*r!rsrrrr�<module>	sr�	���&

�')
&?
�