�
�f� � �� � d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZm Z m
Z
mZmZ d dl
mZ d dlZd dlmZ d dlmZ d dlmZ ej, e� Z d$d e
e d
ededefd
�Z G d� de� Z G d� de� Z G d� de� Z G d� de� Z G d� de� Z G d� de� Z! G d� de� Z" G d� de� Z# G d� de� Z$ G d � d!e� Z% G d"� d#e� Z&y)%� N)�datetime)�StringIO)�Any�Dict�List�Optional�Tuple)�ElementTree)�version)�identity)�UrlError�data� delimiter� quotechar�returnc �� � t � 5 }t j |||t j �� j | � |j � j
� cddd� S # 1 sw Y yxY w)zEncode report data with csv.)r r �quotingN)r �csv�writer�
QUOTE_MINIMAL�writerow�getvalue�rstrip)r r r �ios �@/usr/lib/python3/dist-packages/cloudinit/sources/azure/errors.py�
encode_reportr s] � �
�� &�r��
�
�����%�%�
�
�(�4�.� �{�{�}�#�#�%� &� &� &�s �AA)�)A2c �Z � e Zd Zdd�dedeeeef ddfd�Zdefd�Zde fd�Z
defd �Zy)
�ReportableErrorN)�supporting_data�reasonr r c � � dt j � � �| _ d| _ || _ |r|| _ ni | _ t
j � | _ t j � | _ y # t $ r}d|��| _ Y d }~y d }~ww xY w)NzCloud-Init/z%https://aka.ms/linuxprovisioningerrorzfailed to read vm id: )
r �version_string�agent�documentation_urlr r r �utcnow� timestampr �query_vm_id�vm_id� Exception)�selfr r �id_errors r �__init__zReportableError.__init__( s� � � #�7�#9�#9�#;�"<�=��
�!H�������#2�D� �#%�D� �!���*��� ?�!�-�-�/�D�J��� ?�1�(��>�D�J�J�� ?�s �A0 �0 B
�9
B�B
c �F � dd| j � �d| j � �g}|| j j � D ��cg c] \ }}|� d|� ��� c}}z
}|d| j � �d| j
j
� � �d| j � �gz
}t |� S c c}}w )Nzresult=errorzreason=zagent=�=zvm_id=z
timestamp=zdocumentation_url=) r r# r �itemsr( r& |