
    Zuf                     N    d dl Z d dlZd dlZd dlZd dlZd Z G d d          ZdS )    Nc                  b    t           j        t                      t           _        t           j        S )z'Return a singleton _Telemetry instance.)
_Telemetry
_telemetry     H/home/let_prod/public_html/lightetech2/upgrader/DistUpgrade/telemetry.pygetr	      s     $ *
  r   c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )r   Nc                    i | _         i | _        |                                 | _        t	          j        g dt          j        d                                          d                                         | j         d<   | 	                    d           d| _
        	 t          d          5 }|                                | j         d	<   d d d            d S # 1 swxY w Y   d S # t          $ r Y d S w xY w)
N)lsb_releasez-rz-sT)stdoutuniversal_newlinesr   Fromstartz/var/log/upgrade/telemetryz/var/log/installer/media-infoInstallMedia)_metrics_stages_hist_get_current_uptime_start_time
subprocessPopenPIPEcommunicatestrip	add_stage
_dest_pathopenreadlineFileNotFoundError)selffs     r   __init__z_Telemetry.__init__)   s5   3355 * 0'''
#!% !% !%%0[]]1!66;egg 	f 	w6	566 =!01

n-= = = = = = = = = = = = = = = = = =  	 	 	DD	s6   C  )CC  CC  CC   
C.-C.c                 ^   d}	 t          d          5 }t          |                                                                d                   }ddd           n# 1 swxY w Y   nH# t          t
          t          f$ r.}t          j        dt          |          z              Y d}~nd}~ww xY w|S )z6Get current uptime info. None if we couldn't fetch it.Nz/proc/uptimer   z)Exception while fetching current uptime: )
r   floatreadsplitr   OSError
ValueErrorloggingwarningstr)r    uptimer!   es       r   r   z_Telemetry._get_current_uptime8   s    	$n%% 4qvvxx~~//2334 4 4 4 4 4 4 4 4 4 4 4 4 4 4!7J7 	$ 	$ 	$OGFF# $ $ $ $ $ $ $ $	$ s:   A% :AA% AA%  A!A% %B*<$B%%B*c                     |                                  }| j        |dS || j        t          || j        z
            <   dS )z(Record installer stage with current timeN)r   r   r   int)r    
stage_namenows      r   r   z_Telemetry.add_stageC   sH    &&((#s{F9C#cD$4455666r   c                     || j         d<   dS )zRecord updater typeTypeNr   )r    updater_types     r   set_updater_typez_Telemetry.set_updater_typeJ   s     ,fr   c                     || j         d<   dS )z*Record if the user had third party sourcesThirdPartySourcesNr4   )r    usings     r   set_using_third_party_sourcesz(_Telemetry.set_using_third_party_sourcesN   s    -2)***r   c                 p   | j         | j        d<   t          j                            | j                  }	 t          j                            |          st          j        |           t          | j        d          5 }t          j
        | j        |           ddd           n# 1 swxY w Y   t          j        | j        t          j        t          j        z  t          j        z  t          j        z             dS # t"          $ r/}t%          j        dt)          |          z              Y d}~dS d}~ww xY w)z<Close telemetry collection

        Save to destination fileStageswNz(Exception while storing telemetry data: )r   r   ospathdirnamer   existsmakedirsr   jsondumpchmodstatS_IRUSRS_IWUSRS_IRGRPS_IROTHr'   r)   r*   r+   )r    
target_dirr!   r-   s       r   donez_Telemetry.doneR   sq   
 #'"3hW__T_55

	$7>>*-- (J'''dos++ ,q	$-+++, , , , , , , , , , , , , , ,HT_\DL0\"$(L12 2 2 2 2  	$ 	$ 	$OFFF# $ $ $ $ $ $ $ $ $	$s=   AC< =B$C< $B((C< +B(,AC< <
D5$D00D5)
__name__
__module____qualname__r   r"   r   r   r6   r:   rL   r   r   r   r   r   %   sv        J  	 	 	D D D- - -3 3 3$ $ $ $ $r   r   )r)   rC   r>   rF   r   r	   r   r   r   r   <module>rP      sx   .   				     ! ! !?$ ?$ ?$ ?$ ?$ ?$ ?$ ?$ ?$ ?$r   