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: sonne (1011)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib/python2.7/site-packages/azurelinuxagent/ga/update.pyo
�
d�bc@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
m
Z
mZddljjZddljjZddljjjZddljjjZddljjjZddlmZmZddlmZddl m!Z!ddl"m#Z#m$Z$m%Z%m&Z&ddl'm(Z(m)Z)m*Z*m+Z+ddl,m-Z-dd	l.m/Z/m0Z0dd
l1m2Z2m3Z3ddl4m5Z5ddl6m7Z7dd
l8m9Z9ddl:m;Z;ddl<m=Z=ddl>m?Z?ddl@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMddlNmOZOmPZPddlQmRZRddlSmTZTddlUmVZVmWZWmXZXmYZYmZZZddl[m\Z\ddl]m^Z^ddl_m`Z`maZadZbdZcdZdddZeddZfdZgdZhdZiddZjdZkddZld Zmd!Znd"d#d$d%d&gZod'epfd(��YZqd)epfd*��YZrd+�Zsd,epfd-��YZtd.epfd/��YZud0epfd1��YZvdS(2i����N(tdatetimet	timedelta(tget_supported_feature_by_nametSupportedFeatureNames(tPersistFirewallRulesHandler(tCGroupConfigurator(t	add_eventt0initialize_event_logger_vminfo_common_parameterstWALAEventOperationtEVENTS_DIRECTORY(tResourceGoneErrortUpdateErrort
ExitExceptiontAgentUpgradeExitException(tustr(t
get_osutiltsystemd(tVMAgentUpdateStatustVMAgentUpdateStatuses(tget_protocol_util(tHostPluginProtocol(t	shellutil(tFlexibleVersion(tAddFirewallRules(tCommandError(
t
AGENT_NAMEt
AGENT_VERSIONtAGENT_DIR_PATTERNt
CURRENT_AGENTtCURRENT_VERSIONtDISTRO_NAMEtDISTRO_VERSIONtis_current_agent_installedtget_lis_versiont
has_logrotatetPY_VERSION_MAJORtPY_VERSION_MINORtPY_VERSION_MICRO(tget_collect_logs_handlertis_log_collection_allowed(tget_env_handler(t$get_collect_telemetry_events_handler(tHandlerManifesttExtHandlersHandlertlist_agent_lib_directorytExtensionStatusValuetExtHandlerStatusValue(tget_monitor_handler(t!get_send_telemetry_events_handler(tget_firewall_drop_commandtget_accept_tcp_rules
error.jsonsHandlerManifest.jsont	partitionii<iitcurrent_versiontinitial_goal_states*.crts*.p7ms*.pems*.prvsovf-env.xmltExtensionsSummarycBs5eZdZdd�Zd�Zd�Zd�ZRS(s�
    The extensions summary is a list of (extension name, extension status) tuples for the current goal state; it is
    used to report changes in the status of extensions and to keep track of when the goal state converges (i.e. when
    all extensions in the goal state reach a terminal state: success or error.)
    The summary is computed from the VmStatus reported to blob storage.
    cCs�|dkr!g|_t|_nlgtd�|jj�D]}|j|jf^q:|_|jj	dd��t
d�|jD��|_dS(NcSs|jdk	r|jS|S(N(textension_statustNone(th((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt<lambda>sstkeycSs|dS(Ni((ts((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR:tscss9|]/\}}|tjtjtjtjfkVqdS(N(R-tsuccessterrorR.treadyt	not_ready(t.0t_tstatus((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pys	<genexpr>us(R8tsummarytTruet	convergedtmaptvmAgenttextensionHandlerstnameRCtsorttall(tselft	vm_statusto((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__init__ms	:cCs|j|jkS(N(RD(RMtother((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__eq__wscCs||kS(N((RMRQ((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__ne__zscCs
t|j�S(N(RRD(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__str__}sN(t__name__t
__module__t__doc__R8RPRRRSRT(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR6fs

		tAgentUpgradeTypecBseZdZdZdZRS(s3
    Enum for different modes of Agent Upgrade
    tHotfixtNormal(RURVRWRYRZ(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRX�scCst�S(N(t
UpdateHandler(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pytget_update_handler�sR[cBseZedd�Zd�Zd2d�Zed�Zd�Z	d�Z
d�Zd�Ze
d	��Zd
�Zd�Zd�Zd
�Zd�Ze
d��Zed�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Ze d��Z!e!j"d��Z!e d��Z#e d��Z$d�Z%d�Z&d �Z'e d!��Z(d"�Z)d2d#�Z*e+d$d%�Z,d&�Z-e
d'��Z.d(�Z/e0d)�Z1d*�Z2d+�Z3e
d,��Z4e
d-��Z5d.�Z6d/�Z7e
d0��Z8d1�Z9RS(3tminutesicCs1t�|_t�|_t|_d|_d|_d|_	g|_
d|_d|_d|_
d|_d|_d|_ttj��j�|_d|_d|_t|_d|_d|_t�|_tjj |j!��|_"t#j$�st%|_&n*|j"rt#j'�|_&nt#j(�|_&dS(Nii����()RtosutilRt
protocol_utilREt_is_runningR8tlast_attempt_timet_last_hotfix_upgrade_timet_last_normal_upgrade_timetagentstchild_agenttchild_launch_timetchild_launch_attemptst
child_processtsignal_handlert_last_telemetry_heartbeattstrtuuidtuuid4tuppert
_heartbeat_idt_heartbeat_countert(_heartbeat_update_goal_state_error_counttFalset"_last_try_update_goal_state_failedt&_report_status_last_failed_incarnationtlast_incarnationR6t_extensions_summarytostpathtexistst_initial_goal_state_file_patht_is_initial_goal_statetconftget_extensions_enabledt%GOAL_STATE_PERIOD_EXTENSIONS_DISABLEDt_goal_state_periodtget_initial_goal_state_periodtget_goal_state_period(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRP�s4																	c
Cs�|jdk	rtd��n|jdkrKtjtj|j�|_n|j�}|dkr�tj	dt
�djtj
d�}tj�}t
}t}n=tj	d|j�|j�}|j�}|j}|j}|dk	rdj||�}ny@tj|�}|dj�dkrItj|d<dj|�}n|j|�tj|d	|d
tjdtjdtj�|_tj d
||�d}d}	t!j!�}
xdt!j!�|
t"krt!j#|�y|jj$�}	Wnt%k
rd}	nX|	dk	r�Pq�q�W|	dks3|	dkr�dj||�}tj	|�t&t'd|dt(j)dt*d|dt+�|	dkr�|jj,�}	q�nGdj|||	�}tj-|�t&t'd|dt(j)dt+d|�|	dk	rA|	dkrAdj|||	�}tj-|�|dk	rA|j.dt*�qAnWn�tk
r�}|j/r�dj||�}tj-|�dj|tj0|��}
t&t'd|dt(j)dt+d|
�|dk	r�|j.dt*�q�q�nXd|_dS(s�
        This method is called from the daemon to find and launch the most
        current, downloaded agent.

        Note:
        - Most events should be tagged to the launched agent (agent_version)
        s=Illegal attempt to launch multiple goal state Agent processesu-Installed Agent {0} is the most current agentspython -u {0} -run-exthandlersiu+Determined Agent {0} to be the latest agents{0} {1}tpythont tcwdtstdouttstderrtenvu%Agent {0} launched with command '{1}'ii����u=Agent {0} launched with command '{1}' is successfully runningtversiontopt
is_successtmessaget	log_eventuBAgent {0} launched with command '{1}' failed with return code: {2}u8Agent {0} launched with command '{1}' returned code: {2}tis_fatalu>Agent {0} launched with command '{1}' failed with exception: 
N(1RhR8t	ExceptionRitsignaltSIGTERMtforward_signaltget_latest_agenttloggertinfoRtformattsystargvRwtgetcwdRRJt
get_agent_cmdt
get_agent_dirR�ttextutiltsafe_shlex_splittlowert
executabletjoint_evaluate_agent_healtht
subprocesstPopenR�R�tenvirontverbosettimetCHILD_HEALTH_INTERVALtsleeptpolltOSErrorRRRtEnableRERrtwaittwarntmark_failuret
is_runningtformat_exception(RMt
child_argstlatest_agentt	agent_cmdt	agent_dirt
agent_namet
agent_versiontcmdst
poll_intervaltrett
start_timetmsgtetdetailed_message((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt
run_latest�s�				

		


	
		
		
		
		cCsfyjtjdt�|jj�}x&|j|�sJtjtj	��q%Wt
|�djdtdt
dt|j�jd|jjdtdtd	td
tj�dt�dt��
}tj|�ttd
tjd|�ddlm}m}||�}|�ddl m!}||�}|j"�|j#�|j$�|j%�|j&�|j'�|j(|�|j)d|j*��|j+d|j*��t,|j�}	t-�t.�|	t/|	�g}
t0�r�|
j1t2��nx|
D]}|j3�q�Wtjd|j4�xT|j5rh|j6|�|j7|
�|j8||�|j9|�tj|j4�qWWn�t:k
r�}ttd
tj;dt<dt=d|j>dt?�tj|j>�n�t@k
r�}tj|j>�nltAk
rJ}
djttB|
��}|jCd|�tjD|�tjDtEjF|
��tGjHd�dSX|jI�tGjHd�dS(sV
        This is the main loop which watches for agent and extension updates.
        u,Agent {0} is running as the goal state agentu�Distro: {dist_name}-{dist_ver}; OSUtil: {util_name}; AgentService: {service_name}; Python: {py_major}.{py_minor}.{py_micro}; systemd: {systemd}; LISDrivers: {lis_ver}; logrotate: {has_logrotate};t	dist_nametdist_vert	util_nametservice_nametpy_majortpy_minortpy_microRtlis_verR"R�R�i����(tget_exthandlers_handlertmigrate_handler_state(tget_remote_access_handlertdst_ipsmGoal State Period: {0} sec. This indicates how often the agent checks for new goal states and reports status.R�R�R�u$Agent {0} failed with exception: {1}R�iNi(JR�R�RR_tget_protocolt_try_update_goal_stateR�R�R|R�RR�RRttypeR^RUR�R#R$R%Rt
is_systemdR!R"RRRtOSInfotazurelinuxagent.ga.exthandlersR�R�tazurelinuxagent.ga.remoteaccessR�t_ensure_no_orphanst_emit_restart_eventt&_emit_changes_in_default_configurationt_ensure_partition_assignedt_ensure_readonly_filest_ensure_cgroups_initializedt5_ensure_extension_telemetry_state_configured_properlyt _ensure_firewall_rules_persistedtget_endpointt,_add_accept_tcp_firewall_rule_if_not_enabledR0R/R(R)R'tappendR&trunRR�t_check_daemon_runningt_check_threads_runningt_process_goal_statet_send_heartbeat_telemetryR
tAgentUpgradeRREtreasonRrRR�Rt
_set_sentinelR�R�R�R�texitt	_shutdown(RMtdebugtprotocoltos_info_msgR�R�texthandlers_handlerR�tremote_access_handlerttelemetry_handlertall_thread_handlerstthread_handlert
exitExceptionR>R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�9sx
	







	






cCs,|r(|jr(tdjt���ndS(Ns!Agent {0} is an orphan -- exiting(t_is_orphanedRR�R(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��scCsWxP|D]H}|j�r|j�rtjdj|j���|j�qqWdS(Ns{0} thread died, restarting(t
keep_alivetis_aliveR�R�R�tget_thread_nametstart(RMR�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s
cCsya|j�|jr`t|_d}ttdtjdtdtd|dt�t	j
|�nWn�tk
r
}|js�t|_djt
j|��}t	j|�ttdtjdtdtd|dt�ndjt|��}t	jt	jd	j|��tSXtS(
s�
        Attempts to update the goal state and returns True on success or False on failure, sending telemetry events about the failures.
        u8Retrieving the goal state recovered from previous errorsR�R�R�R�R�u6An error occurred while retrieving the goal state: {0}u4Attempts to retrieve the goal state are failing: {0}s[PERIODIC] {0}(tupdate_goal_stateRsRrRRRtFetchGoalStateRRER�R�R�R�R�R�R�Rt
periodic_warntEVERY_SIX_HOURS(RMR�R�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s"
		+		
.cCs|j}|j|�s>|jd7_|j|dt�dS|j|�r$|j�}|dkr}tdj	t
���q$|j�\}}|j|�}|t
jkr�|n|}dj	||jtj|�jtjj��}	ttdtjdtdtd|	d	t�tj|	�n|j�|j�}
z�|
|jkr�|j j!s�d
j	|j �}	tj"|	�tdtj#d|	dtd	t�|j$r�|j%|j �q�nt&�|_ |j'�n|j|d|
|jk�|
|jkr	|j'�nWd|
|_XdS(Nitincarnation_changeds8Agent {0} is reverting to the installed agent -- exitings<Discovered new {0} upgrade {1}; Will upgrade on or after {2}R�R�R�R�R�shA new goal state was received, but not all the extensions in the previous goal state have completed: {0}((R�R�Rqt_report_statusRrt._check_and_download_agent_if_upgrade_availableR�R8R
R�Rt&_UpdateHandler__get_next_upgrade_timest&_UpdateHandler__get_agent_upgrade_typeRXRYRJRtutcfromtimestamptstrftimeR�tLoggertLogTimeFormatInUTCRRRR�RRER�t*_UpdateHandler__upgrade_agent_if_permittedtget_incarnationRuRvRFR�t	GoalStateR{t _on_initial_goal_state_completedR6R�(RMR�R�R�tavailable_agenttnext_normal_timetnext_hotfix_timetupgrade_typet	next_timeR�tincarnation((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��sD		!


"	
c
	CsDtj�sd
Sd
}y�|j�\}}ytd�|D��}Wn7tk
r~|rztjdjtj	���nd
SX|j
r�t|jkr�t
j}d}nt
j}d}td|jd|d|�}nWnctk
r?}|r@djtj|��}	tj|	�td	tjd
td|	dt�q@nX|S(s�
        This function gets the VMAgent update status as per the last GoalState.
        Returns: None if the last GS does not ask for requested version else VMAgentUpdateStatus
        css*|] }|jtj�kr|VqdS(N(tfamilyR|tget_autoupdate_gafamily(RAtm((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pys	<genexpr>ssLUnable to report update status as no matching manifest found for family: {0}iitexpected_versionRCtcodes�[This error will only be logged once per incarnation] Ran into error when trying to fetch updateStatus for the agent, skipping reporting update satus. Error: {0}R�R�R�R�N(R|tget_enable_ga_versioningR8tget_vmagent_manifeststnextt
StopIterationR�R�R�Rtis_requested_version_specifiedRtrequested_versionRtSuccesstErrorRtrequested_version_stringR�R�R�R�RRR�Rr(
R�R�t
update_statustagent_manifestsRBtmanifestRCRR>terr_msg((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__get_vmagent_update_status�s6
				
)c	Cs�|j|j|�}|jd|d|�}|dkr=dSy�t|�}|j|kr�||_dj|j�}tj|�t	dt
jd|�|jjr�dj|�}tj|�t	dt
jd|�|j
r�|j|j�q�q�nWn�tk
r}}|j|jj�kr~|jj�|_djtj|��}tj|�t	dt
jdtd|�q~nXdS(	NR�tvm_agent_update_statussExtension status: {0}R�R�sCAll extensions in the goal state have reached a terminal state: {0}u)Error logging the goal state summary: {0}R�(t)_UpdateHandler__get_vmagent_update_statusR�treport_ext_handlers_statusR8R6RvR�R�R�RRRRFR{RR�RtRR�R�R�Rr(	RMR�R�RRNtextensions_summaryR�R>R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR� s0		

	
cCsotj|j�t|��tj�rb|jtj�krbtj�|_tj	d|j�nt
|_dS(NsCInitial goal state completed, switched the goal state period to {0}(tfileutilt
write_fileRzRR|R}RR�R�R�RrR{(RMR!((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR=s
!cCs�|tjkr|j�n|jdkr/dStjdt||jdk	rY|jj	nt�|jj
|�|jdtjtj
fkr�|j||�n>|jtj
kr�|tjkr�|j�tjd�q�ndS(Nu&Agent {0} forwarding signal {1} to {2}i(R�R�R�RhR8R�R�RReRJtsend_signalRitSIG_IGNtSIG_DFLR�R�(RMtsignumtframe((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�Ds"
"
cCsrtj�sdS|j�g|jD]*}|jr$|jtt�kr$|^q$}t	|�dkrn|dSdS(s�
        If autoupdate is enabled, return the most current, downloaded,
        non-blacklisted agent which is not the current version (if any).
        Otherwise, return None (implying to use the installed agent).
        iiN(
R|tget_autoupdate_enabledR8t_find_agentsRdtis_availableR�RRtlen(RMtagenttavailable_agents((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�[s
	!c
Csxy`|js_djtj|j���}tj|�ttdt	dt
jdtd|�nWnt
k
rsnXdS(Nu$Agent did not terminate cleanly: {0}R�R�R�R�(t_is_clean_startR�R"t	read_filet_sentinel_file_pathR�R�RRRRtRestartRrR�(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�ls	
	
cs5yd��d�fd�}�fd�}|dtj�d�|dtj�d�|dtj��|d	tj��|d
tj��tj�r�|dtj��ntj�r�|dtj��ntj�d
kr�dj	tj���nWn)t
k
r0}tjdt
|��nXdS(NcSs-tjd|�ttdtjd|�dS(Ns******** {0} ********R�R�(R�R�RRRtConfigurationChange(R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��stcs>tj|�}||kr:�dj||||��ndS(Ns6{0} changed from its default: {1}. New value: {2}. {3}(R|tget_int_default_valueR�(RJtcurrentR�tdefault(R�(s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pytlog_if_int_changed_from_default�scs |s�dj|��ndS(Ns1{0} is set to False, not processing the operation(R�(RJtvalue(R�(s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pytlog_if_op_disabled�ssExtensions.GoalStatePeriods�Changing this value affects how often extensions are processed and status for the VM is reported. Too small a value may report the VM as unresponsives!Extensions.InitialGoalStatePeriodsOS.EnableFirewallsExtensions.EnabledsAutoUpdate.EnabledsOS.EnableFirewallPeriodsAutoupdate.Frequencys/var/lib/waagents)lib dir is in an unexpected location: {0}s+Failed to log changes in configuration: {0}(R|R�R�tenable_firewallR}R)tget_enable_firewall_periodtget_autoupdate_frequencytget_lib_dirR�R�R�R�R(R8R:R�((R�s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�}s&	 cCs�|j�\}}x�|D]�}y�tj|�}|}xv|jj|�r�|t8}|dkr�tjdt|�t	j
|tj�Pntj
dt|�tjt�q:Wt	j|�Wqtk
r�}tjdt|��qXqWdS(Niu*{0} forcibly terminated orphan process {1}u/{0} waiting for orphan process {1} to terminateu=Exception occurred waiting for orphan agent to terminate: {0}(t_write_pid_fileR"R0R^tcheck_pid_alivetORPHAN_POLL_INTERVALR�R�RRwtkillR�tSIGKILLR�R�R�tremoveR�R(RMtorphan_wait_intervalt	pid_filestignoredtpid_filetpidt
wait_intervalR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s2

c
Csstjj|j�sotttj�jd��}t	j
|j|�ttdt
dtjdtd|�ndS(s�
        Assign the VM to a partition (0 - 99). Downloaded updates may be configured
        to run on only some VMs; the assigned partition determines eligibility.
        i'R�R�R�R�N(RwRxRyt_partition_fileRtintRtutcnowtmicrosecondR"R#RRRRt	PartitionRE(RMR3((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s	cCsWxPtD]H}x?tjtjjtj�|��D]}tj|t	j
�q2WqWdS(N(tREADONLY_FILE_GLOBStglobtiglobRwRxR�R|R>tchmodtstattS_IRUSR(RMtgRx((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s
+cCstj�}|j�dS(N(Rtget_instancet
initialize(RMtconfigurator((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��scCs�|dkrd|_dS|jdks=|j|jjkr[||_d|_d|_n|jdkr|tj�|_n|jd7_tj�|jtkr�|jtkr�dj|jj	tt�}t
|��ndS(s�
        Evaluate the health of the selected agent: If it is restarting
        too frequently, raise an Exception to force blacklisting.
        Niiu6Agent {0} restarted more than {1} times in {2} seconds(R8ReR�RfRgR�tCHILD_LAUNCH_INTERVALtCHILD_LAUNCH_RESTART_MAXR�RJR�(RMR�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s$	$				cCs,g|jD]}|js
|^q
|_dS(N(Rdtis_blacklisted(RMR-((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt_filter_blacklisted_agents�scCsQy!|j|j��|j�Wn)tk
rL}tjdt|��nXdS(sD
        Load all non-blacklisted agents currently on disk.
        u0Exception occurred loading available agents: {0}N(t_set_agentst_load_agentsR]R�R�R�R(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR*�scCs |r|jr|jj�SdS(N(tclienttget_host_pluginR8(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt_get_host_pluginscCs^tj�}tjj|�}tjj|�}tjdjtj	|���}|||fS(Ns	(\d+)_{0}(
R|tget_agent_pid_file_pathRwRxtdirnametbasenametretcompileR�tescape(RMRHtpid_dirtpid_nametpid_re((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt_get_pid_partss
!csr|j�\}}�gtj|�D]*}�j|�r%tjj||�^q%}|jd�fd��|S(NR;cs(t�jtjj|��jd��S(Ni(RLtmatchRwRxRetgroup(tf(Rk(s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR:s(RlRwtlistdirRmRxR�RK(RMRiRjRoRF((Rks=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt_get_pid_filess@cCs|jS(N(R`(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�scCs
||_dS(N(R`(RMR9((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�scCstjj|j��S(N(RwRxtisfileR1(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR/scCsWtj�}|dkrtStjjtj��s8tStj	tj��t
|�kS(Ni(iN(RwtgetppidR8RERxRrR|RcR"R0R(RMt
parent_pid((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�scCsG|tkrt�rtSx'|jD]}|j|kr#|jSq#WtS(N(RR RERdR�R+Rr(RMR�R-((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt_is_version_eligible)scCs_tjjtj�djt��}gtj|�D]'}tjj	|�r4t
d|�^q4S(Ns{0}-*Rx(RwRxR�R|R>R�RRQRRtisdirt
GuestAgent(RMRxR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR_4s$cCsttj|j��S(N(RLR"R0RK(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt
_partition9scCstjjtj�t�S(N(RwRxR�R|R>tAGENT_PARTITION_FILE(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRK<scCsZtjjtj�djt��}g|jD]}|j^q.}t	|krot
jdt	�|jt	�nx�t
j|�D]�}y�tj|d�}tj|�}|dk	r"t|jd��|kr"tjj|�rt
jd|�tj|�q"t
jd|�tj|�nWqtk
rQ}t
jd|t|��qXqWdS(	s�
        Remove from disk all directories and .zip files of unknown agents
        (without removing the current, running agent).
        s{0}-*uFRunning Agent {0} was not found in the agent manifest - adding to listtzipiuPurging outdated Agent file {0}u$Purging outdated Agent directory {0}u!Purging {0} raised exception: {1}N(RwRxR�R|R>R�RRdR�RR�R�R�RQRRR"ttrim_extRRmR8RRnRrR�RDtshutiltrmtreeR�R�R(RMRxR-tknown_versionst
agent_pathRJR
R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt
_purge_agents@s($'!cCs>|dkrg}n||_|jjdd�dt�dS(NR;cSs|jS(N(R�(R-((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR:astreverse(R8RdRKRE(RMRd((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR^]s
		s
Unknown causecCs_y&tj|j�dj||��Wn2tk
rZ}tjd|j�t|��nXdS(Ns[{0}] [{1}]u(Exception writing sentinel file {0}: {1}(R"R#R1R�R�R�R�Rk(RMR-R�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�ds		cCstjjtj�t�S(N(RwRxR�R|R>tAGENT_SENTINEL_FILE(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR1pscCstjjtj�t�S(N(RwRxR�R|R>tINITIAL_GOAL_STATE_FILE(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRzsscCsut|_tjj|j��s%dSytj|j��Wn2tk
rp}tj	d|j�t
|��nXdS(Nu)Exception removing sentinel file {0}: {1}(RrR�RwRxRrR1RDR�R�R�Rk(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�ws		c
Cs�tj�stStj�}|jdk	rA|jtj�}n|}||krWtStj�}tj	d|�||_y |j
�\}}g|D]0}|j|kr�t|j
�dkr�|^q�}	t|	�dkr�tjd||�tS|j|	d�}
|jd|�}|jg|
jD]}td|d|�^q,�|j�|j�|j|�p�t|j�dko�|jdj|kSWnQtk
r�}
djtj|
��}ttdtj d	t!d
td|�tSXdS(
s,
        This function periodically (1hr by default) checks if new Agent upgrade is available and downloads it on filesystem if it is.
        rtype: Boolean
        return: True if current agent is no longer available or an agent with a higher version number is available
        else False
        s(Checking for agent updates (family: {0})iu(Incarnation {0} has no {1} agent updatesR�tpkgthostu)Exception retrieving agent manifests: {0}R�R�R�R�N("R|R)RrR�RaR8R=RR�R�RRR,turisR�tget_vmagent_pkgsRbR^tversionsRwR�R]RuRdR�R�R�R�R�RRRtDownloadR(RMR�tbase_versiontnowtnext_attempt_timeRt
manifest_listtetagR
t	manifeststpkg_listR�R�R�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s<	=	
	2

-c	Cs%|j�}|j�\}}}t|�dkr9dn|d}|dkrUdn't|jtjj|��j	d��}tjj
|dj|d|��}y?tj
|ttj���tjdtttj���Wn5tk
r}d}tjdt|t|��nX||fS(Nii����is{0}_{1}u{0} running as process {1}u6Expection writing goal state agent {0} pid to {1}: {2}(RqRlR,R8RLRmRwRxReRnR�R�R"R#RtgetpidR�R�RR�R�(	RMRFRiRjRktprevious_pid_filet	pid_indexRHR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR?�s""*%#c
Cs+|jdkr(tj�tj|_ntj�|jtjkr'|jj|j��}t	j
�rndnd}dj|j|j
||j|�}dj|j|j
||j|�}tdtdtdtjdtd	|d
t�tjdt|�|jd7_d|_tj�|_ndS(Niis{0};{1};{2};{3};{4}sf[DEBUG HeartbeatCounter: {0};HeartbeatId: {1};DroppedPackets: {2};UpdateGSErrors: {3};AutoUpdate: {4}]RJR�R�R�R�R�u<[HEARTBEAT] Agent {0} is running as the goal state agent {1}(RjR8RRMR[tTELEMETRY_HEARTBEAT_PERIODR^tget_firewall_dropped_packetsR�R|R)R�RpRoRqRRRRt	HeartBeatRERrR�R�R(RMR�tdropped_packetstauto_update_enabledt
telemetry_msgt
debug_log_msg((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s&			!
	c	Cs�ttj�j}x�tdt�D]�\}}y"tjd|d|d|�}Wntk
rfq"nXyX|dk	r�|j
�|j�}|r�tj
j|�r�tj|dd�q�nWq"tk
r�}tjdjt|���q"q"Xq"WyX|sOtjtj
jtj�dt��}x$|D]}tj|d	t�q/WnWn/tk
r�}tjd
jt|���nXdS(Ntskip_agent_packageRJRxR�tmodei�sJUnable to re-create HandlerEnvironment file on service startup. Error: {0}t*t
ignore_errorssKError when trying to delete existing Extension events directory. Error: {0}(RRtExtensionTelemetryPipelinetis_supportedR,RER+t"get_ext_handler_instance_from_pathR�R8tcreate_handler_envtget_extension_events_dirRwRxRyR"tmkdirR�R�R�RRQR�R|tget_ext_log_dirR	R|R}(	R�tetp_enabledRJRxthandler_instancet
events_dirR�textension_event_dirstext_dir((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s2


'
c	Cs�tj�stjd�dSt}tjd�y<td|dtj��j�d}t	}tj|�Wn5t
k
r�}djt|��}tj
|�nXtdtjd|d	|d
t�dS(NsCNot setting up persistent firewall rules as OS.EnableFirewall=Falses,Starting setup for Persistent firewall rulesR�tuids,Persistent firewall rules setup successfullys2Unable to setup the persistent firewall rules: {0}R�R�R�R�(R|R;R�R�RrRRwtgetuidtsetupRER�R�RR>RRtPersistFirewallRules(R�R�R�R>((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�s$

	c	CsLtj�sdSd�}y�|jj�}t|tj|�}||�s]tjd�dSt	|tj|�}||�sy@tjd�t	|tj
|�}tj|�tjd�Wqt
k
r�}dj|j|j|j�}tj|�qXn
tjd�Wn5tk
rG}djt|��}tj|�nXdS(NcSsDytj|�tSWn(tk
r?}|jdkr@�q@nXtS(Ni(Rtrun_commandRERt
returncodeRr(tcommandterr((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt_execute_run_command9s

sjDROP rule is not available which implies no firewall rules are set yet. Environment thread will set it up.seFirewall rule to allow DNS TCP request to wireserver for a non root user unavailable. Setting it now.s]Succesfully added firewall rule to allow non root users to do a DNS TCP request to wireserversxUnable to set the non root tcp access firewall rule :Run command execution for {0} failed with error:{1}.Return Code:{2}spNot setting the firewall rule to allow DNS TCP request to wireserver for a non root user since it already existss'Error while checking ip table rules:{0}(R|R;R^tget_firewall_will_waitR1Rt
CHECK_COMMANDR�R�R2tINSERT_COMMANDRR�RR�R�R�R�R>R�R(	RMR�R�R�t	drop_ruletaccept_tcp_ruleR>R�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�4s6	

csU�fd�}tj��||jtj��}||jtj��}||fS(so
        Get the next upgrade times
        return: Next Normal Upgrade Time, Next Hotfix Upgrade Time
        cs|dkr�S||S(N(R8(tlast_valt	frequency(R�(s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pytget_next_process_timels(R�RbR|tget_hotfix_upgrade_frequencyRctget_normal_upgrade_frequency(RMR�RR((R�s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__get_next_upgrade_timesfs
cCs8|jjtjkr1|jjtjkr1tjStjS(N(R�tmajorRtminorRXRYRZ(R((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__get_agent_upgrade_typeus*cCs|j�\}}tj�}||kr:||kr:dS||krL|n|j|_||krj|n|j|_|j�}|dkr�tjd�dS|j|�}dj	||j
�}|tjkr�||ks�|tj
kr||krt|��ndS(s�
        Check every 4hrs for a Hotfix Upgrade and 24 hours for a Normal upgrade and upgrade the agent if available.
        raises: ExitException when a new upgrade is available in the relevant time window, else returns
        NsNo agent upgrade discovereds8{0} Agent upgrade discovered, updating to {1} -- exiting(R�R�RbRcR�R8R�R�R�R�RJRXRYRZR
(RMRRR�RRtupgrade_message((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt__upgrade_agent_if_permitted}s 
	N(:RURVRR�RPR8R�RrR�R�R�R�R�tstaticmethodRR�RR�R�R�R�tORPHAN_WAIT_INTERVALR�R�R�R�R�R]R*RbRlRqtpropertyR�tsetterR/R�RuR_RxRKR�R^RR�R1RzR�RR�R?R�R�R�R�R�R�R(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR[�s`	+~g				1+					$															;		&	2	RwcBs�eZdddd�Zed��Zd�Zd�Zd�Zd�Z	d�Z
d�Zed��Zed	��Z
ed
��Zed�Zd�Zd
�Zd�Zdedd�Zd�Zd�Zd�ZRS(c

Cs�||_||_d}|dk	ritj|�}|dkrWtdj|���n|jd�}n|jdk	r�|j}n|dkr�tdj|���nt	|�|_|dk	r�dnd}t
jd|j|�t
|j��|_|jj�y|j�|j�Wn�tk
r�}t|t�rF�nt|t�r[�n|jdtjj|j���dj|j�}d	j|tj|��}	ttd
|jdt j!dt"d
|	�nXdS(NuIllegal agent directory: {0}iuIllegal agent version: {0}udiskupackageuLoading Agent {0} from {1}R�u(Agent {0} install failed with exception:s{0} {1}R�R�R�R�(#R�R�R8RRmRR�RnR�RR�R�RJtGuestAgentErrortget_agent_error_fileR>tloadt_ensure_downloadedt_ensure_loadedR�t
isinstanceR
tIOErrorR�RwRxRrtget_agent_pkg_pathR�R�RRRtInstallRr(
RMRxR�R�R�R
tlocationR�R�tdetailed_msg((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRP�sF		

"		cCsdjt|j�S(Ns{0}-{1}(R�RR�(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRJ�scCs
|jj�S(N(Rtget_enable_command(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��scCstjjtj�|j�S(N(RwRxR�R|R>RJ(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��scCstjjtj�|jt�S(N(RwRxR�R|R>RJtAGENT_ERROR_FILE(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��scCstjj|j�t�S(N(RwRxR�R�tAGENT_MANIFEST_FILE(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pytget_agent_manifest_path�scCs+djtjjtj�|j�df�S(Nt.Rz(R�RwRxR|R>RJ(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��scCs|jj�|jj�dS(N(R>tcleartsave(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pytclear_error�s
cCs|jo|jS(N(t
is_downloadedR\(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR+�scCs|jdk	o|jjS(N(R>R8R\(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR\�scCs|jptjj|j��S(N(R\RwRxRrR�(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s	cCs�yttjj|j��s1tj|j��n|jjd|�|jj�|jjrst	j
d|j�nWn/tk
r�}t	j
d|jt
|��nXdS(NR�u$Agent {0} is permanently blacklistedu+Agent {0} failed recording error state: {1}(RwRxRvR�tmakedirsR>R�R�R\R�R�RJR�R(RMR�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s
c
Cs�tjd|j�|jr3tjd|j�dS|jdkr]tdj|j���n|j�|j	�dj|j�}tj|�t
td|jdt
jdtd|�dS(	Nu Ensuring Agent {0} is downloadedu7Agent {0} was previously downloaded - skipping downloadu.Agent {0} is missing package and download URIsu!Agent {0} downloaded successfullyR�R�R�R�(R�R�RJR�R�R8RR�t	_downloadt_unpackRRR�RR�RE(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s"		


		cCs|j�|j�dS(N(t_load_manifestt_load_error(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�s
cCs�|jj}tj|�x|D]}tjrC|j|�rCPq |jdk	r&|jj	�r&tjszt
jd�n
t
jd�|jj
||jj�\}}y[|j|d|dtdtj�r�tjs�t
jd�tt_nPn
t
jd�Wq3tk
r"tt_�q3Xq t
jd�q Wtjj|j��s�d	j|j�}ttd
tjdtdtd
|�t |��ndS(Ns)Download failed, switching to host plugins$Using host plugin as default channeltheaderst	use_proxytretry_codess&Setting host plugin as default channelsHost plugin download failedsNo download channels availableu)Unable to download Agent {0} from any URIR�R�R�R�(!R�R�trandomtshuffleRtis_default_channelt_fetchR�R8tensure_initializedR�R�R�tget_artifact_requesttmanifest_uriRrtrestutilt'HGAP_GET_EXTENSION_ARTIFACT_RETRY_CODESRER
R>RwRxRrR�R�RJRRRR�RR(RMt
uris_shuffledturiR�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�s<

	
!$	

	
	c

CsDd}y�t}d}tj|d|d|ddd|�}tj|�r�|j�}tj|j�t	|�dt�t
jd|j|�n/tj
|�}t
jd	|�tj|�}|jdk	r�|jj||d
dd|�nWnDtjk
r9}	t|	t�r�nt
jd
|j||	�nX|dk	S(NR4R�R�t	max_retryiR�tasbinuAgent {0} downloaded from {1}sFetch was unsuccessful [{0}]tsourceRwtresponseu(Agent {0} download from {1} failed [{2}](R8RER�thttp_gettrequest_succeededtreadR"R#R�t	bytearrayR�R�RJtread_response_errortrequest_failed_at_hostpluginR�treport_fetch_healtht	HttpErrorR�R
(
RMR�R�R�R�tpackaget
is_healthyterror_responsetrespt
http_error((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�Cs0'&	cCs{yEt|j��|_|jj�tjd|jt|j��Wn/tk
rv}tj	d|jt|��nXdS(NuAgent {0} error state: {1}u)Agent {0} failed loading error state: {1}(
R�R�R>R�R�R�RJRR�R�(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�bs
#c	Cs�|j�}tjj|�sBdj|jt�}t|��nt|d���}yt	j
|�}Wn4tk
r�}dj|jt�}t|��nXt|�t
kr�t|�dkr�dj|jt�}t|��n|d}n|}WdQXy=t|�|_t|jj��dkr;td��nWn=tk
r{}dj|jtt|��}t|��nXtjd|j|j��tjd	|jtt|jj��dS(
Nu!Agent {0} is missing the {1} filetruAgent {0} has a malformed {1}iuAgent {0} has an empty {1}u&Manifest is missing the enable commandu!Agent {0} has an illegal {1}: {2}u"Agent {0} loaded manifest from {1}u&Successfully loaded Agent {0} {1}: {2}(R�RwRxRrR�RJR�RtopentjsonR�R�R�tlistR,R*RR�RR�R�tdata(RMRxR�t
manifest_fileR�R�R((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�jsF

	cCs!yTtjj|j��r1tj|j��ntj|j��j	|j��Wnht
k
r�}tj|d|j�|j�g�dj
|j|j�t|��}t|��nXtjj|j��sdj
|j|j��}t|��ntjd|j|j��dS(Ntpathsu+Exception unpacking Agent {0} from {1}: {2}u2Unpacking Agent {0} failed to create directory {1}u&Agent {0} unpacked successfully to {1}(RwRxRvR�R|R}tzipfiletZipFileR�t
extractallR�R"t
clean_ioerrorR�RJRRR�R�(RMR�R�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s,&	
N(RURVR8RPR�RJR�R�R�R�R�R�R+R\R�RrR�R�R�R�RER�R�R�R�(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRw�s&3									*		)R�cBsbeZd�Zed�Zd�Zed��Zd�Zd�Z	d�Z
d�Zd�ZRS(	cCs2|dkrtd��n||_|j�dS(NuGuestAgentError requires a path(R8RRxR�(RMRx((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRP�s
	
cCs+tj�|_|jd7_||_dS(Ni(R�tlast_failuret
failure_countt	was_fatal(RMR�((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s	cCsd|_d|_t|_dS(Ngi(RRRrR
(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s			cCs|jp|jtkS(N(R
RtMAX_FAILURE(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR\�scCs�|jdk	r�tjj|j�r�y5t|jd��}|jtj|��WdQXWq�tk
r�}t	j
dj|jtj
|���ytj|j�Wq�tk
r�q�Xq�XndS(NRsYRan into error when trying to load error file {0}, deleting it to clean state. Error: {1}(RxR8RwRrRt	from_jsonRR�R�R�R�R�R�R�RD(RMRoR>((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s$ 
cCsYtjjtjj|j��rUt|jd��}tj|j�|�WdQXndS(Ntw(RwRxRvRdRRtdumptto_json(RMRo((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s!cCsdt|j|jdd��|_t|j|jdd��|_|jpZ|jdt�|_dS(Nulast_failuregu
failure_countiu	was_fatal(tmaxRtgetRR
Rr(RMR((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�scCs(i|jd6|jd6|jd6}|S(Nulast_failureu
failure_countu	was_fatal(RRR
(RMR((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR�s



cCsdj|j|j|j�S(Ns2Last Failure: {0}, Total Failures: {1}, Fatal: {2}(R�RRR
(RM((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyRT�s(
RURVRPRrR�R�R�R\R�R�RRRT(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyR��s					
	(wRQRRwR�RfR|R�RTR�R�R�RlRRRtazurelinuxagent.common.conftcommonR|tazurelinuxagent.common.loggerR�t%azurelinuxagent.common.utils.fileutiltutilsR"t%azurelinuxagent.common.utils.restutilR�t%azurelinuxagent.common.utils.textutilR�t.azurelinuxagent.common.agent_supported_featureRRt-azurelinuxagent.common.persist_firewall_rulesRt)azurelinuxagent.common.cgroupconfiguratorRtazurelinuxagent.common.eventRRRR	t azurelinuxagent.common.exceptionR
RRR
tazurelinuxagent.common.futureRtazurelinuxagent.common.osutilRRt'azurelinuxagent.common.protocol.restapiRRt$azurelinuxagent.common.protocol.utilRt*azurelinuxagent.common.protocol.hostpluginRtazurelinuxagent.common.utilsRt-azurelinuxagent.common.utils.flexible_versionRt(azurelinuxagent.common.utils.networkutilRt&azurelinuxagent.common.utils.shellutilRtazurelinuxagent.common.versionRRRRRRRR R!R"R#R$R%tazurelinuxagent.ga.collect_logsR&R'tazurelinuxagent.ga.envR(t+azurelinuxagent.ga.collect_telemetry_eventsR)R�R*R+R,R-R.tazurelinuxagent.ga.monitorR/t(azurelinuxagent.ga.send_telemetry_eventsR0t%azurelinuxagent.common.osutil.defaultR1R2R�R�RyR�RZR[tCHILD_POLL_INTERVALRR~RAR�R�R�RPtobjectR6RXR\R[RwR�(((s=/usr/lib/python2.7/site-packages/azurelinuxagent/ga/update.pyt<module>s�""X(



		�����