
    $                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr   " S S\
R2                  5      rg)z(Command for updating target SSL proxies.    )absolute_import)division)unicode_literals)base_classes)target_proxies_utils)utils)base)resource_args)
exceptions)flags)target_ssl_proxies_utilsc                   X    \ rS rSrSrSrSrSrSrSr	\
S 5       r   S
S jrS rS rS	rg)Update%   a7  Update a target SSL proxy.

*{command}* is used to replace the SSL certificate, backend service, proxy
header or SSL policy of existing target SSL proxies. A target SSL proxy is
referenced by one or more forwarding rules which define which packets the
proxy is responsible for routing. The target SSL proxy in turn points to a
backend service which will handle the requests. The target SSL proxy also
points to at most 15 SSL certificates used for server-side authentication
or one certificate map. The target SSL proxy can be associated with at most
one SSL policy.
TNc           	         [         R                  " U5        [        R                  " SS9U l        U R                  R                  U5        [        R                  " 5       U l        U R                  R                  USS9  [        R                  " SSSS9U l        U R                  (       d  U R                  R                  USS9  [        R                  " S	SS9U l        UR!                  5       nUR#                  5       nU R                  R                  U5        [        R$                  " S	SS9R'                  U5        U R                  (       a  UR!                  SS
9nU R                  R                  USS9  [        R(                  " S	5      R'                  U5        [*        R,                  " USSSSSS9  [*        R.                  " S5      R'                  U5        g g )NF)requiredupdate)operation_typeztarget SSL proxy)r   !include_regional_ssl_certificatesSSL_CERTIFICATE)cust_metavarSSL)	sort_argsz	to attachzcertificate-map)name
positionalr   with_locationz	SSL proxy)r   AddProxyHeaderRelatedUpdateArgsbackend_service_flags'BackendServiceArgumentForTargetSslProxyBACKEND_SERVICE_ARGAddArgumentr   TargetSslProxyArgumentTARGET_SSL_PROXY_ARGssl_certificates_flags'SslCertificatesArgumentForOtherResourceSSL_CERTIFICATES_ARG_certificate_mapssl_policies_flags.GetSslPolicyMultiScopeArgumentForOtherResourceSSL_POLICY_ARGadd_mutually_exclusive_groupadd_argument_group)GetClearSslPolicyArgumentForOtherResourceAddToParser/GetClearSslCertificatesArgumentForOtherResourcer
   AddCertificateMapResourceArg.GetClearCertificateMapArgumentForOtherResource)clsparsergroupssl_policy_groups       0lib/surface/compute/target_ssl_proxies/update.pyArgsUpdate.Args9   s   88@ 	EE	  ''/$;;=C(((IFF.3	5 
 	**
0 + 2 	IIE	#  //1E//1""#34@@*{51
11E1Be	**
/ + 1LL
U#00

  BB
"{5)     c                 L   [         R                  " U R                  5       5      n/ nU R                  R	                  XR
                  5      nUR                  R                  nUR                  R                  n	UR                  S5      n
UR                  (       d  U
(       a  / nUR                  (       aD  U R                  R	                  XR
                  5      nU Vs/ s H  oR                  5       PM     nnUR                  UR                  SU	R                  UR                   UR#                  5       U	R%                  US9S945        UR&                  (       a  U R(                  R	                  XR
                  5      nUR                  UR                  SU	R+                  UR                   UR#                  5       U	R-                  UR                  5       S9S945        UR.                  (       aw  U	R0                  R3                  UR.                  5      nUR                  UR                  SU	R5                  UR                   UR#                  5       U	R1                  US	9S
945        UR6                  (       aI  [8        R:                  " XR<                  XuR
                  5      nU	R?                  UR                  5       S9nOS nUR@                  nU(       d  U(       aE  UR                  UR                  SU	RC                  UR                   UR#                  5       US945        UR                  S5      nU RD                  (       a$  URF                  RH                  RK                  5       OS nU(       d  U(       ak  U(       a  UR                  5       OS nUR                  UR                  SU	RM                  UR                   UR#                  5       U	RO                  US9S945        / nUR                  RQ                  UU5      nU(       a  [R        RT                  " U5        U$ s  snf )Nclear_ssl_certificatesSetSslCertificates)sslCertificates)projecttargetSslProxy)targetSslProxiesSetSslCertificatesRequestSetBackendService)service)r>   r?   (targetSslProxiesSetBackendServiceRequestSetProxyHeader)proxyHeader)r>   r?   %targetSslProxiesSetProxyHeaderRequest)	sslPolicySetSslPolicy)r>   r?   sslPolicyReferenceclear_certificate_mapSetCertificateMap)certificateMap)r>   r?   (targetSslProxiesSetCertificateMapRequest)+r   ComputeApiHolderReleaseTrackr#   ResolveAsResource	resourcesclientapitools_clientmessagesIsKnownAndSpecifiedssl_certificatesr&   SelfLinkappendtargetSslProxies0ComputeTargetSslProxiesSetSslCertificatesRequestr>   Name)TargetSslProxiesSetSslCertificatesRequestbackend_servicer    /ComputeTargetSslProxiesSetBackendServiceRequest(TargetSslProxiesSetBackendServiceRequestproxy_header%TargetSslProxiesSetProxyHeaderRequestProxyHeaderValueValuesEnum,ComputeTargetSslProxiesSetProxyHeaderRequest
ssl_policyr   ResolveSslPolicyr*   SslPolicyReferenceclear_ssl_policy*ComputeTargetSslProxiesSetSslPolicyRequestr'   CONCEPTScertificate_mapParse/ComputeTargetSslProxiesSetCertificateMapRequest(TargetSslProxiesSetCertificateMapRequestMakeRequestsr   RaiseToolException)selfargsrd   rg   certificate_map_refholderrequeststarget_ssl_proxy_refrR   rT   r;   	ssl_certsssl_cert_refsrefbackend_service_refr`   ssl_policy_refrJ   	self_linkerrorsrQ   s                        r6   _SendRequestsUpdate._SendRequestsf   s   
 **4+<+<+>?FH44FF  ]]**F}}%%H!556NO 6i			11CC""$/<=}\\^}	=oo""$8DD+332779EE'0 F 2	 E 456  44FF
  "oo""$7CC+332779DD2;;= E ?	 D ABC 

8
8%%d&7&78  oov..0@LL#7#?#?*>*C*C*E'MM/;  N  =	 M ?@ A /@@
##%9;K;KMn.."++- / /j j,,%oov..JJ#7#?#?*>*C*C*E.8 K :; < !445LM			 --77== $( 3 &.. $( oov..0COO#7#?#?*>*C*C*EDLDD.7 E 9	 P :; < F**8V<Iv&I >s   P!c                   ^ / SQn/ SQnU R                   (       af  UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        [        U4S	 jU 5       5      (       d4  [        R                  " S
SR                  USS 5      < SUS   < S35      eg)zChecks for missing argument.)rV   r`   r]   rd   rg   )z[--ssl-certificates]z[--backend-service]z[--proxy-header]z[--ssl-policy]z[--clear-ssl-policy]rj   z[--certificate-map]rJ   z[--clear-certificate-map]r;   z[--clear-ssl-certificates]c              3   F   >#    U  H  nTR                  U5      v   M     g 7fN)IsSpecified).0argrq   s     r6   	<genexpr>/Update._CheckMissingArgument.<locals>.<genexpr>   s     9t$$s   !z!You must specify at least one of z, Nz or .)r'   rX   sumcompute_exceptionsUpdatePropertyErrorjoin)rp   rq   all_argserr_msg_argss    `  r6   _CheckMissingArgumentUpdate._CheckMissingArgument   s    HL oo'(/0oo-.56oo./6799992299\#2&'b)9;< < :r9   c                 F    U R                  U5        U R                  U5      $ r   )r   r}   )rp   rq   s     r6   Run
Update.Run   s!    t$d##r9    )NFN)__name__
__module____qualname____firstlineno____doc__r'   r    r&   r#   r*   classmethodr7   r}   r   r   __static_attributes__r   r9   r6   r   r   %   sU    
 .** **\  $%*(,	Wr<,$r9   r   N)r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   googlecloudsdk.callioper	   .googlecloudsdk.command_lib.certificate_managerr
   "googlecloudsdk.command_lib.computer   r   3googlecloudsdk.command_lib.compute.backend_servicesr   r   3googlecloudsdk.command_lib.compute.ssl_certificatesr$   /googlecloudsdk.command_lib.compute.ssl_policiesr(   5googlecloudsdk.command_lib.compute.target_ssl_proxiesr   SilentCommandr   r   r9   r6   <module>r      sO    / &  ' 7 ? 0 ( H O$%Q G Zr$T r$r9   