
    d-                        d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZ dZ G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d  d!e      Z G d" d#e      Z G d$ d%e      Z G d& d'e      Z  G d( d)e      Z! G d* d+e      Z" G d, d-e      Z# G d. d/e      Z$ G d0 d1e      Z% G d2 d3e      Z& G d4 d5e      Z' G d6 d7e      Z( G d8 d9e      Z)y):    N)DataContractDataContractList)ustr)FlexibleVersion)	getattrib)DISTRO_VERSIONDISTRO_NAMECURRENT_VERSIONz0.0.0.0c                       e Zd Z	 	 	 	 	 ddZy)VMInfoNc                 J    || _         || _        || _        || _        || _        y N)subscriptionIdvmNameroleNameroleInstanceName
tenantName)selfr   r   r   r   r   s         I/usr/lib/python3/dist-packages/azurelinuxagent/common/protocol/restapi.py__init__zVMInfo.__init__"   s)     -  0$    NNNNN__name__
__module____qualname__r    r   r   r   r   !   s     $"& 
%r   r   c                       e Zd ZddZy)CertificateDataNc                     || _         y r   )certificateData)r   r!   s     r   r   zCertificateData.__init__0   s
    .r   r   r   r   r   r   r   r   /   s    /r   r   c                       e Zd Z	 	 	 	 	 ddZy)CertNc                 J    || _         || _        || _        || _        || _        y r   )name
thumbprintcertificateDataUristoreLocation	storeName)r   r%   r&   r'   r)   r(   s         r   r   zCert.__init__5   s)     	$"4*"r   r   r   r   r   r   r#   r#   4   s     $(#
#r   r#   c                       e Zd Zd Zy)CertListc                 ,    t        t              | _        y r   )r   r#   certificatesr   s    r   r   zCertList.__init__C   s    ,T2r   Nr   r   r   r   r+   r+   B   s    3r   r+   c                   @    e Zd ZddZed        Zed        Zd Zd Zy)VMAgentFamilyNc                 >    || _         |t        n|| _        g | _        y r   )r%   	VERSION_0requested_version_stringuris)r   r%   versions      r   r   zVMAgentFamily.__init__H   s    	5<_	'%	r   c                 ,    t        | j                        S r   )r   r3   r.   s    r   requested_versionzVMAgentFamily.requested_versionN   s    t<<==r   c                 :    | j                   t        t              kD  S )z
        If we don't get any requested_version from the GS, we default it to 0.0.0.0.
        This property identifies if a requested Version was passed in the GS or not.
        )r7   r   r2   r.   s    r   is_requested_version_specifiedz,VMAgentFamily.is_requested_version_specifiedR   s     %%	(BBBr   c                 "    | j                         S r   __str__r.   s    r   __repr__zVMAgentFamily.__repr__Z       ||~r   c                 N    dj                  | j                  | j                        S )Nz[name: '{0}' uris: {1}])formatr%   r4   r.   s    r   r<   zVMAgentFamily.__str__]   s    (//		499EEr   r   )	r   r   r   r   propertyr7   r9   r=   r<   r   r   r   r0   r0   G   s<     > > C CFr   r0   c                   ,    e Zd Z ed      Z ed      Zy)ExtensionStateenableddisabledN)r   r   r   r   EnabledDisabledr   r   r   rC   rC   a   s    9oGJHr   rC   c                   J    e Zd ZdZ ed      Z ed      Z ed      ZeeegZy)ExtensionRequestedStatez
    This is the state of the Handler as requested by the Goal State.
    CRP only supports 2 states as of now - Enabled and Uninstall
    Disabled was used for older XML extensions and we keep it to support backward compatibility.
    rD   rE   	uninstallN)	r   r   r   __doc__r   rF   rG   	UninstallAllr   r   r   rI   rI   f   s2    
 9oGJH[!IHi
(Cr   rI   c                   L    e Zd ZdZddddddej
                  fdZd Zd Zd Z	y)ExtensionSettingsa  
    The runtime settings associated with a Handler
    -   Maps to Extension.PluginSettings.Plugin.RuntimeSettings for single config extensions in the ExtensionConfig.xml
        Eg: 1.settings, 2.settings
    -   Maps to Extension.PluginSettings.Plugin.ExtensionRuntimeSettings for multi-config extensions in the
        ExtensionConfig.xml
        Eg: <extensionName>.1.settings, <extensionName>.2.settings
    Nr   c                 f    || _         || _        || _        || _        || _        || _        || _        y r   )r%   sequenceNumberpublicSettingsprotectedSettingscertificateThumbprintdependencyLevelstate)r   r%   rQ   rR   rS   rT   rU   rV   s           r   r   zExtensionSettings.__init__{   s:     	,,!2%:".
r   c                     | j                   }|t        j                  k7  s| j                  t        j                  k7  rd|z
  dz
  }|S )Nr      )rU   rI   rF   rV   rC   )r   handler_statelevels      r   dependency_level_sort_keyz+ExtensionSettings.dependency_level_sort_key   sA    $$ 3;;;tzz^McMc?cY!OEr   c                 "    | j                         S r   r;   r.   s    r   r=   zExtensionSettings.__repr__   r>   r   c                 8    dj                  | j                        S )Nz{0})r@   r%   r.   s    r   r<   zExtensionSettings.__str__   s    ||DII&&r   )
r   r   r   rK   rC   rF   r   r[   r=   r<   r   r   r   rO   rO   r   s8      $ $#''+!"%-- 'r   rO   c                   n    e Zd ZdZd
dZed        Zed        Zej                  d        Zd Z	d Z
d	 Zy)	Extensionz
    The main Plugin/handler specified by the publishers.
    Maps to Extension.PluginSettings.Plugins.Plugin in the ExtensionConfig.xml file
    Eg: Microsoft.OSTC.CustomScript
    Nc                 f    || _         d | _        d | _        g | _        g | _        d| _        d | _        y NF)r%   r5   rV   settingsmanifest_urissupports_multi_config*_Extension__invalid_handler_setting_reason)r   r%   s     r   r   zExtension.__init__   s6    	
%*"04-r   c                     | j                   d uS r   re   r.   s    r   is_invalid_settingzExtension.is_invalid_setting   s    44D@@r   c                     | j                   S r   rg   r.   s    r   invalid_setting_reasonz Extension.invalid_setting_reason   s    444r   c                     || _         y r   rg   r   values     r   rj   z Extension.invalid_setting_reason   s
    05-r   c                     | j                   D cg c]  }|j                   }}t        |      dk(  rd}nt        |      }| j                  dk7  rd|z
  dz
  }|S c c}w )Nr   rD   rX   )rb   rU   lenminrV   )r   elevelsrZ   s       r   r[   z#Extension.dependency_level_sort_key   s^    -1]];!##;;v;!EKE ::#Y!OE <s   Ac                 "    | j                         S r   r;   r.   s    r   r=   zExtension.__repr__   r>   r   c                 N    dj                  | j                  | j                        S )Nz{0}-{1})r@   r%   r5   r.   s    r   r<   zExtension.__str__   s    		4<<88r   r   )r   r   r   rK   r   rA   rh   rj   setterr[   r=   r<   r   r   r   r_   r_      s_    5 A A 5 5 ""6 #6
9r   r_   c                       e Zd ZdZd Zy)InVMGoalStateMetaDataa  
    Object for parsing the GoalState MetaData received from CRP
    Eg: <InVMGoalStateMetaData inSvdSeqNo="2" createdOnTicks="637405409304121230" activityId="555e551c-600e-4fb4-90ba-8ab8ec28eccc" correlationId="400de90b-522e-491f-9d89-ec944661f531" />
    c                     t        |d      | _        t        |d      | _        t        |d      | _        t        |d      | _        y )NcorrelationId
activityIdcreatedOnTicks
inSvdSeqNo)r   correlation_idactivity_idcreated_on_ticksin_svd_seq_no)r   in_vm_metadata_nodes     r   r   zInVMGoalStateMetaData.__init__   sC    '(;_M$%8,G )*=?O P&':LIr   N)r   r   r   rK   r   r   r   r   rw   rw      s    Jr   rw   c                       e Zd ZddZy)ExtHandlerPackageNc                 <    || _         g | _        d| _        d| _        y ra   )r5   r4   
isinternaldisallow_major_upgrade)r   r5   s     r   r   zExtHandlerPackage.__init__   s    	&+#r   r   r   r   r   r   r   r      s    ,r   r   c                       e Zd Zd Zy)ExtHandlerPackageListc                 ,    t        t              | _        y r   )r   r   versionsr.   s    r   r   zExtHandlerPackageList.__init__   s    ():;r   Nr   r   r   r   r   r      s    <r   r   c                       e Zd ZddZy)VMPropertiesNc                     || _         y r   )rT   )r   rT   s     r   r   zVMProperties.__init__   s
    %:"r   r   r   r   r   r   r   r      s    ;r   r   c                       e Zd ZddZy)ProvisionStatusNc                 L    || _         || _        || _        t               | _        y r   )status	subStatusdescriptionr   
properties)r   r   r   r   s       r   r   zProvisionStatus.__init__   s!    "&&.r   )NNNr   r   r   r   r   r      s    )r   r   c                       e Zd ZddZy)ExtensionSubStatusNc                 <    || _         || _        || _        || _        y r   )r%   r   codemessage)r   r%   r   r   r   s        r   r   zExtensionSubStatus.__init__   s    		r   NNNNr   r   r   r   r   r      s    r   r   c                   "    e Zd Z	 	 	 	 	 	 	 ddZy)ExtensionStatusNc                     || _         || _        || _        || _        || _        || _        || _        t        t              | _	        y r   )
r%   configurationAppliedTime	operationr   rQ   r   r   r   r   substatusList)r   r%   r   r   r   seq_nor   r   s           r   r   zExtensionStatus.__init__   sE     	(@%"$	-.@Ar   )NNNNNNNr   r   r   r   r   r      s    *.Br   r   c                       e Zd Z	 	 	 	 	 ddZy)ExtHandlerStatusNc                 f    || _         || _        || _        || _        || _        d| _        d | _        y ra   )r%   r5   r   r   r   rd   extension_status)r   r%   r5   r   r   r   s         r   r   zExtHandlerStatus.__init__  s7     		%*" $r   )NNNr   Nr   r   r   r   r   r     s    %r   r   c                   *    e Zd ZddZed        Zd Zy)VMAgentStatusNc                 
   || _         || _        t        j                         | _        t        t              | _        t        | _	        t        | _        t        t              | _        t        |      | _        || _        d| _        y ra   )r   r   socketgethostnamehostnamestrr
   r5   r	   osnamer   	osversionr   r   extensionHandlersVMArtifactsAggregateStatusvm_artifacts_aggregate_statusupdate_status_supports_fast_track)r   r   r   gs_aggregate_statusr   s        r   r   zVMAgentStatus.__init__  sf    **,?+!'!12B!C-GH[-\**$)!r   c                     | j                   S r   r   r.   s    r   supports_fast_trackz!VMAgentStatus.supports_fast_track*  s    (((r   c                     || _         y r   r   rl   s     r   set_supports_fast_trackz%VMAgentStatus.set_supports_fast_track.  s
    $)!r   r   )r   r   r   r   rA   r   r   r   r   r   r   r     s     
* ) )*r   r   c                       e Zd ZddZy)VMStatusNc                 ,    t        ||||      | _        y )N)r   r   r   r   )r   vmAgent)r   r   r   r   vm_agent_update_statuss        r   r   zVMStatus.__init__3  s    $FGYl3IKr   )NNr   r   r   r   r   r   2  s    Kr   r   c                   $    e Zd ZddZed        Zy)GoalStateAggregateStatusNc                 n    || _         || _        || _        || _        t	        j
                         | _        y r   )r   r   r   r   timegmtime(_GoalStateAggregateStatus__utc_timestamp)r   r   r   r   r   s        r   r   z!GoalStateAggregateStatus.__init__9  s-    #	#{{}r   c                     | j                   S r   )r   r.   s    r   processed_timez'GoalStateAggregateStatus.processed_time@  s    ###r   )N N)r   r   r   r   rA   r   r   r   r   r   r   8  s    - $ $r   r   c                       e Zd ZddZy)r   Nc                     || _         y r   )goal_state_aggregate_status)r   r   s     r   r   z#VMArtifactsAggregateStatus.__init__F  s
    +>(r   r   r   r   r   r   r   r   E  s    ?r   r   c                       e Zd Zd Zy)RemoteAccessUserc                 .    || _         || _        || _        y r   )r%   encrypted_password
expiration)r   r%   r   r   s       r   r   zRemoteAccessUser.__init__K  s    	"4$r   Nr   r   r   r   r   r   J  s    %r   r   c                       e Zd Zd Zy)RemoteAccessUsersListc                 ,    t        t              | _        y r   )r   r   usersr.   s    r   r   zRemoteAccessUsersList.__init__R  s    %&67
r   Nr   r   r   r   r   r   Q  s    8r   r   c                   L    e Zd Z ed      Z ed      Z ed      Z ed      Zy)VMAgentUpdateStatusesSuccessTransitioningErrorUnknownN)r   r   r   r   r   r   r   r   r   r   r   r   r   V  s'    9oG)MME9oGr   r   c                   .    e Zd Zej                  ddfdZy)VMAgentUpdateStatusr   r   c                 <    || _         || _        || _        || _        y r   )expected_versionr   r   r   )r   r   r   r   r   s        r   r   zVMAgentUpdateStatus.__init__^  s     0	r   N)r   r   r   r   r   r   r   r   r   r   r   ]  s    0E0M0MWY`a r   r   )*r   r   #azurelinuxagent.common.datacontractr   r   azurelinuxagent.common.futurer   -azurelinuxagent.common.utils.flexible_versionr   %azurelinuxagent.common.utils.textutilr   azurelinuxagent.common.versionr   r	   r
   r2   r   r   r#   r+   objectr0   rC   rI   rO   r_   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s\  (   N . I ; W W 	%\ %/l /
#< #3| 3
FF F4 V  
	)f 	)'' ''T,9 ,9\	JL 	J, ,<L <
;< ;)l ) Bl B&%| % *L **K| K
$| 
$? ?
%| %8L 8
F & r   