MOON
Server: Apache
System: Linux vps.erhabenn.com.br 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64
User: machen (1008)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyo
�
d�bc@s7ddlZddlZddlZddlZddlZddljjZddlm	Z	ddl
m
Z
mZddlj
jZddlj
jZddlj
jjZddlmZddlmZddlmZmZmZmZmZddlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z'm(Z(m)Z)dd	l*m+Z+m,Z,dd
l-m.Z.ddl/m0Z0m1Z1m2Z2ddl3m4Z4dd
l5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;ddl<m=Z=ddl>m?Z?m@Z@ddlAmBZBddlCmDZDddlEmFZFddlmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOddlPmQZQmRZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\dZ]d Z^d!Z_d"Z`dZad#Zbd$d%d$d&Zcd'e$fd(��YZdd)e6fd*��YZed+�Zfd,�Zgd-�Zhd.d/�Zid0ejd1�Zkd2�Zld3�Zmd4�Znd5�Zod6�Zpd7�Zqd8�Zrd9esfd:��YZtd;�Zud<d=�Zvd>esfd?��YZwd@esfdA��YZxdBesfdC��YZydDesfdE��YZzdFesfdG��YZ{dHesfdI��YZ|dS(Ji����N(tdefaultdict(tdatetimet	timedelta(t)get_agent_supported_features_list_for_crp(tvalidate_param(t	add_eventtWALAEventOperationtreport_eventtCollectOrReportEventDebugInfotadd_periodic(tProtocolNotFoundErrortResourceGoneErrortExtensionDownloadErrortInvalidContainerErrort
ProtocolErrort	HttpErrortVmSettingsError(t
httpclientt
bytebuffertustr(tExtensionsGoalStatetGoalStateMismatchError(tExtensionsGoalStateFactory(t	GoalStatetTRANSPORT_CERT_FILE_NAMEtTRANSPORT_PRV_FILE_NAME(tHostPluginProtocol(tDataContracttExtHandlerPackagetExtHandlerPackageListtProvisionStatustVMInfotVMStatus(tGuestAgentExtensionEventsSchema(tfileutiltrestutil(tStateFlusher(t	CryptUtil(tFlexibleVersion(	t	parse_doctfindalltfindtfindtexttgettextt
remove_bomtget_bytes_from_pemt
parse_jsontformat_exception(t
AGENT_NAMEtCURRENT_VERSIONshttp://{0}/?comp=versionsshttp://{0}/machine?comp=healths&http://{0}/machine?comp=rolePropertiess%http://{0}/machine?comp=telemetrydatat
WireServertIncarnationsGoalState.{0}.xmlsVmSettings.{0}.jsonsHostingEnvironmentConfig.xmlsSharedConfig.xmlsRemoteAccess.{0}.xmlsExtensionsConfig.{0}.xmls{0}.{1}.manifest.xmls
2012-11-30iiii
tUploadErrorcBseZRS((t__name__t
__module__(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR4LstWireProtocolcBs�eZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zded
�Zd�Zd�Zd�Zd�Zd�ZRS(cCs.|dkrtd��nt|�|_dS(NsWireProtocol endpoint is None(tNoneRt
WireClienttclient(tselftendpoint((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt__init__QscCs�|jj�tjjtj�t�}tjjtj�t�}t	tj
��}|j||�tj
d�|jjdt�dS(Ns1Initializing goal state during protocol detectiontforce_update(R:tcheck_wire_protocol_versiontostpathtjointconftget_lib_dirRRR%tget_openssl_cmdtgen_transport_certtloggertinfotupdate_goal_statetTrue(R;ttrans_prv_filettrans_cert_filet	cryptutil((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytdetectVs
		
cCs|jj�dS(N(R:RI(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRIdscCs|jj�dS(N(R:t"update_host_plugin_from_goal_state(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyROgscCs
|jj�S(N(R:tget_endpoint(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRPjscCsd|jj�}|jj�}t�}d|_|j|_|j|_	|j
|_|j|_
|S(N(R:tget_goal_statetget_hosting_envRR8tsubscriptionIdtvm_nametvmNametdeployment_namet
tenantNamet	role_nametroleNametrole_instance_idtroleInstanceName(R;t
goal_statethosting_envtvminfo((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt
get_vminfoms		cCs|jj�}|jS(N(R:t	get_certst	cert_list(R;tcertificates((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR`yscCs|jj�jS(N(R:RQtincarnation(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_incarnation}scCs.|jj�}|jj�}|j|jfS(N(R:RQtget_extensions_goal_statetagent_manifestsRc(R;R\text_conf((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_vmagent_manifests�scCs1|jj�}|jj||�}|j}|S(N(R:RQtfetch_gafamily_manifesttpkg_list(R;tvmagent_manifestR\tga_manifesttvalid_pkg_list((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_vmagent_pkgs�s	cCs&tjd�|jj|�}|jS(NsGet extension handler package(RGtverboseR:tget_ext_manifestRj(R;text_handlertman((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_ext_handler_pkgs�s
cCs
|jj�S(N(R:Re(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRe�sc	CsU|jj�}|j||j�\}}|jj||d|dtdd�}|S(Ntheaderst	use_proxyt	max_retryi(R:tget_host_plugintget_artifact_requesttmanifest_uritstreamtFalse(R;turitdestinationthostRttsuccess((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt&_download_ext_handler_pkg_through_host�s'csg���fd�}���fd�}y�jj||�dk	}Wntk
rbt}nX|S(Nc	s%�jj��dddtdd�S(NRtRuRvi(R:RzR8RJ((R}R;R|(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt<lambda>�scs�j���S(N(R�((R}R;R|(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s(R:t&send_request_using_appropriate_channelR8t	ExceptionR{(R;R|R}RtRutdirect_funct	host_funcR((R}R;R|sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytdownload_ext_handler_pkg�s

cCsvtd|t�|jdk	rA|jj|j|j|j�n|jj	dk	rr|jj	}|jj
|�ndS(Ntprovision_status(RRtstatusR8R:t
report_healtht	subStatustdescriptiont
propertiestcertificateThumbprinttreport_role_prop(R;R�t
thumbprint((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytreport_provision_status�s
cCs4td|t�|jjj|�|jj�dS(Nt	vm_status(RR R:tstatus_blobt
set_vm_statustupload_status_blob(R;R�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytreport_vm_status�scCs|jj|�dS(N(R:R(R;tevents_iterator((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�scCs|jj|�dS(N(R:tupload_logs(R;tlogs((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scCs
|jjjS(N(R:R�tdata(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_status_blob_data�sN(R5R6R=RNRIRORPR_R`RdRhRnRsReR�R8RJR�R�R�RR�R�(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR7Ps&													
				cCsdj|||�}|S(Nu<?xml version="1.0" encoding="utf-8"?><RoleProperties><Container><ContainerId>{0}</ContainerId><RoleInstances><RoleInstance><Id>{1}</Id><Properties><Property name="CertificateThumbprint" value="{2}" /></Properties></RoleInstance></RoleInstances></Container></RoleProperties>(tformat(tcontainer_idRZR�txml((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt_build_role_properties�scCs�|rod}t|�}|| }|t|�}|dkrWtjdj|��ntjt|��}nd}	|dk	r�tjt|��}dj||�}	ndj|||||	�}
|
S(Nifis3Trimmed health report description by {0} charactersuuK<Details><SubStatus>{0}</SubStatus><Description>{1}</Description></Details>us<?xml version="1.0" encoding="utf-8"?><Health xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GoalStateIncarnation>{0}</GoalStateIncarnation><Container><ContainerId>{1}</ContainerId><RoleInstanceList><Role><InstanceId>{2}</InstanceId><Health><State>{3}</State>{4}</Health></Role></RoleInstanceList></Container></Health>(tlenRGRHR�tsaxutilstescapeRR8(RcR�RZR�t	substatusR�tmax_chars_before_encodingtlen_before_trimttrimmed_char_counttdetailR�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt_build_health_report�s,

	cCs2i|jd6|jd6|jd6|jd6}|S(s7
    Convert VMStatus object to status blob format
    tcomputerNametosNamet	osVersiontversion(thostnametosnamet	osversionR�(t	ga_statustv1_ga_guest_info((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytga_status_to_guest_info	s



sen-UScCsi|d6|d6S(Ntlangtmessage((tmsgR�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt(__get_formatted_msg_for_status_reportingss%Y-%m-%dT%H:%M:%SZcCs.|dkrtj�n|}tj||�S(N(R8ttimetgmtimetstrftime(ttime_formatt	timestamp((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt'_get_utc_timestamp_for_status_reportingscCsSi|jd6|jd6t|j�d6}|jdk	rOt|j�|d<n|S(NR�R�tformattedMessagetupdateStatus(R�R�R�R�t
update_statusR8tget_ga_update_status_to_v1(R�tv1_ga_status((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytga_status_to_v1"s

cCs8i|jd6|jd6|jd6t|j�d6}|S(NtexpectedVersionR�tcodeR�(texpected_versionR�R�R�R�(R�tv1_ga_update_status((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�/s


cCs\g}xO|D]G}i|jd6|jd6|jd6t|j�d6}|j|�q
W|S(NtnameR�R�R�(R�R�R�R�R�tappend(tsub_status_listtstatus_listR�R�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytext_substatus_to_v19s



cCs�|dkrdSt�}t|j�}ii|jd6|jd6|jd6|jd6|jd6t	|j
�d6d6dd6|d	6}t|�d
kr�||dd<n|S(NR�tconfigurationAppliedTimet	operationR�R�R�g�?R�ttimestampUTCiR�(R8R�R�t
substatusListR�R�R�R�R�R�R�R�(t
ext_statusR�t
v1_sub_statust
v1_ext_status((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytext_status_to_v1Fs"	





cCs�i|jd6|jd6|jd6|jd6td6}|jdk	rZt|j�|d<nt|j	�}|j	dk	r�|dk	r�i|d6|j	j
d6|d	<|jr�|j	j|d	d
<q�n|S(NthandlerVersionthandlerNameR�R�tuseExactVersionR�tsettingsStatustsequenceNumbertruntimeSettingsStatust
extensionName(R�R�R�R�RJR�R8R�R�textension_statusR�tsupports_multi_config(text_handler_statustv1_handler_statusR�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytext_handler_status_to_v1\s 




	cCsq|j}|dkrdSit|j�d6td|j�d6|jd6|jd6|jd6}i|d6}|S(NR�R�R�t
inSvdSeqNoR�R�tgoalStateAggregateStatus(	tgoal_state_aggregate_statusR8R�R�R�tprocessed_timet
in_svd_seq_noR�R�(tvm_artifacts_aggregate_statustgs_aggregate_statustv1_goal_state_aggregate_statustv1_artifact_aggregate_status((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt#vm_artifacts_aggregate_status_to_v1us	



cCst�}t|j�}t|j�}t|jj�}g}x'|jjD]}|jt|��qLWi|d6|d6}|dk	r�||d<nidd6|d6|d6|d6}g}	x>t
�j�D]-\}
}|	ji|jd	6|j
d
6�q�W|	r|	|d<n|S(NtguestAgentStatusthandlerAggregateStatustvmArtifactsAggregateStatuss1.1R�R�taggregateStatustguestOSInfotKeytValuetsupportedFeatures(R�R�tvmAgentR�R�R�textensionHandlersR�R�R8RtitemsR�R�(R�R�R�R�tv1_vm_artifact_aggregate_statustv1_handler_status_listthandler_statust
v1_agg_statustv1_vm_statustsupported_featurest_tfeature((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytvm_status_to_v1�s6	




t
StatusBlobcBsheZd�Zd�Zd�ZdZd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZRS(cCs(d|_||_d|_d|_dS(N(R8R�R:ttypeR�(R;R:((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR=�s			cCstd|t�||_dS(NR�(RR R�(R;R�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scCst|j�}tj|�S(N(R�R�tjsontdumps(R;treport((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytto_json�ss
2014-02-14cCs)tjd�|j�|_||_dS(NsPrepare status blob(RGRoRR�R�(R;t	blob_type((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytprepare�s
cCs�yj|jdkr-tdj|j���n|jdkrR|j||j�n|j||j�tSWn#tk
r�}tj	d|�nXt
S(Nt	BlockBlobtPageBlobsIllegal blob type: {0}s!Initial status upload failed: {0}(RR(R�RR�tput_block_blobR�t
put_page_blobRJR�RGRoR{(R;turlte((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytupload�scCs/it|�d6dd6t�d6|jjd6S(NsContent-LengthRsx-ms-blob-types	x-ms-datesx-ms-version(RR�t	__class__t__storage_version__(R;t	blob_size((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_block_blob_headers�s


cCsqtjd�|jt|��}|jjtj|||�}|jt	j
krmtdj|j���ndS(NsPut block blobs Failed to upload block blob: {0}(
RGRoRR�R:tcall_storage_serviceR#thttp_putR�RtCREATEDR4R�(R;R	R�Rttresp((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�s
cCs6idd6t|�d6dd6t�d6|jjd6S(Nt0sContent-Lengthsx-ms-blob-content-lengthRsx-ms-blob-types	x-ms-datesx-ms-version(RR�RR
(R;R((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_page_blob_create_headers�s

cCsJit||�d6t�d6dj||d�d6dd6|jjd6S(	NsContent-Lengths	x-ms-dates
bytes={0}-{1}is
x-ms-rangetupdatesx-ms-page-writesx-ms-version(RR�R�RR
(R;tstarttend((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_page_blob_page_headers�s
c
Cs�tjd�t|dd�}tt|�dd�d}|j|�}|jjtj	|d|�}|j
tjkr�t
dj|j
���n|jd�d	kr�d
j|�}ndj|�}tjd�d}d	}d	}x�|t|�kr�tt|�||�}||}	t|dd�d}
|
|}t|�}|||!|d	|	+|j||
�}|jjtj	|t|�|�}|dks�|j
tjkr�t
dj|j
���n|}q�WdS(Ns
Put page blobtencodingsutf-8i�its!Failed to clean up page blob: {0}t?is
{0}?comp=pages
{0}&comp=pagesUpload page blobiisFailed to upload page blob: {0}ii@(RGRot	bytearraytintR�RR:RR#RR�RRR4R�tcounttminRRR8(
R;R	R�tpage_blob_sizeRtRtpage_maxRRtcontent_sizetpage_endtbuf_sizetbuf((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�s@



			(
R5R6R=R�RR
RRRRRRR(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s											cCs�td�}t|j�}d}|tkr6d}nc|tkrKd}nNt|�jd�dkrod}n*|tkr�d}n|tkr�d}n|j|j	t
jt|j��|�S(	Ns&<Param Name="{0}" Value={1} T="{2}" />Rs	mt:uint64smt:wstrs	'unicode'ismt:bools
mt:float64(RR�tvalueRtstrRtbooltfloatR�R�R�t	quoteattr(tparamtparam_formatt
param_typet	attr_type((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytevent_param_to_v1"s 					sutf-8cCsRd}x!|jD]}|t|�7}qWtd�j|j|�}|j|�S(NRs'<Event id="{0}"><![CDATA[{1}]]></Event>(t
parametersR0RR�teventIdtencode(teventRtparamsR,t	event_str((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytevent_to_v1_encoded5s
R9cBs�eZd�Zd�Zd�Zd�Zd�Zd�Zed��Z	ed��Z
d�Zd	d
d�Zd0d0d0d�Zd0d0ed0d0d0d
�Zd0d0d0d0d0d�Zd�Zeed�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#ed ��Z$d!�Z%d"�Z&d#�Z'd$�Z(d%d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/d-�Z0d.�Z1d/�Z2RS(1cCs�tjd|�||_d|_d|_d|_d|_td�|_	t
|_tj
�|_t|�|_ttj��|_t�|_dS(NsWire server endpoint:{0}s0.0.0.0(RGRHt	_endpointR8t_goal_statet_extensions_goal_statet_cached_vm_settingst_host_pluginR&t_host_plugin_versionR{t!_host_plugin_supports_vm_settingsRtnowt,_host_plugin_supports_vm_settings_next_checkR�R�R$RCRDtgoal_state_flushert_VmSettingsErrorReportert_vm_settings_error_reporter(R;R<((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR=?s						cCs|jS(N(R8(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRPMscOs�yst|d<|||�}tj|�rrdj|d�}|dk	rc|dj|j�7}nt|��nWnAtk
r��n.tk
r�}tdjt	|����nX|S(NRus[Wireserver Failed] URI {0} is [HTTP Failed] Status Code {0}s[Wireserver Exception] {0}(
R{R#trequest_failedR�R8R�RRR�R(R;thttp_reqtargstkwargsRR�R
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytcall_wireserverPs

	cCs2|dkrdSt|�}t|dd�}|S(NRsutf-8(R8R,R(R;R�txml_text((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt
decode_configfs
cCs.|jtj|d|�}|j|j��S(NRt(RHR#thttp_getRJtread(R;R|RtR((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytfetch_configms	cCsjtjj|�s*tdj|���nytj|�SWn(tk
re}tdj|���nXdS(Ns{0} is missing.sFailed to read cache: {0}(R@RAtisfileRR�R"t	read_filetIOError(R;t
local_fileR
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytfetch_cachesscCsty/tjjtj�|�}tj||�Wn>tk
ro}tj|d|g�t	dj
|���nXdS(NtpathssFailed to write cache: {0}(R@RARBRCRDR"t
write_fileRPt
clean_ioerrorRR�(R�t	file_namet	file_pathR
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt_save_cache{scOs6d|ks|ddkr)t|d<n|||�S(NRu(R8RJ(RERFRG((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�s
cCsL|j�}|j|�\}}|j||dtdtj�\}}|S(NRutretry_codes(RwRxtfetchR{R#t'HGAP_GET_EXTENSION_ARTIFACT_RETRY_CODES(R;R|R~RttresponseR�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytfetch_manifest_through_host�s'iicsStjd�|}tj|�d}tj�}x|D]�tj�|td|d|�kr�tjd||t|��Pn�dkr�tjd�q9n��fd�}��fd�}y?�j
||�}	|	dk	r�j�}
|
j��|	SWn,t
k
r4}tjd	�t|��nX|d
7}q9Wtd��dS(NsFetch manifestitminutestmillisecondssYAgent timed-out after {0} minutes while fetching extension manifests. {1}/{2} uris tried.s-The specified manifest URL is empty, ignored.cs�j��dS(Ni(RZ((R;tversion_uri(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scs
�j��S(N(R]((R;R`(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��ss-Failed to fetch manifest from {0}. Error: {1}is)Failed to fetch manifest from all sources(RGRotrandomtshuffleRR?RtwarnR�R8R�Rwtupdate_manifest_uriR�RR(R;tversion_uristtimeout_in_minutest
timeout_in_mstversion_uris_shuffledt
uris_triedt
start_timeR�R�tmanifestR~terror((R;R`sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytfetch_manifest�s2


%	

c
Cs�t}tjd|||�|j|||d|�}|dk	r�tj|�r�d}yft|d|��H}	t}
x8|
s�|j|�}|	j	|�t
|�|k}
qzWWdQXt}Wq�tk
r�}tj
dj||t|���q�Xn|S(s�
        max_retry indicates the maximum number of retries for the HTTP request; None indicates that the default value should be used
        s,Fetch [{0}] with headers [{1}] to file [{2}]RvitwbNsError streaming {0} to {1}: {2}i(R{RGRot_fetch_responseR8R#RDtopenRLtwriteR�RJR�RlR�R(
R;R|R}RtRuRvRR\t
chunk_sizetdestination_fhtcompletetchunkRl((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRz�s 	

)c
Cs�tjd||�d}d}	|j|||d|d|d|�}
|
dk	r�tj|
d|�r�|
j�}|r�|j|�n|}|
j�}	n||	fS(s
        max_retry indicates the maximum number of retries for the HTTP request; None indicates that the default value should be used

        Returns a tuple with the content and headers of the response. The headers are a list of (name, value) tuples.
        sFetch [{0}] with headers [{1}]RvRYtok_codesN(	RGRoR8RoR#RDRLRJt
getheaders(R;R|RtRutdecodeRvRYRvtcontenttresponse_headersR\tresponse_content((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRZ�s'"cCskd}y�|jtj|d|d|d|d|�}|j�}tj|d|�r�tj|�}	dj||	�}
tj	|
�|dk	r�|j
|dtj|�dd	d
|	�nt|
��n"|dk	r�|j
|dd	�nWnut
ttfk
rf}dj|�}
tj	|
�tdtjd
td|
dt�t|ttf�rg�qgnX|S(s�
        max_retry indicates the maximum number of retries for the HTTP request; None indicates that the default value should be used
        RtRuRvRYRvsFetch failed from [{0}]: {1}t
is_healthytsourceR9R\sFetch failed: {0}topt
is_successR�t	log_eventN(R8RR#RKRwRDtread_response_errorR�RGRctreport_fetch_healthtrequest_failed_at_hostpluginRRRPRRtHttpGetR{t
isinstanceR
R(R;R|RtRuRvRYRvRthost_pluginterror_responseR�Rl((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRo�s:	


"
cCs&t|�}|j|j|j�dS(sv
        Fetches a new goal state and updates the Container ID and Role Config Name of the host plugin client
        N(Rt_update_host_pluginR�trole_config_name(R;R\((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyROscCsXyt|�}|j|j|j�dt}}tj�r�y|jd|�\}}Wn;t	k
r�}t
|t�s�|jj
t|��q�nX|jj�n|r�tjd�n|p�|jdkp�|jj|jk}|s�t}n|j|�||_t}t}	|dk	r�|r<|r<t}	q�y tj|jj|�t}	Wq�tk
r�}
|r�|
jdkr�tjtj��|jdt�dS|jj
t|
��|jj�q�Xn|	r�||_ n|jj|_ |s|r|j!�nWnAtk
r&�n.t	k
rS}tdj"t|����nXdS(	sh
        Updates the goal state if the incarnation or etag changed or if 'force_update' is True
        R>s%Forcing an update of the goal state..tcreated_on_timestamptactivity_idtis_retryNsError fetching goal state: {0}(R�R�(#RR�R�R�R8R{RCtget_enable_fast_trackt_fetch_vm_settings_goal_stateR�R�RRCtreport_errorR/treport_summaryRGRHR9Rctfetch_full_goal_stateRJRtcomparetextensions_configRt	attributeR�tsleeptget_goal_state_periodRIRR:t_save_goal_stateR�(R;R>R�R\tvm_settings_goal_statetvm_settings_goal_state_updatedRlR�tgoal_state_updatedtuse_vm_settingstmismatcht	exception((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRIsT
*	
		

cstt�fd�}�jr;�jtj�kr;|�n|sP�jdkrVdn	�jj�tt	j
������fd�}y����fd�}�jj�|�}|j
tjkr��j�|�}n|j
tjkr|dt�n|j
tjkr �jtfS|j
tjkrtj|�}|j
tjkredj|�}n||�}d|j
ko�dknr��jj|tj�nHd|j
ko�d	knr��jj|tj�n�jj|�t|��nx`|j�D]*}|d
j�dkr
|d}Pq
q
W|d
�}	�jj|	�t|	���j |j!��}
t"j#||
�}|j$�j%kr�|j$�_%dj|j$�}	t&j'|	�t(dt)j*d|	dt�n|j$t+d�kr|dt�nt&j'd�|j�t�_|�_|tfSWn/tk
rT�nt,k
ro}t-|t.�r�|t/|��}	�jj|	�y#�j0|j1t2j|j��Wq�t,k
r�}
t&j'dt/|
��q�Xnt-|t3�r,dt/|�kr,|d�}	�jj|	tj4�n4|djt5j6|���}	�jj|	tj7�t|	��nXdS(sZ
        Queries the vmSettings from the HostGAPlugin and returns an (ExtensionsGoalStateFromVmSettings, bool) tuple with the vmSettings and
        a boolean indicating if they are an updated (True) or a cached value (False).

        Raises ProtocolError if the request fails for any reason (e.g. not supported, time out, server error)
        csg|rWt�_tj�tdd��_tjd�tdt	j
dddt�ntd��dS(NthoursisvmSettings is not supportedR~R�RsVmSettings not supported(
R{R>RR?RR@RGRHRRt
HostPluginRJR(treset_state(R;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytraise_not_supportedss	
csdj���j|�S(Ns=GET vmSettings [correlation ID: {0} eTag: {1} HGAP: {2}]: {3}(R�R=(R�(tcorrelation_idtetagR;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytformat_message�sc
sY�j�j��\}}�dk	r4�|d<ntj|d|dtdddt�S(Ns
if-none-matchRtRuRvitreturn_raw_response(Rwtget_vm_settings_requestR8R#RKR{RJ(R	Rt(R�R�R;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_vm_settings�s
R�s$[Internal error in HostGAPlugin] {0}i�i�i�iWiR�is7The vmSettings response does not include an Etag headersHostGAPlugin version: {0}R~R�Rs	1.0.8.115s:Fetched new vmSettings [correlation ID: {0} New eTag: {1}]sFailed to save vmSettings: {0}s	timed outtTimeoutsRequest failed: {0}N(8R{R>R@RR?R;R8R�R(tuuidtuuid4RCtreport_requestR�RtGONEROt	NOT_FOUNDRJtNOT_MODIFIEDtOKR#R�tBAD_GATEWAYR�R�t_VmSettingsErrortClientErrortServerErrorRRwtlowerRJRLRtcreate_from_vm_settingsthost_ga_plugin_versionR=RGRHRRR�R&R�R�RRRXtvm_settings_texttVM_SETTINGS_FILE_NAMERPR�ttextutilR/t
RequestFailed(R;R>R�R�R�R\terror_descriptiontht
response_etagR�R{tvm_settingsR�R
((R�R�R;sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�ls�

'
	



		
#!cCs6|jdk	r2|jj|�|jj|�ndS(N(R<R8tupdate_container_idtupdate_role_config_name(R;R�R�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scs�y�jj�Wn)tk
r<}tjdt|��nXy7�fd�}�j�jjt	�|�jt
j�jj��|�jjt
�|�jjt�|�jjtj�jj���jjdk	r$�jjj�}|dkr$�j|tj�jjj��q$n�jdk	rs�jj�}|dkrs�j|tj�jj��qsnWn)tk
r�}tjdt|��nXdS(NsAFailed to save the previous goal state to the history folder: {0}cs5|dk	r1|jdk	r1�j|j|�ndS(N(R8RIRX(tgoal_state_propertyRV(R;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytsave_if_not_none�sRs*Failed to save the goal state to disk: {0}(RAtflushR�RGRcRRXR9RctINCARNATION_FILE_NAMEtGOAL_STATE_FILE_NAMER�R]tHOSTING_ENV_FILE_NAMEtshared_conftSHARED_CONF_FILE_NAMEt
remote_accesstREMOTE_ACCESS_FILE_NAMER�R8tget_redacted_texttEXT_CONF_FILE_NAMER;R�tid(R;R
R�ttext((R;sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s*"()cCs)|dkrtjd�n||_dS(Ns!Setting empty Host Plugin object!(R8RGRcR<(R;tnew_host_plugin((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt_set_host_pluginscCs%|jdkrtd��n|jS(Ns1Trying to fetch goal state before initialization!(R9R8R(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRQscCs(|jdkrtd��n|jjS(Ns:Trying to fetch Hosting Environment before initialization!(R9R8RR](R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRRscCs(|jdkrtd��n|jjS(Ns2Trying to fetch Shared Conf before initialization!(R9R8RR�(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_shared_confscCs(|jdkrtd��n|jjS(Ns3Trying to fetch Certificates before initialization!(R9R8Rtcerts(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR`scCs%|jdkrtd��n|jS(Ns:Trying to fetch ExtensionsGoalState before initialization!(R:R8R(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRescCs�|jdkrtd��nyH|j|j�}|j|tj|j|j	�j
��t|�SWn.tk
r�}t
djt|����nXdS(Ns9Trying to fetch Extension Manifest before initialization!s1Failed to retrieve extension manifest. Error: {0}(R9R8RRmt
manifest_urisRXtMANIFEST_FILE_NAMER�R�RQRctExtensionManifestR�RR(R;RqRIR
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRp!s(cCs(|jdkrtd��n|jjS(Ns4Trying to fetch Remote Access before initialization!(R9R8RR�(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_remote_access,scCs�tj|j|j�}tjjtj�|�}y0|j	|j
�}tj||�t
|�SWn.tk
r�}tdjt|����nXdS(Ns0Failed to retrieve GAFamily manifest. Error: {0}(R�R�tfamilyRcR@RARBRCRDRmturisR"RTR�R�RR(R;RkR\RQRIR
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRi1scCs�tj|j��}|j|d�}t|�}|j�}t|kr^tj	dt�nPt|j
�kr�tj	dt�tj	d|�ndjt�}t|��dS(NsWire protocol version:{0}sServer preferred version:{0}sEAgent supported wire protocol version: {0} was not advised by Fabric.(tVERSION_INFO_URIR�RPRMR8tVersionInfot
get_preferredtPROTOCOL_VERSIONRGRHt
get_supportedR
(R;R|tversion_info_xmltversion_infot	preferredRl((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR?<s	c
Cs�y2|�}|dtfkr-td��n|SWn�ttfk
r�}|j�}|j|j}}dj||t	|��}t
jt
j|�|j
�|j|j}}	dj||	�}t
jt
j|�y�|�}|dtfkrtd��ndj||||	�}tdt
jdtdtd	tjd
td|dt�|SWq�ttfk
r�}d
j||||	t|�j�}tdt
jdtdtd	tjd
td|dt��q�XnXdS(s
        Calls host_func on host channel and accounts for stale resource (ResourceGoneError or InvalidContainerError).
        If stale, it refreshes the goal state and retries host_func.
        This method can throw, so the callers need to handle that.
        s&Request failed using the host channel.s�[PERIODIC] Request failed with the current host plugin configuration. ContainerId: {0}, role config file: {1}. Fetching new goal state and retrying the call.Error: {2}sa[PERIODIC] Host plugin reconfigured with new parameters. ContainerId: {0}, role config file: {1}.s?Request failed using the host channel after goal state refresh.s�[PERIODIC] Request succeeded using the host plugin channel after goal state refresh. ContainerId changed from {0} to {1}, role config file changed from {2} to {3}.tdeltaR�R�R~RR�R�s�[PERIODIC] Request failed using the host plugin channel after goal state refresh. ContainerId changed from {0} to {1}, role config file changed from {2} to {3}. Exception type: {4}.N(R8R{R�RR
RwR�R�R�RRGt
periodic_infotEVERY_SIX_HOURSROR	R0R1RR�RJR�R5(
R;R�tretRlR�told_container_idtold_role_config_nameR�tnew_container_idtnew_role_config_name((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt%_call_hostplugin_with_container_checkLsV	
				cCsUd}y|j|�}Wn5tk
rP}tjtjdjt|���nX|S(s�
        Calls the host_func on host channel with retries for stale goal state and handles any exceptions, consistent with the caller for direct channel.
        At the time of writing, host_func internally calls either:
        1) WireClient.stream which returns a boolean, or
        2) WireClient.fetch which returns None or a HTTP response.
        This method returns either None (failure case where host_func returned None or False), True or an HTTP response.
        s<[PERIODIC] Request failed using the host channel. Error: {0}N(R8R�R�RGR�t
EVERY_HOURR�R(R;R�R�Rl((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt!__send_request_using_host_channel�s&cCsxd}y6|�}|dtfkr;tjtjd�dSWn5tk
rs}tjtjdjt|���nX|S(s�
        Calls the direct_func on direct channel and handles any exceptions, consistent with the caller for host channel.
        At the time of writing, direct_func internally calls either:
        1) WireClient.stream which returns a boolean, or
        2) WireClient.fetch which returns None or a HTTP response.
        This method returns either None (failure case where direct_func returned None or False), True or an HTTP response.
        s3[PERIODIC] Request failed using the direct channel.s>[PERIODIC] Request failed using the direct channel. Error: {0}N(R8R{RGR�R�R�R�R(R�R�Rl((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt#__send_request_using_direct_channel�s		&c	s���fd�}��fd�}tjr=||}}n
||}}|�}|dk	rc|S|�}|dk	r�tjt_djtjr�dnd�}tj|�ttdtj	dt
dtd	|d
t�n|S(s;
        Determines which communication channel to use. By default, the primary channel is direct, host channel is secondary.
        We call the primary channel first and return on success. If primary fails, we try secondary. If secondary fails,
        we return and *don't* switch the default channel. If secondary succeeds, we change the default channel.
        This method doesn't raise since the calls to direct_func and host_func are already wrapped and handle any exceptions.
        Possible return values are manifest, artifacts profile, True or None.
        cs
�j��S(N(t._WireClient__send_request_using_direct_channel((R�R;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scs
�j��S(N(t,_WireClient__send_request_using_host_channel((R�R;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��ss'Default channel changed to {0} channel.tHostGAtdirectR~R�RR�R�N(
Rtis_default_channelR8R�RGRHRR0RtDefaultChannelChangeR1RJR{(	R;R�R�tdirect_channelthost_channeltprimary_channeltsecondary_channelR�R�((R�R�R;sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s	
		

.cCs�|j�}|jdkr:|jdt�|j�}n|jdkrXtd��n|j}y|jj|�Wn.t	k
r�}t
djt|����nXy0|j
�}|j|j|j|j�dSWnVtk
r�|j�dSt	k
r.}djt|��}|j|dt�nXy|jj|j�rKdSWn;t	k
r�}djt|��}|j|dt�nXt
d��dS(NR>sStatus upload uri is missings#Exception creating status blob: {0}s"Falling back to direct upload: {0}Rs$Exception uploading status blob: {0}s/Failed to upload status blob via either channel(Retstatus_upload_blobR8RIRJR
tstatus_upload_blob_typeR�RR�RR�RRwt
put_vm_statusRROtreport_status_eventRR{(R;textensions_goal_stateRR
R~R�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s8	

cCs�|j�}t|j|j|�}|jd�}tj|j��}|j�}y"|j	t
j||d|�}Wn(tk
r�}t
dj|���nX|jtjkr�t
dj|j|j����ndS(Nsutf-8Rtu#Failed to send role properties: {0}u)Failed to send role properties: ,{0}: {1}(RQR�R�RZR3t
ROLE_PROP_URIR�RPtget_header_for_xml_contentRHR#t	http_postRRR�RtACCEPTEDRL(R;R�R\t	role_propt
role_prop_uriRtRR
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s&		
		c

Cs�|j�}t|j|j|j|||�}|jd�}tj|j��}|j	�}y.|j
tj||d|dddd�}Wn(t
k
r�}	tdj|	���nXtj|�r�tdj|j|j����ndS(	Nsutf-8RtRvitretry_delayiu$Failed to send provision status: {0}u*Failed to send provision status: ,{0}: {1}(RQR�RcR�RZR3tHEALTH_REPORT_URIR�RPR�RHR#R�RRRDR�RL(
R;R�R�R�R\t
health_reportthealth_report_uriRtRR
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�s0		
		tutf8cCs�tj|j��}td�j|�j|�}td�j|�}|||}y+|j�}|jtj|||�}	Wn(t	k
r�}
t
dj|
���nXtj|	�r�tj
|	j��t
dj|	j���ndS(NsE<?xml version="1.0"?><TelemetryData version="1.0"><Provider id="{0}">s</Provider></TelemetryData>sFailed to send events:{0}(t
TELEMETRY_URIR�RPRR3R�RHR#R�RRRDRGRoRLR�(R;tprovider_idR6RR|tdata_format_headertdata_format_footerR�theaderRR
((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytsend_encoded_event,scs9i�tdtj�}tt�}��fd�}x�|D]�}yd|j�kred�|j<nt|�}t|�tkrg|jD]M}|j	t
jt
jt
j
t
jgkr�t|j	�dt|j�^q�}tjtjdjt|�t|�t��w=nt�|j|�tkr{tjdj||j��||j|�d�|j<d||j<n�|j|�|j<||jcd7<Wq=tk
r�}	tjd	tj|	��q=Xq=WxNt�j��D]:}
�|
r�tjdj||
��||
|�q�q�W|j�dS(
NR�cs^y�j|�|�Wn?tk
r:}|j|�n tk
rY}|j|�nXdS(N(RtUnicodeErrortupdate_unicode_errorR�tupdate_op_error(Rt
debug_infot	uni_errorRl(R&R;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt_send_eventFsRt:sJSingle event too large: {0}, with the length: {1} more than the limit({2})sNo of events this request = {0}iis+Unexpected error when generating Events:{0}(Rt	OP_REPORTRRt
providerIdR7R�tMAX_EVENT_BUFFER_SIZER1R�R!tNametVersiont	OperationtOperationSuccessRR'RGt
periodic_warntEVERY_HALF_HOURR�R(RoR�RcR�R/tlisttkeystreport_debug_info(R;R�Rtevents_per_providerRR4R6txtdetails_of_eventRlR((R&R;sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRAs@	
5
!
c	Cs'tdtjd|d|d|�dS(NR~RR�R�(RRtReportStatus(R;R�R((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�vscCsidd6td6S(NtWALinuxAgentsx-ms-agent-namesx-ms-version(R�(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt
get_header|scCsidd6td6dd6S(NR$sx-ms-agent-namesx-ms-versionstext/xml;charset=utf-8sContent-Type(R�(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scCsVtjjtj�t�}|j|�}t|�}idd6td6dd6|d6S(NR$sx-ms-agent-namesx-ms-versiontDES_EDE3_CBCsx-ms-cipher-names!x-ms-guest-agent-public-x509-cert(	R@RARBRCRDRRRR-R�(R;RLRytcert((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_header_for_cert�s	cCsJ|jdkrCt|�}|jt|j�|j|j��n|jS(N(R<R8RR�RRPR�R�(R;R\((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRw�s(cCs
|j�jS(N(Reton_hold(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pytget_on_hold�scs��fd�}�j|�S(Ncs
�j��S(N(t_upload_logs_through_host((RyR;(sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s(R�(R;RyR�((RyR;sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scCs|j�}|j|�S(N(Rwt
put_vm_log(R;RyR~((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR+�sN(3R5R6R=RPRHRJRMRRtstaticmethodRXRR]RmR8RzRJRZRoROR{RIR�R�R�R�RQRRR�R`ReRpR�RiR?R�R�R�R�R�R�R�RRR�R%R�R(RwR*R�R+(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR9=sZ								(*	Z	r													<			1			5							R�cBs,eZd�Zd�Zd�Zd�ZRS(cCstjd�|j|�dS(s|
        Query endpoint server for wire protocol version.
        Fail if our desired protocol version is not seen.
        sLoad Version.xmlN(RGRotparse(R;RI((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR=�s
cCs�t|�}t|d�}t|d�|_tjd|j�g|_t|d�}t|d�}x:|D]2}t|�}tj	d|�|jj
|�qnWdS(Nt	PreferredRs*Fabric preferred wire protocol version:{0}t	Supporteds*Fabric supported wire protocol version:{0}(R'R)R*R�RGRHt	supportedR(R+RoR�(R;RItxml_docR�R1tsupported_versiontnodeR�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR.�s	
	
	cCs|jS(N(R�(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��scCs|jS(N(R1(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s(R5R6R=R.R�R�(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s			R�cBs#eZd�Zd�Zd�ZRS(cCsE|dkrtd��ntjd�t�|_|j|�dS(NsExtensionManifest is NonesLoad ExtensionManifest.xml(R8t
ValueErrorRGRoRRjt_parse(R;RI((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR=�s

cCsTt|�}|jtt|d�d�t�|jtt|d�d�t�dS(NtPluginstPlugintInternalPlugins(R't_handle_packagesR(R)R{RJ(R;RIR2((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR6�scCs�x�|D]�}t|d�}t|d�}|dkr@d}n|j�dk}t|d�}t|d�}g|D]}t|�^qw}t�}	||	_||	_x|D]}
|	j	j
|
�q�W||	_|jj
j
|	�qWdS(NRtDisallowMajorVersionUpgradeRttruetUristUri(R*R8R�R)R(R+RR�tdisallow_major_upgradeR�R�t
isinternalRjtversions(R;tpackagesR@tpackageR�R?R�turi_listR!tpkgR|((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR:�s"
					
	(R5R6R=R6R:(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR��s		tInVMArtifactsProfilecBs eZdZd�Zd�ZRS(sA
    deserialized json string of InVMArtifactsProfile.
    It is expected to contain the following fields:
    * inVMArtifactsProfileBlobSeqNo
    * profileId (optional)
    * onHold (optional)
    * certificateThumbprint (optional)
    * encryptedHealthChecks (optional)
    * encryptedApplicationProfile (optional)
    cCs,tj|�s(|jjt|��ndS(N(R�tis_str_emptyt__dict__RR.(R;tartifacts_profile((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR=�scCs,d|jkr(t|j�j�dkStS(NtonHoldR<(RHR(RJR�R{(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt
is_on_holds(R5R6t__doc__R=RK(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRF�s
	R�cBs eZdZdZdZdZRS(R�R�R�R�(R5R6R�R�R�R�(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�	sRBcBsSeZdZdZedd�Zd�Zd�Zd�Zdd�Z
d�ZRS(	iiR�cCs|j�dS(N(t_reset(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR=scCsPd|_d|_d|_d|_d|_d|_tj�tj	|_
dS(Ni(t_request_countt_error_countt_server_error_countt_client_error_countt_timeout_countt_request_failure_countRR?RBt_Periodt_next_period(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRMs						cCs|jd7_dS(Ni(RN(R;((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�!sc	Cs�|jd7_|jtjkr4tjd|�n|jtjkrktdtjd|dt	dt	�n|t
jkr�|jd7_nc|t
j
kr�|jd7_nB|t
jkr�|jd7_n!|t
jkr�|jd7_ndS(NisO[VmSettings] [Informational only, the Agent will continue normal operation] {0}R~R�RR�(RORBt
_MaxLogErrorsRGRHt_MaxTelemetryErrorsRRt
VmSettingsR{R�R�RPR�RQR�RRR�RS(R;Rltcategory((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�$s%c	Cs�tj�|jkr�i|jd6|jd6|jd6|jd6|jd6|jd6}t	j
|�}tdtj
d|d	td
t�|jdkr�tjd|�n|j�ndS(
NtrequeststerrorstserverErrorstclientErrorsttimeoutstfailedRequestsR~R�RR�is[VmSettingsSummary] {0}(RR?RURNRORPRQRRRSR�RRRtVmSettingsSummaryR{RGRHRM(R;tsummaryR�((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyR�6s





"N(R5R6RVRWRRTR=RMR�R8R�R�(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyRBs				(}R�R@RaR�R�txml.sax.saxutilstsaxR�tcollectionsRRRtazurelinuxagent.common.conftcommonRCtazurelinuxagent.common.loggerRGt%azurelinuxagent.common.utils.textutiltutilsR�t.azurelinuxagent.common.agent_supported_featureRt#azurelinuxagent.common.datacontractRtazurelinuxagent.common.eventRRRRR	t azurelinuxagent.common.exceptionR
RRR
RRRtazurelinuxagent.common.futureRRRt5azurelinuxagent.common.protocol.extensions_goal_stateRRt=azurelinuxagent.common.protocol.extensions_goal_state_factoryRt*azurelinuxagent.common.protocol.goal_stateRRRt*azurelinuxagent.common.protocol.hostpluginRt'azurelinuxagent.common.protocol.restapiRRRRRR t%azurelinuxagent.common.telemetryeventR!tazurelinuxagent.common.utilsR"R#t$azurelinuxagent.common.utils.archiveR$t&azurelinuxagent.common.utils.cryptutilR%t-azurelinuxagent.common.utils.flexible_versionR&R'R(R)R*R+R,R-R.R/tazurelinuxagent.common.versionR0R1R�RR�RtWIRE_SERVER_ADDR_FILE_NAMER�R�R�R�R�R�R�R�R�tENDPOINT_FINE_NAMEtSHORT_WAITING_INTERVALRR4R7R�R�R�R�R8R�R�R�R�R�R�R�R�tobjectR�R0R7R9R�R�RFR�RB(((sH/usr/lib/python2.7/site-packages/azurelinuxagent/common/protocol/wire.pyt<module>s�(4.@p		6	
	
	
	
				(r	���m +