
    G3                     0   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KJr  SSKJr  SSKJr  SS	KJr  S r S r!S r"S r#S r$S r%\RL                  " \RN                  RP                  5      \RR                   " S S\RT                  5      5       5       r+\RL                  " \RN                  RX                  \RN                  RZ                  5       " S S\+5      5       r.g)z*Command for updating target HTTPS proxies.    )absolute_import)division)unicode_literals)encoding)base_classes)target_proxies_utils)base)resource_args)
exceptions)flags)reference_utils)scope)target_https_proxies_utilsc                      SSSS.$ )NUpdate a target HTTPS proxy.a  
      *{command}* is used to change the SSL certificate and/or URL map of
      existing target HTTPS proxies. A target HTTPS proxy is referenced by
      one or more forwarding rules which specify the network traffic that
      the proxy is responsible for routing. The target HTTPS proxy in turn
      points to a URL map that defines the rules for routing the requests.
      The URL map's job is to map URLs to backend services which handle
      the actual requests. The target HTTPS proxy also points to at most
      15 SSL certificates used for server-side authentication. The target
      HTTPS proxy can be associated with at most one SSL policy.
      a@  
      Update the URL map of a global target HTTPS proxy by running:

        $ {command} PROXY_NAME --url-map=URL_MAP

      Update the SSL certificate of a global target HTTPS proxy by running:

        $ {command} PROXY_NAME --ssl-certificates=SSL_CERTIFIFCATE

      Update the URL map of a global target HTTPS proxy by running:

        $ {command} PROXY_NAME --url-map=URL_MAP --region=REGION_NAME

      Update the SSL certificate of a global target HTTPS proxy by running:

        $ {command} PROXY_NAME --ssl-certificates=SSL_CERTIFIFCATE --region=REGION_NAME
      )briefDESCRIPTIONEXAMPLES r       2lib/surface/compute/target_https_proxies/update.py_DetailedHelpr   &   s    -



 r   c                    ^  S/n/ SQU-   nS/n/ SQU-   n[        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.tls_early_data)ssl_certificatesurl_mapquic_override
ssl_policyclear_ssl_policycertificate_mapclear_certificate_mapclear_ssl_certificates certificate_manager_certificates!clear_http_keep_alive_timeout_sechttp_keep_alive_timeout_secclear_server_tls_policyserver_tls_policyz[--tls-early-data])z[--ssl-certificates]z[--url-map]z[--quic-override]z[--ssl-policy]z[--clear-ssl-policy]z[--certificate-map]z[--clear-certificate-map]z[--clear-ssl-certificates]z$[--certificate-manager-certificates]z%[--clear-http-keep-alive-timeout-sec]z[--http-keep-alive-timeout-sec]z[--clear-server-tls-policy]z[--server-tls-policy]c              3   F   >#    U  H  nTR                  U5      v   M     g 7fN)IsSpecified).0argargss     r   	<genexpr>(_CheckMissingArgument.<locals>.<genexpr>j   s     7hsTc""hs   !z!You must specify at least one of z, Nz or .)sumcompute_exceptionsArgumentErrorjoin)r-   tls_early_data_argsall_argserr_tls_early_data_argserr_msg_argss   `    r   _CheckMissingArgumentr:   H   s    )* ( 22  , 
7h7	7	7

*
*99\#2&'b)9	;  
8r   c                     UR                   nUR                  U UR                  [        R                  R
                  [        R                  " U5      S9n[        Xx5      n	[        R                  " U	5      n
/ nU R                  S5      nU R                  (       d  U(       aw  / U
l        U R                  (       aF  [        R                  " XXR                  5      nU Vs/ s H  oR!                  5       PM     snU
l        U(       a  UR#                  S5        OiU R$                  (       aX  [        R&                  " U5      nU R$                   Vs/ s H%  n[(        R*                  " UR,                  UU5      PM'     nnXl        U R.                  (       a4  [        R0                  " XXR                  5      R!                  5       U
l        U R4                  (       a4  UR6                  R8                  R;                  U R4                  5      U
l        U R>                  (       a4  UR6                  R8                  RA                  U R>                  5      U
l!        U RD                  (       a6  [        RF                  " XXR                  5      nUR!                  5       U
l$        U RK                  S5      (       a  SU
l$        UR#                  S5        U RK                  S5      (       a  U RL                  U
l'        O.U RK                  S5      (       a  SU
l'        UR#                  S	5        U(       a  UR!                  5       U
l(        U R                  S
5      (       a  SU
l(        UR#                  S5        U R                  S5      (       a:  U RR                  RT                  RW                  5       nUR!                  5       U
l,        O.U R                  S5      (       a  SU
l,        UR#                  S5        X:w  a  [[        XxX5      $ / $ s  snf s  snf )z9Issues requests necessary to update Target HTTPS Proxies.)default_scopescope_listerr"   sslCertificatesr   N	sslPolicyr%   r$   httpKeepAliveTimeoutSecr!   certificateMapr'   r&   serverTlsPolicy).clientResolveAsResource	resourcescompute_scope	ScopeEnumGLOBALcompute_flagsGetDefaultScopeLister_GetTargetHttpsProxyr   CopyProtoMessageIsKnownAndSpecifiedr   r>   r   ResolveSslCertificatesSelfLinkappendr#   GetLocationr   BuildCcmCertificateUrlprojectr   ResolveTargetHttpsProxyUrlMapurlMapr   messagesTargetHttpsProxyQuicOverrideValueValuesEnumquicOverrider   TlsEarlyDataValueValuesEnumtlsEarlyDatar   ResolveSslPolicyr?   r*   r%   r@   rA   CONCEPTSr'   ParserB   _PatchTargetHttpsProxy)r-   holderssl_certificates_argtarget_https_proxy_argurl_map_argssl_policy_argcertificate_map_refrC   	proxy_refold_resourcenew_resourcecleared_fieldsr"   ssl_cert_refsreflocationcertificate_namessl_policy_refserver_tls_policy_refs                      r   _Runrp   q   s]    ==&$66
!++22 66v>	 7 ) &f8,**<8,.334LM	4#%L 0GG
i1A1Am AN%Nlln%Nl"-.,,)55i@H
 !% E E	 !F 	..x)9	
 !F	   $1 	\\"@@y*:*:	

(*  
((DD	
  
((DD	
  
__/@@i)9)9N ,446L	())!L+&	344+/+K+KL(;<<+/L(34"5">">"@L	566"&L*+	122 MM;;AAC#8#A#A#CL  9::#'L +,!!<  
)I &O
s   O6,O;c                 j   [         R                  " U5      (       aA  U R                  R                  " S0 UR	                  5       D6nU R
                  R                  nO@U R                  R                  " S0 UR	                  5       D6nU R
                  R                  nU R                  USU4/5      S   $ )z!Retrieves the target HTTPS proxy.Getr   r   )
r   IsRegionalTargetHttpsProxiesRefrV   )ComputeRegionTargetHttpsProxiesGetRequestAsDictapitools_clientregionTargetHttpsProxies#ComputeTargetHttpsProxiesGetRequesttargetHttpsProxiesMakeRequests)rC   rf   request
collections       r   rK   rK      s    ??	JJooGG 



G ''@@JooAA 



G ''::J			z5':;	<Q	??r   c                 F   / n[         R                  " U5      (       ae  UR                  U R                  R                  SU R
                  R                  UR                  UR                  UR                  5       US945        OYUR                  U R                  R                  SU R
                  R                  UR                  UR                  5       US945        U R                  R                  U5         U R                  U5      sSSS5        $ ! , (       d  f       g= f)zPatches the target HTTPS proxy.Patch)rS   regiontargetHttpsProxytargetHttpsProxyResource)rS   r   r   N)r   rs   rP   rv   rw   rV   +ComputeRegionTargetHttpsProxiesPatchRequestrS   r   Namery   %ComputeTargetHttpsProxiesPatchRequestIncludeFieldsrz   )rC   rf   rh   ri   requestss        r   r_   r_      s    (??	JJOO77CC%%##&^^-%1	 	D 	
	 	 OO11==%%&^^-%1 	> 	
  ++N;x( <;;s   7D
D c                     U R                  5       n[        R                  " SSUSS9R                  U5        [        R                  " 5       R                  U5        g)z-Adds all Server TLS Policy-related arguments.	to attachzserver-tls-policyT)namegroupregion_fallthroughN)add_mutually_exclusive_groupns_resource_argsGetServerTlsPolicyResourceArgAddToParser$GetClearServerTLSPolicyForHttpsProxy)parserserver_tls_groups     r   _AddServerTLSPolicyArgumentsr     sR    88:00	
 K !779EEr   c                   L    \ rS rSrSrSrSrSrSr\	" 5       r
\S 5       rS rSrg)Updatei  r   Nc                    [         R                  " SSS9U l        [        R                  " 5       U l        U R
                  R                  USS9  [        R                  " SSS9U l	        U R                  R                  U5        UR                  5       nUR                  5       nUR                  5       nU R                  R                  UUSS	9  [        R                  " US
SSSSSUSS9	  [         R                  " S5      R                  U5        UR                  5       n[        R                   " US
SSSSS9  [        R"                  " S5      R                  U5        [$        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                  5       n[,        R.                  " U5        [,        R0                  " U5        [,        R2                  " U5        [,        R4                  " U5        [7        U5        g )Nztarget HTTPS proxyF)requiredupdate)operation_typeHTTPS)r   
proxy_typeSSL_CERTIFICATE)mutex_groupcust_metavarr   z certificate-manager-certificatesT)nounr   
positionalr   pluralr   with_locationzcertificate-map)r   r   r   r   zHTTPS proxy)ssl_certificates_flags'SslCertificatesArgumentForOtherResourceSSL_CERTIFICATES_ARGr   TargetHttpsProxyArgumentTARGET_HTTPS_PROXY_ARGAddArgumenturl_map_flagsUrlMapArgumentForTargetProxyURL_MAP_ARGr   add_argument_groupr
   AddCertificateResourceArg/GetClearSslCertificatesArgumentForOtherResourcer   AddCertificateMapResourceArg.GetClearCertificateMapArgumentForOtherResourcessl_policies_flags.GetSslPolicyMultiScopeArgumentForOtherResourceSSL_POLICY_ARG)GetClearSslPolicyArgumentForOtherResourcer   AddHttpKeepAliveTimeoutSecAddClearHttpKeepAliveTimeoutSecAddQuicOverrideUpdateArgsAddTlsEarlyDataUpdateArgsr   )clsr   r   certificate_groupcert_main_flags_group	map_groupssl_policy_groups          r   ArgsUpdate.Args  s    	FF 5	
  "'!?!?!AC**6(*K#@@7CO OO'//1E002-JJL(()& ) 
 ++//#
 JJk'(224I.. @@k) 	IIe	
  //1E//1""#34@@%k%//1E33E:88?226:226: (r   c           	         [        U5        [        R                  " U R                  5       5      nUR                  R
                  R                  5       n[        UUU R                  U R                  U R                  U R                  U5      $ r)   )r:   r   ComputeApiHolderReleaseTrackr]   r    r^   rp   r   r   r   r   )selfr-   r`   re   s       r   Run
Update.Rund  sv    $**4+<+<+>?F--77==?!!## r   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r   r   detailed_helpclassmethodr   r   __static_attributes__r   r   r   r   r     s>     %+./-G) G)Rr   r   c                       \ rS rSrSrg)
UpdateBetais  r   N)r   r   r   r   r   r   r   r   r   r   s  s    r   r   N)/r   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper	   .googlecloudsdk.command_lib.certificate_managerr
   "googlecloudsdk.command_lib.computer   r3   r   rI   r   r   rF   3googlecloudsdk.command_lib.compute.ssl_certificatesr   /googlecloudsdk.command_lib.compute.ssl_policiesr   7googlecloudsdk.command_lib.compute.target_https_proxiesr   +googlecloudsdk.command_lib.compute.url_mapsr   +googlecloudsdk.command_lib.network_securityr   r   r:   rp   rK   r_   r   ReleaseTracksr   GAUniverseCompatibleUpdateCommandr   BETAALPHAr   r   r   r   <module>r      s    1 &  ' % 7 ? ( H O E > E _ W I ^ N YD&RbJ@)8 D%%(()_T _  *_D D%%**D,=,=,C,CD  Er   