File: //var/opt/nydus/ops/primordial/log/__pycache__/envelope.cpython-39.pyc
a
�,�h � @ s� d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlmZ d dl m
Z
d dlmZ d dl
mZmZmZmZmZ e�e�ZG dd � d ee jd
�ZG dd� de�ZdS )
� N)�datetime)�Optional)�iso8601_utc)�LogExtra)�LogData)�EnvelopeVersion�EnvelopeRole�
ConfigLogData�HostLogData�PayloadLogDatac @ s8 e Zd ZdZdZdZedeje e
e d d�dd��ZdS ) �Envelopez�Customized envelope for sending log data.
Given a log record, envelope version and configuration data, constructs a
log message in the required format which can be returned as a json.
Zenvelope_versionZdata_schemaN)�record�
configLogData�envelopeVersion�returnc
C s� t | tji �}d}t|t�rfztjf i |��}W n4 tyd } zt�dt |�� W Y d}~n
d}~0 0 t|t
�s�t
� }t|t�r�|�tj
�dur�|�tj
�}t
�|�}|�t
j�}|dkr�t| |||�S t�dt |�� t�| |t
� �S )a A factory method for producing an Envelope instance.
:param record: The log record
:param configLogData: The logging data
:param envelopeVersion: The version of the envelope
:returns: A new Envelope object
:rtype: :class:`Envelope`
N�&Unable to process extra log fields: %s� z<Unknown log envelope major version %s. Using default version)�getattrr �EXTRA_FIELD�
isinstance�dictZgetLogExtra� Exception�LOG�error�strr �getr �ENVELOPE_VERSION_FIELDZ
fromStringZMAJOR_FIELD�
EnvelopeV1�getEnvelope)r
r r �extra�logextra�e�version�major� r$ �H/opt/nydus/tmp/pip-target-wkfpz8uv/lib/python/primordial/log/envelope.pyr s$
&
zEnvelope.getEnvelope)N)
�__name__�
__module__�__qualname__�__doc__r �DATA_SCHEMA_FIELD�staticmethod�logging� LogRecordr r r r r$ r$ r$ r% r s ��r )� metaclassc
s e Zd ZdZdZdZdZejZdZ dZ
dZej
Z
dZd Zd
ZdZdZejZee
eeee ee
eeeeef
Ze
eeeee
fZejejfZejeeed
d�� fdd�Zejd
d�� fdd�Zd
d�dd�Z d
d�dd�Z!d
d�dd�Z"d
d�dd�Z#d
d�dd�Z$d
d�dd �Z%� Z&S )!r z"Version 1 of the logging envelope.Zbrand_idZ
datacenter�environment�host�dataZ
request_idZ
session_idZseverityZsub_type� timestamp�typeN)r
r r r r c sB t � �� || _|| _| �| jt|�� || _d | _| � |� d S �N)
�super�__init__r r �setr r r �payloadLogData�load)�selfr
r r r �� __class__r$ r% r6 p s
zEnvelopeV1.__init__)r
r c s@ t � �|� | �� | �� | �� | �� | �� | �� d S r4 )r5 r9 �loadDefaults�
loadConfig�loadRecordFields�loadHost�loadPayload� loadExtra)r: r
r; r$ r% r9 } s zEnvelopeV1.load)r c C sB | � | jd� | � | jd� | � | jtt� �� | � | jd� dS )zLoad default fields.N)r7 �BRAND_ID_FIELD�REQUEST_ID_FIELD�
ROLE_FIELDr r �SESSION_ID_FIELD�r: r$ r$ r% r= � s zEnvelopeV1.loadDefaultsc C sd | � | j| j�tj�� | � | j| j�tj�� | � | j| j�tj�� | � | j| j�tj�� dS )zLoad configuration data.N)r7 �DATACENTER_FIELDr r r �ENVIRONMENT_FIELD�SUB_TYPE_FIELD�
TYPE_FIELDrG r$ r$ r% r>