
    [_                       d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlZd d	lmZ d d
lmZ d dlmZ d dlT d dlmZ d dlZd dlZd dlmZ d dlZd dlZ	  ej                    d          dk    Zn	#  dZY nxY wdZ dZ!dZ"d#                    e"          Z$dZ%dZ&e'e!z    ed          z   Z(e%de&de'de)diZ*d#                    e*e&                   Z+d#                    e*e&                   Z,d#                    e*e&                   Z-d#                    e*e&                   Z.d #                    e+          d/                    d!  e	e*          D                       z   d"z   Z0d##                    e+          Z1d$#                    e,          Z2d%#                    e,          Z3d$#                    e.          Z4d%#                    e.          Z5e0e4z   d&z   Z6d&e5z   e1z   Z7d'Z8d(#                    e8          Z9d)Z:d*#                    e8e:          Z;d+#                    e9e;          Z<d%#                    e9          Z= e>d,          Z? e>d-          Z@ ejA                    ZB ej                    d          ZC ej                    d.         ZD ej                    d/         ZE G d0 d1eF          ZGd2 ZHd3 ZId4 ZJd^d5ZKd_d6ZLd_d7ZMd^d8ZN G d9 d:          ZO G d; d<eP          ZQd= ZReSdfd>ZT G d? d@          ZU G dA dBeU          ZV G dC dDeU          ZW G dE dFe          ZX G dG dHeX          ZY G dI dJejZ                  Z[	 dKZ\d dl]Z]d dl^Z^dL Z_e]j`        Zan# eb$ r dZ\dM Z_dN ZaY nw xY w G dO dPejc                  Zd G dQ dReS          Ze G dS dT          Zf G dU dVeY          ZgdW ZhdXZidY Zj G dZ d[eY          Zk G d\ d]eX          ZldS )`    )absolute_importN)reraise)http_client)StringIO)zip)u)	iteritems)urlparse)datetime)ParserCreate)*)StubAdapterAccessorMixin)
ExpatErrorVMkernelFi   zUTF-8z$<?xml version="1.0" encoding="{0}"?>z)http://schemas.xmlsoap.org/soap/encoding/z)http://schemas.xmlsoap.org/soap/envelope/typesoapencsoapenvxsixsdz{0}:Envelopez
{0}:Headerz	{0}:Faultz{0}:Bodyz<{0} c                 0    g | ]\  }}d |z   dz   |z   dz   S )zxmlns:z="" ).0urnprefixs      5/usr/lib/python3/dist-packages/pyVmomi/SoapAdapter.py
<listcomp>r   K   sF      J  J  J$/C !)6 1D 83 > D  J  J  J    z>
z
</{0}>z<{0}></{0}>
wssez{0}:SecurityzQhttp://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsdzxmlns:{0}="{1}"z	<{0} {1}>zvmodl.MethodFaultzvmodl.LocalizedMethodFault      c                       e Zd Zd ZdS )ThumbprintMismatchExceptionc                 f    t                               | d|d|d           || _        || _        d S )Nz"Server has wrong SHA1 thumbprint: z (required) != z	 (server))	Exception__init__expectedactual)selfr*   r+   s      r   r)   z$ThumbprintMismatchException.__init__k   sD    !)666 3 4 4 4 dmdkkkr   N)__name__
__module____qualname__r)   r   r   r   r&   r&   j   s#            r   r&   c                     |                      dd                               dd                               dd          }|S )N&z&amp;>z&gt;<z&lt;)replace)xmlStrescapeds     r   	XmlEscaper7   t   s:    nnS'**223??GGVTTGNr   c                 B    | j         | j        | j        | j        | j        fS NStartElementHandlerEndElementHandlerCharacterDataHandlerStartNamespaceDeclHandlerEndNamespaceDeclHandler)objs    r   GetHandlersrA   y   s*    " #(&	( (r   c                 H    |\  | _         | _        | _        | _        | _        d S r9   r:   )r@   handlerss     r   SetHandlersrD      s/    
 $,	!C!r   c                 X    t          | |||                              t                    S N)infoversionnsMap)_SerializeToUnicodeencodeXML_ENCODING)valrG   rH   rI   encodings        r   	SerializerO      s(    
cgU
K
K
K
R
RS_
`
``r   c                 (    t          | |||          S rF   )rJ   )rM   rG   rH   rI   s       r   SerializeToUnicoderQ      s    
cgU
K
K
KKr   c                 X   |H	 t          | t                    r| j        }|j        }n| dS | j        }n# t          $ r
 t
          }Y nw xY w|t          dt          |d          }t                      }t          |||          
                    | |           |                                S )N objectr   namer   rH   flags)
isinstancelistItem_versionAttributeErrorBASE_VERSIONObjectrT   r   SoapSerializerrO   getvalue)rM   rG   rH   rI   itemTypewriters         r   rJ   rJ      s    o sD!! 
#xH'GG{blG       
lqIIIdJJ6&'5))33C>>>
//

s   &4 4 AAc                    |d	 t          | t                    s/t          d                    t	          |                               | j        }n# t          $ r
 t          }Y nw xY w|t          dt          |d          }t                      }t          ||||                              | |           |                                S )Nz{0} is not a MethodFaultrT   r   rU   )rX   MethodFault	TypeErrorformatstrr[   r\   r]   r^   rT   r   r_   SerializeFaultDetailr`   )rM   rG   rH   rI   rN   rb   s         r   rh   rh      s    o 3,, 
I6==c#hhGGHHH<       
lqIIIdJJ6&'5(33HHdSSS
//

s   AA A$#A$c                   >    e Zd ZdZd
dZd Zd Zd Zd Zd Z	d	 Z
dS )r_   z SoapSerializer Nc                    || _         || _        |r|pi | _        t          | j                  D ]\  }}|dk    r	|| _         nd| _        d| _        dt          dfdt          dffD ]\  }}}| j                            |          }|sN|}| xj        d	                    ||          z  c_        | j        
                                | _        || j        |<   t          | ||dz              dS )	z Constructor rS   r   	xsiPrefixr   	xsdPrefix xmlns:{0}="{1}":N)rb   rH   rI   r	   	defaultNSoutermostAttrs	XMLNS_XSI	XMLNS_XSDgetrf   copysetattr)	r,   rb   rH   rI   rN   nsr   nsPrefixattrNames	            r   r)   zSoapSerializer.__init__   s   dkdl?U(bdj!$*--  *"fbLLDNE   d ',Y%D&+Y%D%F / /
 (B*..$$ 
$F#5#<#<VR#H#HH**DJ#DJrN	x#	.	.	.	./ /r   c                 >    |                      ||| j                   dS ) Serialize an object N)
_Serializero   r,   rM   rG   s      r   rO   zSoapSerializer.Serialize  s     
ooc400000r   c                 p    |                      ||d                    |j                  | j                   dS )rz   z xsi:typ="{1}"N)_SerializeDataObjectrf   	_wsdlNamero   r|   s      r   rh   z#SoapSerializer.SerializeFaultDetail  s7    
T+;+B+B3=+Q+QSWSabbbbbr   c                 H    || j         k    rdS | j        |         }|r|dz   pdS )z+ Get xml ns prefix. self.nsMap must be set rS   rn   )ro   rI   )r,   rv   r   s      r   	_NSPrefixzSoapSerializer._NSPrefix  s3    	t~		z"~f$**r   c                     d}t          |          \  }}||k    rd}nQ	 | j        |         }nB# t          $ r5 |                    dd          d         }d                    ||          }Y nw xY w||r|dz   |z   p|fS )z- Get fully qualified wsdl name (prefix:name) rS   rn      rm   )GetQualifiedWsdlNamerI   KeyErrorsplitrf   )r,   typdefNSattrrv   rV   r   s          r   _QNamezSoapSerializer._QName  s    d%c**hb$	u
9Z^FF 
9 
9 
9XXc1%%b)F%,,VR88DDD
9 61fslT19T99s   - <A,+A,c           	      D   t          | j        |j                  sdS |8|j        t          z  rdS t	          d                    |j                            t          |t                    rt          |          dk    r|j
        t          u r=t          |t                    s't	          d                    |j                            n8|j        t          z  rdS t	          d                    |j                            | j        r| j        }d| _        nd}|}t          |j                  }||k    r|d                    |          z  }|}t          |t                    rt          |t                     rot#          ||j                  }|j
        t          u rt          }nt"          }t'          |j        ||j        |j        	          }	|                     ||	||           dS |                     ||||           dS t          |t*                    r|j
        t          u r=|                     t*          |          \  }
}|d
                    |
| j        |          z  }|j        |d                    |j                  z  }t3          t5          |                    \  }}|d                    |          z  }| j                            d                    |j        ||j        |j                             dS t          |t                    r|j
        t          u rh|j        }|t>          u s|t@          u s	|t          u rd}tC          d          }nBtE          |t*                    rd}t*          j        }ntG          |          }t5          |          }|                     ||          \  }
}|$                    d          r|dz  }|d
                    |
| j        |          z  }| j                            d                    |j        |                     t'          |||j        |j        	          }|D ]}| %                    |||           | j                            d                    |j                             dS |j
        j        }t'          |j        ||j        |j        	          }|D ]}| %                    |||           dS t          |t                    s"t          |t          tL                              rt|j
        t          u r#|d                    | j        | j'                  z  }| j                            d                    |j        |tG          |                               dS t          |t>                    rq|j
        t          u r#|d                    | j        | j'                  z  }| j                            d                    |j        ||j(        j)                             dS t          |tT                    r|j
        t          u rE|                     t5          |          |          \  }
}|d
                    |
| j        |          z  }tV          ,                    |          }| j                            d                    |j        ||                     dS t          |tZ                    r|j
        t          u rE|                     t5          |          |          \  }
}|d
                    |
| j        |          z  }t]          j/        |          }t`          rtc          |td                    }| j                            d                    |j        ||                     dS t          |tf                    r|j
        t          u rE|                     t5          |          |          \  }
}|d
                    |
| j        |          z  }|rdpd}| j                            d                    |j        ||                     dS t          |th          j5                  st          |tl                    r|j
        t          u rE|                     t5          |          |          \  }
}|d
                    |
| j        |          z  }ti          j7        |          }| j                            d                    |j        ||                     dS t          |tp                    r|j
        t          u rE|                     t5          |          |          \  }
}|d
                    |
| j        |          z  }| j                            d                    |j        ||                     dS |j
        t          u r~t          |t@                    r$|d                    | j        | j'                  z  }nE|                     t5          |          |          \  }
}|d
                    |
| j        |          z  }t          |th          j9                  r|:                    td                    }tw          |          }| j                            d                    |j        ||                     dS )rz   NzField "{0}" is not optionalr   z>Field "{0}": Cannot assign empty native python array to an AnyzField "{0}" not optionalrS   z xmlns="{0}")faultlocalizedMessagerU   {0} {1}type="{2}"z serverGuid="{0}"z type="{0}"z<{0}{1}>{2}</{3}>stringzstring[]ManagedObjectReferenceArrayOfManagedObject	Reference<{0}{1}>r    z {0}type="{1}string"z<{0}{1}>{2}</{0}>truefalse)<IsChildVersionrH   rW   
F_OPTIONALre   rf   rV   rX   rY   lenr   rT   Arrayrp   GetWsdlNamespace
DataObjectrd   LocalizedMethodFaultmsgr^   r~   ManagedObjectr   rk   _serverGuidr   Typerb   write_moIdrZ   ManagedMethodPropertyPathGetVmodlType
issubclassGetWsdlNameendswithr{   r(   rl   rG   wsdlNamer   Iso8601ISO8601Formatbinarybase64	b64encodePY3rg   rL   boolsixinteger_typesfloat	text_typeEnumbinary_typedecoder7   )r,   rM   rG   r   r   	currDefNS	currTagNSnewVal	faultTypenewInfonsattrqNamerv   rV   ra   tagr   itemInfoitresults                       r   r{   zSoapSerializer._Serialize/  s#
   DL$,77 		J# 
MF9@@KKLLLc4   	KSXX]]Ic5)) s_ffgkgpqqrrrsj:% 
KF7>>tyIIJJJ		 ##		i"4<00i	e			&&y11	1	C	$	$ zQsK(( 

B)cgNNNFyF""!yy/y$))%)\E E EG%%fgtYGGGGG%%c4yAAAAAc=)) nQI KKyAAMFE'..vt~uMMMDO''..s???D )c33T	%%d++	+			.55di.1i.2i9 9 
: 
: 
: 
: 
: c4   aQIxHM))X-E-ED  s!*--ssHm44 -s"(ss **s#YYs KKY77MFE ~~455 $#u'..vt~uMMMDKj//	4@@AAA3X&*l$*F F FH 8 8r8Y7777Khoodi8899999y~H498&*l$*F F FH 4 4r8U33334 4c4   ?QJsDOO$D$D ?QI*11$.$.QQQD			.559dK,<,<> > 
? 
? 
? 
? 
?c=)) :QI*11$.$.QQQD			.55"isx/@B B 
C 
C 
C 
C 
Cc8$$ 5QI KKS		9==MFE'..vt~uMMMD'',,			.55divNN	O	O	O	O	Oc6"" /QI KKS		9==MFE'..vt~uMMMD"3'' 
/ ..F			.55divNN	O	O	O	O	Oc4   "QI KKS		9==MFE'..vt~uMMMD.&+G			.55divNN	O	O	O	O	Oc3,-- QC1G1G QI KKS		9==MFE'..vt~uMMMD-$$			.55divNN	O	O	O	O	Oc4   QI KKS		9==MFE'..vt~uMMMD			.55disKK	L	L	L	L	LI#|,, Q-44T^T^TTTtt#{{499i@@}vu*11&$.%PPPtsCO,, 
+ **\**CC..			/66ty$OO	P	P	P	P	Pr   c                    |j         t          z  r|                     |j        ||           d S t	          t          |          | j                  }||j        k    r8|                     ||          \  }}|d	                    || j
        |          z  }| j                            d	                    |j        |                     |t          u r|                                D ]m}t!          ||j                  }	|j        dk    r4t#          j        |	          }	d |	_        |                     |	|d|           V|                     |	||           nnA|                                D ],}|                     t!          ||j                  ||           -| j                            d	                    |j                             d S )Nr   r   r   rS   r    )rW   F_LINKr{   keyGetCompatibleTyper   rH   r   r   rf   rk   rb   r   rV   r   _GetPropertyListgetattrrt   r   r~   )
r,   rM   rG   r   r   dynTyper   r   proppropVals
             r   r~   z#SoapSerializer._SerializeDataObject  s   	f	  
$		2	2	2	!$s))T\::g	DI		Wi88	$++FDNEJJ	J
k
))$)T::;;;	(	(	( ))++ 
9 
9Tc49--GyG##7++w!w{(($IFFFFwi8888
9 ))++ 
F 
FTOOGC33T9EEEE
k	2233333r   r9   )r-   r.   r/   __doc__r)   rO   rh   r   r   r{   r~   r   r   r   r_   r_      s        / / / /@1 1 1c c c+ + +: : :([Q [Q [QF4 4 4 4 4r   r_   c                       e Zd ZdS )ParserErrorN)r-   r.   r/   r   r   r   r   r     s         	Dr   r   c                    	 t          |t          j                  st          |t          j                  r|                     |           d S |                     |           d S # t          $ rc t          j                    \  }}}| j	        }| j
        }t          d                    |||                    }t          t          ||           Y d S w xY w)Nz3xml document: {0} parse error at: line:{1}, col:{2})rX   r   r   r   Parse	ParseFiler(   sysexc_infoCurrentLineNumberCurrentColumnNumberr   rf   r   )parserdataecevtblinecolpes           r   	ParseDatar     s    #	D#/	*	*  js}.M.M  	d								$					
 
# 
# 
# \^^lr2r%d&c ++16$c+B+BD Db k2r""""""
#s   A	A$ A$ $A)CCc                     t          t                    }t          |          }|                    ||           t	          ||            |                                S )Nnamespace_separator)r   NS_SEPSoapDeserializerDeserializer   	GetResult)r   
resultTypestubr   dss        r   r   r     sQ    V44462>>&*%%%VT
,,..r   c                   6    e Zd ZddZd Zd ZddZd Zd ZdS )	ExpatDeserializerNSHandlersNc                     |si }|| _         d S r9   )rI   )r,   rI   s     r   r)   z$ExpatDeserializerNSHandlers.__init__  s      djjjr   c                 *    |                                  S r9   )_GetNamespaceFromPrefixr,   s    r   GetCurrDefNSz(ExpatDeserializerNSHandlers.GetCurrDefNS#  s    ))+++r   c                     |                     d          }|dk    r|d|         ||dz   d         }}nd|}}|                     |          }||fS )z# Map prefix:name tag into ns, name rn   r   Nr   )findr   )r,   r   idxr   rV   rv   s         r   GetNSAndWsdlnamez,ExpatDeserializerNSHandlers.GetNSAndWsdlname'  s^    HHSMMc	DSD	3sQwxx=c''//bXor   c                 T    | j                             |          }|r	|d         }nd}|S )Nr   rS   )rI   rs   )r,   r   
namespacesrv   s       r   r   z3ExpatDeserializerNSHandlers._GetNamespaceFromPrefix2  s2    :>>&))j	 nir   c                     | j                             |          }|r|                    |           d S |g| j         |<   d S r9   )rI   rs   append)r,   r   urir   s       r   r>   z5ExpatDeserializerNSHandlers.StartNamespaceDeclHandler;  sK    :>>&))j	 $			3					"eF			r   c                 D    | j         |                                          d S r9   )rI   pop)r,   r   s     r   r?   z3ExpatDeserializerNSHandlers.EndNamespaceDeclHandlerC  s!    
jr   r9   )	r-   r.   r/   r)   r   r   r   r>   r?   r   r   r   r   r     sx           , , ,	 	 	   $ $ $    r   r   c                   J    e Zd ZddZeddfdZd Zd ZddZd Z	d	 Z
d
 ZdS )r   Nc                     t                               |            || _        |r|| _        n | j        r| j        j        | _        nd | _        d | _        d S r9   )r   r)   r   rH   r   )r,   r   rH   s      r   r)   zSoapDeserializer.__init__M  sX    !**4000di	 9 	)dkkkr   Fc                 *   || _         || _        t          |          | _        t	          |t          |                      || _        g | _        d| _        d | _        t          |t                    r |            | _        nd | _        |si }|| _        d S NrS   )isFaultr   rA   origHandlersrD   r   stackr   
serverGuidr   rY   r   rI   )r,   r   r   r   rI   s        r   r   zSoapDeserializer.Deserialize`  s    dldk%f--d&+d++,,,"dodjdido	J	%	% !z|| djjjr   c                     | j         S r9   )r   r   s    r   r   zSoapDeserializer.GetResultt  s
    [r   c                 x    |                     t                    }|dk    r|d|         ||dz   d         fS d|fS )z Split tag into ns, name r   Nr   rS   )r   r   )r,   r   r   s      r   SplitTagzSoapDeserializer.SplitTagw  sD    HHVc	DSD	3sQwxx=(	(Cr   c           	      ~   	 t          ||          S # t          $ r |rH|                    d          r3|t          k    r(t          ||dt	          d                              cY S |                    d          r/|r-t          t          |dt	          d                              cY S t          |          cY S w xY w)z> Lookup wsdl type. Handle special case for some vmodl version r   Nr   )GetWsdlTyper   r   XMLNS_VMODL_BASEr   GuessWsdlType)r,   rv   rV   allowManagedObjectReferences       r   LookupWsdlTypezSoapDeserializer.LookupWsdlType  s    $B%%	% 	$ 	$ 	$' 
@}}566 @2AQ;Q;Q!"d+=S-=-=,=+=&>????? MM233 
K8S 
K/6HK8H8H7H6H1IJJJJJd##	#	#	#	$s    AB<&AB<*B<;B<c                 J   d| _         d | _        d}| j        sH| j        r9|                     |          \  }}|                     ||d d                   }d}n| j        }nt          | j        d         t                    r| j        d         j	        }nt          | j        d         t                    rf|                     |          \  }}| j        d                             |          j        }|dk    r"t          | j        d         t                    rd}n"t          d                    |                    |                    t"                    }|rx|t          u sn|t$          u se|t&          u s\|                     |          \  }}|                     ||d          }t+          |t                    rt+          |t                    s|}nt+          |t                    r|j	        }| j        rt/          || j                  }t+          |t0                    r|t3          d	                   }	|                     |	          \  }}t3          d
          |v r|t3          d
                   | _        | j                            t7          |                     d S t+          |t                    st+          |t                    rB|rt+          |t8                    rt          }| j                             |                       d S | j                            |           d S )NrS   TFr   r   zInvalid type for tag {0})r  r   r  )r   r  r  r   r  r  r   rX   rY   rZ   r   _GetPropertyInfor   r   re   rf   rs   XSI_TYPEr   r   r   r   rH   r   r   r   r   r
  r(   )
r,   r   r   !deserializeAsLocalizedMethodFaultrv   rV   objTypexsiTyper   typeAttrs
             r   r;   z$SoapDeserializer.StartElementHandler  s   dido*.'Z AL 
&}}S))HB))"d3B3i88G05--oGGdjnd++ A:b>&djnj11 	AMM#&&T:b>22488= GOO
4:b>;O P PO05-3::3??@@	@""g	 # DG}$<$<$+|$;$;,,W55HB))"dPT)UUG w-- !*Wd2K2K ! ww%% 
#lG	 <$Wdl;;	G]	+	+ $6O ))(33TlOOt##"1\??3DO			=..	/	/	/	/	/gz** $j$.G.G $- 
+*Wi2P2P 
+*G			7799	%	%	%	%	%			7	#	#	#	#	#r   c                    	 | j                                         }nN# t          $ rA t          | j        | j                   | j        j        }| `| `| ` | `|r ||          cY S Y d S w xY w| j        }t          |t                    s#t          |t          t                              r|t          u rS||dk    rd }n)	 |                     |          \  }}t          |          }n# t          $ r t          |          w xY w|t           u rJ|                     |          \  }}	 t#          |          }n# t          $ r t%          |          }Y nw xY w|t&          u rm|dk    s|                                dk    rt'          d          }nW|dk    s|                                dk    rt'          d          }n(t          |          |t*          u r |t-          j        |                    }n|t0          u r#	 t1          |          }n# t2          $ r |}Y nw xY w|t4          u r1t6          j                            |          }|st          |          nt=          |t>                    r ||| j         | j!                  }n_t=          |tD                    rtG          ||          }n9 ||          }n-t          |tH                    r|j%        |j&        _'        |j&        }| j         r| j         d         }t          |tP                    r|)                    |           d S t          |tT                    r| +                    |          \  }}|,                    |          }t          |tP                    sDt=          |j
        tP                    r*tG          ||j-                  )                    |           d S t]          ||j-        |           d S | +                    |          \  }}t]          |||           d S t          |tP                    s6t=          | j        tP                    r| j/        )                    |           d S || _/        t          | j        | j                   | `| `| ` | `d S )	NrS   0r   F1r   Tr   )0r  r   
IndexErrorrD   r   r  r<   r   r   rX   r   r(   r   r
  r   re   r   GuessWsdlMethodUncallableManagedMethodr   lowerr   r   	b64decoderg   
ValueErrorr   pyVmomir   ParseISO8601r   r   r   r  r   r   r   r   r   r   rY   r   r   r  r  rV   ru   r   )	r,   r   r@   handlerr   rv   rV   toprG   s	            r   r<   z"SoapDeserializer.EndElementHandler  s   z~~   	T[$"3	4	4	4;0[$+TZ 
 73<<	 Yd	C		 0*S$y//"B"B 04KK|trzzss( "22488("d%d++## ( ( (!$'(]"" ,,T22HB3$T**ss 3 3 3,T22sss3Tkks{{djjllg55%[[ss

 6 6$ZZsst__$Vmm#f&t,,--CCSjjYYss   sssXoo/..t44C %t__$% m,, 
#dDIt77CCd## 
#t$$CC#d))CCc/00 -y	 Lz"~sD!! 
$JJsOOOOOj)) 

$}}S))HB''--Dc4(( ,Z	4-H-H ,sDI&&--c22222sDIs+++++}}S))HBCs#####3%% 
L*T_d*K*K 
LKs#####DKT%6777T.
DOOOs@    AA'&A'?'C( (D'D8 8EE?H HHc                 &    | xj         |z  c_         d S r9   r   r,   r   s     r   r=   z%SoapDeserializer.CharacterDataHandler"      
ii4iiiir   NN)F)r-   r.   r/   r)   rT   r   r   r  r  r;   r<   r=   r   r   r   r   r   H  s        
	 	 	 	& -3E    (    $ $ $ $ :$ :$ :$zSL SL SLl    r   r   c                   .    e Zd Zd ZddZd Zd Zd ZdS )SoapResponseDeserializerc                     t                               |            || _        t          |          | _        t
          t          z   dz   | _        d S )NFault)r   r)   r   r   deserXMLNS_SOAPENVr   soapFaultTag)r,   r   s     r   r)   z!SoapResponseDeserializer.__init__,  sD    !**4000di#D))dj'&07:dr   Nc                    || _         g | _        d| _        d | j        _        d| _        t          t                    | _        	 d| j        _	        n# t          $ r Y nw xY w|si }|| _        t          | j        t          |                      t          | j        |           | j                                        }| j        r%| t!          d                      }| j        |_        | ` | `| `| `| `| `|S )NrS   Fr   Tzvmodl.RuntimeFault)r   r  r   r+  r   r   r   r   r   buffer_textr\   rI   rD   rA   r   r   r   r   )r,   responser   rI   r   s        r   r   z$SoapResponseDeserializer.Deserialize9  s   "dodjdhdjdl V<<<dk#'	 	    	 dj$+{400111X&&&z##%%f	 N7\"67799Fh
/4:t{DHdims   A 
AAc                 8   d| _         || j        k    r	d| _        d S | j        r4|dk    r.| j                            | j        t          d| j                   d S |                    d          r.| j                            | j        | j	        d| j                   d S d S )NrS   TdetailResponseF)
r   r-  r   r+  r   r   rT   rI   r   r   )r,   r   r   s      r   r;   z,SoapResponseDeserializer.StartElementHandlerR  s    di	!	!	!< QC8OO			VT4:	F	F	F	F	F<<
## Q			T_eTZ	P	P	P	P	PQ Qr   c                 &    | xj         |z  c_         d S r9   r#  r$  s     r   r=   z-SoapResponseDeserializer.CharacterDataHandler\  r%  r   c                     | j         r?|dk    r;	 t          | j                  | _        d S # t          $ r | j        | _        Y d S w xY wd S d S )Nfaultstring)r   rg   r   r   r  )r,   r   s     r   r<   z*SoapResponseDeserializer.EndElementHandler`  sh    	 !#..
!49~~DHHH 
! 
! 
!yDHHHH
!! !..s   * AAr9   )r-   r.   r/   r)   r   r;   r=   r<   r   r   r   r(  r(  '  sg        
; ; ;   2Q Q Q  ! ! ! ! !r   r(  c                       e Zd Zd Zd ZdS )StubAdapterBasec                 X    t          j        |            |                     |           d S r9   )r   r)   ComputeVersionInfo)r,   rH   s     r   r)   zStubAdapterBase.__init__k  s-    '---
g&&&&&r   c                     t          |          }|                    d          dk    rd                    |          | _        nd| _        || _        d S )N/r   z	"urn:{0}"rS   )GetVersionNamespacer   rf   	versionIdrH   )r,   rH   	versionNSs      r   r:  z"StubAdapterBase.ComputeVersionInfor  sO    %g..i				!	!%,,Y77dlllr   N)r-   r.   r/   r)   r:  r   r   r   r8  r8  j  s2        ' ' '    r   r8  c                       e Zd Zd ZdS )SoapStubAdapterBasec                    t          | j        |j                  s t          d          ||j                  t                                          }t          | j                  }d||<   t          dt          g}t                      }| j
        r|                    | j
                   t          | dd           }|s|r%|                    t                     t          |          D ]\  }	}
t!          |
t"          j                  s1t'          d                    |	|
t+          |
                              t-          |
t/          |	t0          | j                  | j        |          }|                    |           |r4|                    d                    t2          |t4                               |                    t6                     |                    d           |                    t:          d	                    |j        |          t-          |t/          d
t>          | j                  | j        |          g           tA          |j!        |          D ]/\  }}|                    t-          ||| j        |                     0|                    d                    |j                  tD          tF          g           d$                    |          %                    tL                    S )Nzvmodl.fault.MethodNotFound)receivermethodrS   r!   	samlTokenz;Request context key ({0}) has non-string value ({1}) of {2})rV   r   rH   z{0} {1} {2}z<{0} xmlns="{1}">_thisr    )'r   rH   r   rV   
SOAP_NSMAPrt   r   
XML_HEADERSOAP_ENVELOPE_STARTGetRequestContextrequestContextupdater   r   SOAP_HEADER_STARTr	   rX   r   string_typesre   rf   r   rJ   r^   rg   WSSE_HEADER_STARTWSSE_HEADER_ENDSOAP_HEADER_ENDextendSOAP_BODY_STARTr   r   r   paramsSOAP_BODY_ENDSOAP_ENVELOPE_ENDjoinrK   rL   )r,   morG   argsrI   ro   r   reqContextsrE  r   rM   retparamargs                 r   SerializeRequestz$SoapStubAdapterBase.SerializeRequest  s   DL$,77 L9|8992AEL L L 
Looe"4<00ieI D"56f &''k		 1			D/	0	0	0$T22i	 	 	(	)	)	)";// 
 
XS#c3#344 z\ccdgilnrsvnwnwxxyyy%c"#t|LLL L!# #C MM# 
AMM-../@/8/>@ @ A A A 
	'	'	'	t			 mm_*11$-KK*2v748L0B 0B 0B!%u6 67 8 8 8 dk400 M M,5#	*3t|UKK	L	L	L	LmmX__T]33]DUVWWWWWV__##L111r   N)r-   r.   r/   r^  r   r   r   rA  rA  }  s#        .2 .2 .2 .2 .2r   rA  c                       e Zd Zd Zd ZdS )UnixSocketConnectionc                 T    t           j                            | d           || _        d S r   )r   HTTPConnectionr)   path)r,   rc  s     r   r)   zUnixSocketConnection.__init__  s(      ))$333diiir   c                     t          j         t           j        t           j                  }|                    | j                   || _        d S r9   )socketAF_UNIXSOCK_STREAMconnectrc  sockr,   ri  s     r   rh  zUnixSocketConnection.connect  s9     ]6>6+=>>d
ll49diiir   Nr-   r.   r/   r)   rh  r   r   r   r`  r`    s2              r   r`  Tc                 x   | rt          |t          j                  r|j        s|                                 |j                            d          }t          j                    }|                    |           |	                                
                                }|| k    rt          | |          dS dS dS )zIf there is a thumbprint, connect to the server and verify that the
      SSL certificate matches the given thumbprint.  An exception is thrown
      if there is a mismatch.TN)rX   r   HTTPSConnectionri  rh  getpeercerthashlibsha1rL  	hexdigestr  r&   )
thumbprint
connectionderCertrp  
sha1Digests        r   _VerifyThumbprintrv    s     
 F
:{/JKK F 
!   ?..t44	W			nn&&,,..*$$-j*EEEF F F F %$r   c                 `    | r)t          |t          j                  rt          d          d S d S )Nz5Thumbprint verification not supported on python < 2.6)rX   r   rm  r(   )rr  rs  s     r   rv  rv    sP    	 E
:{/JKK ECE E 
EE E E Er   c                 X    t          j        | ||          }t          j        | |          S r9   )re  sslr   
FakeSocket)	rawSocketkeyfilecertfilerY  kwargswrappedSockets         r   _SocketWrapperr    s(    jGX>>m#I}===r   c                       e Zd Zd Zd ZdS )_HTTPSConnectionc                     i | _         |                                }dD ]#}||v r|                    |          | j         |<   $t          j        j        | g|R i | d S )N)server_side	cert_reqsssl_versionca_certsdo_handshake_on_connectsuppress_ragged_eofsciphers)_sslArgsrt   r   r   rm  r)   )r,   rY  r~  	tmpKwargsr   s        r   r)   z_HTTPSConnection.__init__  sy     dm++--i 4 4# 9!*s!3!3DM#!*4D$DDD)DDDDDr   c                    t          | j                  dk    r!t          j                            |            d S t          | d          rxt          j        | j        | j	        f| j
        | j                  }| j        r|| _        |                                  t          j        || j        | j        fi | j        | _        d S t          | d          rPt          j        | j        | j	        f| j
                  }t          j        || j        | j        fi | j        | _        d S t          j                            |            d S )Nr   source_addresstimeout)r   r  r   rm  rh  hasattrre  create_connectionhostportr  r  _tunnel_hostri  _tunnelry  wrap_socketkey_file	cert_filerj  s     r   rh  z_HTTPSConnection.connect  s=   	T]		q	 	 		$	,	,T	2	2	2	 
'	(	( ($)TY)?)-t7JL L 
DILLNNN_T4=$. 6 6'+}6 64## ($)TY)?NN_T4=$. 6 6'+}6 6 
	$	,	,T	2	2	2	r   Nrk  r   r   r   r  r    s5        
E 
E 
E    r   r  c                       e Zd Zd ZddZdS )SSLTunnelConnectionc                     || _         d S r9   )	proxyPath)r,   r  s     r   r)   zSSLTunnelConnection.__init__,  s     dnnnr   Nc                    i }t           j        j        j        j        D ]}||v r|dk    r||         ||<   t          j        |fi |}|                    d| j                   |                                }|j        dk    r2t          j	        d
                    |j        |j                            t          j        |          }	t          |j        ||          |	_        |	S )Nr,   CONNECT   {0} {1})r|  r}  )r   rb  r)   __code__co_varnamesrequestr  getresponsestatusHTTPExceptionrf   reasonrm  r  ri  )
r,   rc  r  r  r~  r  r   tunnelrespretvals
             r   __call__zSSLTunnelConnection.__call__7  s     i+4=I ) )#6MMcVmm#C[IcN)$<<)<<fnnY///!!d			'	(8(8dk(R(RSSS*400f"6;+3iI I Ifkmr   r&  )r-   r.   r/   r)   r  r   r   r   r  r  *  s7        ! ! !     r   r  c                   0    e Zd ZdZdZedfdZd Zd	dZdS )

GzipReaderr   r#   i   c                     || _         g | _        d| _        |t          j        t          j        fv sJ || _        d | _        || _        d S Nr   )	rfilechunksbufSizer  GZIPDEFLATErN   unzipreadChunkSize)r,   r  rN   r  s       r   r)   zGzipReader.__init__M  sN    djdkdl*/:+=>>>>>dmdj(dr   c                    dd l }| j        t          j        k    r|j        dz   }n| j        t          j        k    rt          |          }|j         }|d d         g dk    r|j        dz   }ni|dk    r`t          |d                   }t          |d                   }|dz  dk    r-|d	z  |z   d
z  dk    rt          |dz  dz	  dz   |j                  }nJ |	                    |          | _
        | j
        S )Nr         )   r#   r                  r$   )zlibrN   r  r  	MAX_WBITSr  r   ordmindecompressobjr  )r,   
firstChunkr  wbitschunkLenb0b1s          r   _CreateUnzipzGzipReader._CreateUnzipV  s   kkk	*/	)	)"$=J...
OO.rrN66666NR'EE!mmZ]##BZ]##BSQb3hm$:q#@#@R$Y1,14>BBu	%%e,,djZr   r   c                 H   | j         }| j        }||k     s|dk    r| j                            | j                  }| j        d k    r|                     |           |rB| j                            |          }|t          |          z  }|	                    |           nn||k     |dk    ||k    s|dk    rd}g }nC||z
  }|
                                }|	                    |d |                     || d          g}|| _         || _        d                    |          }	|	S )Nr   r   r   )r  r  r  readr  r  r  
decompressr   r   r   rW  )
r,   bytesr  r  chunkinflatedChunkleftoverBytesleftoverChunks	lastChunkbufs
             r   r  zGzipReader.readm  s?   {fgeOOu{{!344J$e$$$ 
 J11%88Ms=)))GMM-((((  eOOu{{ 
E		Ub[[ 5ZZ\\	y=.1	2	2	2$m^__56"dk"dlHHVcjr   N)r   )r-   r.   r/   r  r  r)   r  r  r   r   r   r  r  I  sZ        47&*# ) ) ) )  .! ! ! ! ! !r   r  c                       e Zd ZddddddddddddddddedddfdZej        dd	         d
k     rd Znd Zej	        d             Z
ddZd Zd Zd Zd Zd ZdS )SoapStubAdapter	localhosti  Nz/sdk   P   Tc                 d   |r|J t           |         }n|sd}t                              | |           d| _        |rt          | _        || _        n|rKt          |          d d         \  }| _        }|dvr|}|dk    rt          j	        p|dk    ot          | _        nb|dk     r| t          j	        fp|t          f\  }| _        |                    d	          d
k    rd|z   dz   }d                    ||          | _        || _        |rh|                    d	d                                          | _        t#          | j                  dk    r"t%          d                    |                    nd | _        d| _        |rt)          |          | _        d| _        nx|
rv| j        t          k    r!t)          | j                  | _        d| _        n*|r|| _        n d                    | j        |          | _        d                    |
|          | _        || _        g | _        || _        t0                                          | _        i | _        |	r
|	| j        d<   |r
|| j        d<   |r|| j        d<   t8          j        | j        d<   |r
|| j        d<   || _        || _        g | _         || _!        d S )Nvim.version.version1rH   rS   r  )rS   r<  httphttpsr   rn   r   []z{0}:{1}(   zInvalid SHA1 thumbprint -- {0}FTzhttp://{0}/{1}r  r  r  r  context)"
versionMaprA  r)   cookier`  schemer  r
   r   rb  r  r   rf   rc  r4   r  rr  r   r(   is_ssl_tunnelr  poolSizepoolconnectionPoolTimeout	threadingLocklock
schemeArgsry  CERT_REQUIREDrE  rK  requestModifierList_acceptCompressedResponses)r,   r  r  rv   rc  urlri  r  certFilecertKeyFilehttpProxyHosthttpProxyPortsslProxyPathrr  cacertsFilerH   acceptCompressedResponsesr  rE  
sslContextrK  r  urlpaths                          r   r)   zSoapStubAdapter.__init__  s    
 *b> *)""4"999dk	 2+  2&.smmBQB&7	#G 9$$D'FK,F >(=-= 
 "AXMD5+2L*M C+/1A*B 
t{IIcNNb  :#D%%dD11di	  %--c266<<>>  B&&;BB:NNOOO '   d	 D*<88"		 
DK+++-di88DK!%D Dtyy+2249dCCty%%m]CCdmdi#8d ..""dido	 3'2	$	 1(0	%	 :'2	$(+(9	%	 1&0	# dn*d!#d(Ad%%%r   r#   r#      c                     | j         t          k    r+|j        r$|j                            t          j                   |                                 d S r9   )r  r  ri  shutdownre  	SHUT_RDWRcloser,   conns     r   _CloseConnectionz SoapStubAdapter._CloseConnection   sA    K+++	+9f.///	r   c                 .    |                                  d S r9   )r  r  s     r   r  z SoapStubAdapter._CloseConnection  s    	r   c              #      K   | j                             |           	 d V  | j                                          d S # | j                                          w xY wr9   )r  r   r   )r,   funcs     r   requestModifierzSoapStubAdapter.requestModifier  sa      
%%d+++(			!	%	%	'	'	'	'	'	!	%	%	'	'	'	's	   = Ac           	      \   || }| j         | j        d                    t                    d                    t          t
          t          t                    d}| j        rd|d<   | 	                    |||          }| j
        D ]} ||          }|                                 }	 |                    d| j        ||           |                                }	n4# t          j        t"          j        f$ r |                                   w xY w|	                    d          }
|
|	                    d          }
|	j        }|
r|
| _         |d	k    s|d
k    r	 |	}|	                    dd                                          }|dk    rt/          |	t.          j                  }n!|dk    rt/          |	t.          j                  }t5          |          }|                    ||j                  }|	                                 |                     |           n=# t>          $ r0}|                      |           |                                  |d }~ww xY w|| k    r||fS |d	k    r|S ||                      |           t#          j        d                    |	j        |	j!                            )Nztext/xml; charset={0}z"pyvmomi Python/{0} ({1}; {2}; {3}))Cookie
SOAPActionzContent-Typez
User-Agentzgzip, deflatezAccept-EncodingPOSTz
set-cookiez
Set-Cookier  i  zContent-Encodingidentitygzip)rN   deflater  )"r  r>  rf   rL   PYTHON_VERSIONOS_NAME
OS_VERSIONOS_ARCHr  r^  r  GetConnectionr  rc  r  re  errorr   r  DropConnections	getheaderr  r  r  r  r  r(  r   r   r  ReturnConnectionr(   r  r  )r,   rX  rG   rY  	outerStubheadersreqmodifierr  r  r  r  fdrN   deserializerr@   excs                    r   InvokeMethodzSoapStubAdapter.InvokeMethod  s   		 K $!8!?!?!M!MCF>7JHH	J Jg
 
	( 6&5"	#!!"dD11c.  (x}}!!d	fdig	6	6	6  ""lK56   							 ~~l++f	>>,//&{f	 	3&C--
(B~~&8*EEKKMMH6!!tjo>>>rrY&&tj.@AAAr3I>>L**2t{;;C IIKKK!!$''''  	
 	
 	
!!$'''   """I	
 C= cMMJI			t	$	$	$()9)9$+t{)S)STT	Ts%   %1C 1DBH 
I +IIc                 @   | j         dk    rt          j                    }g }| j        D ]V\  }}||z
  }|| j         k    rA| j                            ||f          }| j        |d          }| j        d |         | _         nW|D ]\  }}|                     |           d S d S r  )r  timer  indexr  )r,   currentTimeidleConnectionsr  lastAccessTimeidleTimei_s           r   _CloseIdleConnectionsz%SoapStubAdapter._CloseIdleConnectionse  s    		#q	(	(y{{%)Y 
 
!T>"^3H45559??D.#9::q!%1229RaR=tyu	 6 ( 
( 
(WT1!!$'''' 
)	(
( 
(r   c                    | j                                          |                                  | j        r7| j                            d          \  }}| j                                          ns| j                                           | j        | j        fi | j        }t          j
        d d         dk     r|                     |           t          | j        |           |S )Nr   r#   r  )r  acquirer+  r  r   releaser  r  r  r   version_infoDisableNaglerv  rr  )r,   r   r*  s      r   r  zSoapStubAdapter.GetConnectionu  s    
i
  """	 4Y]]1%%													$+di;;4?;;  RaR 5((f%%%	4?F	3	3	3mr   c                     | j                                          | j        }g | _        | j                                          |D ]\  }}|                     |           d S r9   )r  r-  r  r.  r  )r,   oldConnectionsr  r*  s       r   r  zSoapStubAdapter.DropConnections  sl    
iyndi
i# % %'$			t	$	$	$	$% %r   c                    | j                                          |                                  t          | j                  | j        k     rW| j        r|j        rI| j                            d|t          j	                    f           | j         
                                 d S | j         
                                 |                     |           d S r  )r  r-  r+  r   r  r  r  ri  insertr#  r.  r  r  s     r   r  z SoapStubAdapter.ReturnConnection  s    
i
  """	TY$-	'	'1C	'ty	'			!dDIKK0	1	1	1														 
		t	$	$	$	$	$r   c                 z    | j         t          k    r&t          d          rj        fd}|_        d S d S d S )Nrh  c                       | i | t          d          }|r?	 |                    t          j        t          j        d           d S # t
          $ r Y d S w xY wd S )Nri  r   )r   
setsockoptre  IPPROTO_TCPTCP_NODELAYr(   )rY  r~  ri  r  
orgConnects      r   ConnectDisableNaglez9SoapStubAdapter.DisableNagle.<locals>.ConnectDisableNagle  s    J''''4((D //&"4f6H!LLLLL   $$ s   +A
 

AA)r  r`  r   rh  )r,   r  r;  r:  s    ` @r   r0  zSoapStubAdapter.DisableNagle  sa    	,	,	,y1I1I	,l
 
 
 
 
 
 , 
-	,	,	,r   r9   )r-   r.   r/    CONNECTION_POOL_IDLE_TIMEOUT_SECr)   r   r/  r  
contextlibcontextmanagerr	  r!  r+  r  r  r  r0  r   r   r   r  r    s'       8 'STta4""4T4*.&F4KB KB KB KBd 
rrU""   
   ( ( ($BU BU BU BUL( ( (   @% % %% % %, , , , ,r   r  c                     | S r9   r   )r,   memos     r   __deepcopy__rA    s    
;r   z

c                     |                      t                    }|dk    rdS |t          t                    z  }| d |         }| |d          }||fS )Nr   )rS   rS   )r   HEADER_SECTION_ENDr   )httpResponse	headerEnd
headerTextbodyTexts       r   ParseHttpResponserH    s^      !34492ooX&'''9ZiZ(:9::&8x
  r   c                       e Zd ZddZd ZdS )SoapCmdStubAdapterr  c                 t    t                               | |           || _        t          d          | _        d S )Nr  zvmodl.fault.SystemError)rA  r)   cmdr   systemError)r,   rL  rH   s      r   r)   zSoapCmdStubAdapter.__init__  s9    ""4"999dh%&?@@dr   c                 F   | j                                         }|                     |||          }t          t          j                  }d|d<   t          t          |                    |d<   | j        dd         |d<   t          j
        |t          j        t          j        t          j        |          }|                    |          \  }}	|j        dk     r3d	                    |j         |	          }	|                     |	|	
          	 t!          |          \  }
}t#          |                               ||j                  }n2#  d                    ||	          }	|                     |	|	
          xY w|j        dk    r|S ||                     |	|	
          |)Nr  REQUEST_METHODCONTENT_LENGTHr   r   HTTP_SOAPACTION)stdinstdoutstderrenvr   z&Process terminated with signal {0}
{1})r   r  z(Failure parsing SOAP response ({0})
{1}})rL  r   r^  dictosenvironrg   r   r>  
subprocessPopenPIPEcommunicate
returncoderf   rM  rH  r(  r   r   )r,   rX  rG   rY  argvr  rU  poutTexterrTextresponseHeadersresponseBodyr@   s                r   r!  zSoapCmdStubAdapter.InvokeMethod  s   X^^d!!"dD11cc$c
!#c((mmc
#~ad3c


4!+",/",/"	$ $ $a
 ==--w	
		<CCQ\MSZ[[GG<<	<=+<W+E+E	(/<'--99,TT=>EEgwWWGG<<	<	
		;GG<<	<s   :E	 	/E8N)r  )r-   r.   r/   r)   r!  r   r   r   rJ  rJ    s;        A A A A    r   rJ  c                   N    e Zd ZdZdZdZ e            ZddZd Z	d Z
d	 Zd
 ZdS )SessionOrientedStuba:  A session-oriented stub adapter that will relogin to the destination if a
   session-oriented exception is thrown.


   Here's an example.  First, we setup the communication substrate:

   >>> soapStub = SoapStubAdapter(host="192.168.1.2", ns="vim25/5.0")

   Create a SessionOrientedStub that uses the stub we just created for talking
   to the server:

   >>> from pyVim.connect import VimSessionOrientedStub
   >>> sessionStub = VimSessionOrientedStub(
   ...     soapStub,
   ...     VimSessionOrientedStub.makeUserLoginMethod("root", "vmware"))

   Perform some privileged operations without needing to explicitly login:

   >>> si = Vim.ServiceInstance("ServiceInstance", sessionStub)
   >>> si.content.sessionManager.sessionList
   >>> si.content.sessionManager.Logout()
   >>> si.content.sessionManager.sessionList
   r   r   皙?r$   c                    t          |          sJ |dk    sJ t                              | |j                   t                                          | _        || _        | j        | _	        || _
        || _        || _        dS )a  Construct a SessionOrientedStub.

      The stub starts off in the "unauthenticated" state, so it will call the
      loginMethod on the first invocation of a method.  If a communication error
      is encountered, the stub will wait for retryDelay seconds and then try to
      call the method again.  If the server throws an exception that is in the
      SESSION_EXCEPTIONS tuple, it will be caught and the stub will transition
      back into the "unauthenticated" state so that another login will be
      performed.

      @param soapStub The communication substrate.
      @param loginMethod A function that takes a single parameter, soapStub, and
        performs the necessary operations to authenticate with the server.
      @param retryDelay The amount of time to sleep before retrying after a
        communication error.
      @param retryCount The number of times to retry connecting to the server.
      r   r  N)callabler8  r)   rH   r  r  r  soapStubSTATE_UNAUTHENTICATEDstateloginMethod
retryDelay
retryCount)r,   ri  rl  rm  rn  s        r   r)   zSessionOrientedStub.__init__   s}    $ k"""""1____tX-=>>>..""didm-dj$d"do"dooor   c                    | j         }|dk    r	 | j        | j        k    r|                                  | j                            ||||           \  }}nN# t          j        t          j	        t          f$ r* | j        r|rt          j        | j                   |dz  }Y w xY w|dk    r|S t          || j                  r|                                  n||dk    t#                      )Nr   r   r  )rn  rk  rj  _CallLoginMethodri  r!  re  r  r   r  r   rm  r#  sleeprX   SESSION_EXCEPTIONS_SetStateUnauthenticatedSystemError)r,   rX  rG   rY  retriesLeftr  r@   s          r   r!  z SessionOrientedStub.InvokeMethod>  s    Ok!OO	
zT777$$&&&-44RtTJJKFCC{8*E 
 
 
 +; +z$/***1KH	
 cMMJ sD344 
))++++ I- !OO2 MMs   AA ABBc                    | j         }|dk    r	 | j        | j        k    r|                                  t                              | ||          }n# t          j        t          j	        t          f$ r* | j        r|rt          j        | j                   |dz  }Y t          $ r:}t          || j                  r|                                  |dz  }Y d }~|d }~ww xY w|S t%                      )Nr   r   )rn  rk  rj  rp  r8  InvokeAccessorre  r  r   r  r   rm  r#  rq  r(   rX   rr  rs  rt  )r,   rX  rG   ru  r@   es         r   rw  z"SessionOrientedStub.InvokeAccessorb  s    Ok!OO
zT777$$&&&!00r4@@CC{8*E 
 
 
 +; +z$/***1KH 
 
 
!T455 ,,...a{xxxxw
 MMs%   A A AC	C#.CCCc                    	 | j                                          | j        | j        k    r&|                     | j                   | j        | _        | j                                          d S # | j                                          w xY wr9   )r  r-  rk  rj  rl  ri  STATE_AUTHENTICATEDr.  r   s    r   rp  z$SessionOrientedStub._CallLoginMethod  s    						J$444T]+++1DJ														s   AA, ,Bc                     | j                                          | j        | j        k    r| j        | _        | j                                          d S r9   )r  r-  rk  rz  rj  r.  r   s    r   rs  z,SessionOrientedStub._SetStateUnauthenticated  sJ    
i	t/	/	/0
ir   N)rf  r$   )r-   r.   r/   r   rj  rz  tuplerr  r)   r!  rw  rp  rs  r   r   r   re  re    s         0 # # # #<  H  >      r   re  )NNNN)NNN)m
__future__r   r   r   	six.movesr   r   r   r   r	   r   rW  platformre  rY  r#  six.moves.urllib.parser
   r   xml.parsers.expatr   pyVmomi.VmomiSupportpyVmomi.StubAdapterAccessorImplr   pyVmomi.Iso8601r  r   r   rt   r=  uname	USERWORLDr<  r   rL   rf   rH  XMLNS_SOAPENCr,  rq   r  rr   rG  SOAP_ENVELOPE_TAGSOAP_HEADER_TAGSOAP_FAULT_TAGSOAP_BODY_TAGrW  rI  rV  rM  rQ  rS  rU  
SOAP_STARTSOAP_ENDWSSE_PREFIXWSSE_HEADER_TAGWSSE_NS_URLWSSE_NSrO  rP  r   rd   r   python_versionr  r  r  r  r(   r&   r7   rA   rD   rO   rQ   rJ   rh   r_   r   r   r   rT   r   r   r   r(  r8  rA  rb  r`  SSL_THUMBPRINTS_SUPPORTEDry  ro  rv  r  r  ImportErrorrm  r  r  r  r  rA  rC  rH  rJ  re  r   r   r   <module>r     s   ' & & & & & 



       ! ! ! ! ! !                         



 				        + + + + + +       * * * * * * # " " " D D D D D D      ( ( ( ( ( (     rxzz!}
*99999 $'  	3::<HH
;;v&		) i	%E4
 #))*]*CDD %%j&?@@##J}$=>>!!*]";<<nn%677hh  J  J3<9Z3H3H J  J  J K KK   %%&788 NN?33 ///22..//.. ?2T9
-"33 ''44a

"
";
<
<&&@@ ///22 l.//#|$@AA  )(**
(.

1
X^a 

(.

1
    )     
( ( (, , ,$a a a aL L L L   @   "R4 R4 R4 R4 R4 R4 R4 R4j	 	 	 	 	( 	 	 	# # #8 "(d    * * * * * * * *\[ [ [ [ [2 [ [ [~>! >! >! >! >!: >! >! >!F    .   &62 62 62 62 62/ 62 62 62v    ;5   &">#:::>>>F F F O>> 
> 
> 
>$E E E
> > > > >
>$( ( ( ( ({2 ( ( (j    &   >E E E E E E E EPh, h, h, h, h,) h, h, h,\	     ! ! !/ / / / /, / / /dM M M M M/ M M M M Ms   :B BM4 4NN