
    "$                     ,   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 rS rS rS rS rS rS rS rS r\	R8                  " \	R:                  R<                  5      \	R>                   " S S\	R@                  5      5       5       r!\	R8                  " \	R:                  RD                  5       " S S\!5      5       r#\	R8                  " \	R:                  RH                  5       " S S\#5      5       r%g)z#Command for updating health checks.    )absolute_import)division)unicode_literals)base_classes)health_checks_utils)base)scope)
exceptions)flags)logc                      SSS.$ )NUpdate a TCP health check.z      *{command}* is used to update an existing TCP health check. Only
      arguments passed in will be updated on the health check. Other
      attributes will remain unaffected.
      )briefDESCRIPTION r       /lib/surface/compute/health_checks/update/tcp.py_DetailedHelpr      s     '
		
 	r   c                     [         R                  " S5      nUR                  U SS9  [        R                  " U 5        [        R
                  " U S5        U(       a  [        R                  " U 5        U(       a  [        R                  " U 5        g g )NTCPupdate)operation_type)r   HealthCheckArgumentAddArgumentr   AddTcpRelatedUpdateArgsAddProtocolAgnosticUpdateArgs&AddHealthCheckSourceRegionsRelatedArgs AddHealthCheckLoggingRelatedArgs)parserinclude_log_configinclude_source_regionshealth_check_args       r   _Argsr#   ,   sk    ..u5vh?--f533FEB>>vF88@ r   c                     U R                   R                  SU R                  R                  UR	                  5       UR
                  S94$ )9Returns a request for fetching the existing health check.Get)healthCheckproject)apitools_clienthealthChecksmessagesComputeHealthChecksGetRequestNamer(   clienthealth_check_refs     r   _GetGetRequestr1   7   sI    

 
 
-
-u
//
7
7*//1&.. 8 0
1 1r   c                     U R                   R                  SU R                  R                  UR	                  5       UUR
                  S94$ )0Returns a request for updating the health check.Update)r'   healthCheckResourcer(   )r)   r*   r+    ComputeHealthChecksUpdateRequestr-   r(   r/   r0   replacements      r   _GetSetRequestr9   ?   sL    

 
 
-
-x
//
:
:*//1"-&.. ; 0
1 1r   c                     U R                   R                  SU R                  R                  UR	                  5       UR
                  UR                  S94$ )r%   r&   )r'   r(   region)r)   regionHealthChecksr+   #ComputeRegionHealthChecksGetRequestr-   r(   r;   r.   s     r   _GetRegionalGetRequestr>   H   sR    

 
 
3
3U
//
=
=*//1&..%,, > .
/ /r   c           	          U R                   R                  SU R                  R                  UR	                  5       UUR
                  UR                  S94$ )r3   r4   )r'   r5   r(   r;   )r)   r<   r+   &ComputeRegionHealthChecksUpdateRequestr-   r(   r;   r7   s      r   _GetRegionalSetRequestrA   Q   sV    

 
 
3
3X
//
@
@*//1"-&..%,,	 A .
/ /r   c                    UR                   U R                  R                  R                  R                  :w  a-  [
        R                  " SUR                   R                  -   5      eUR                  (       a  UR                  nOUR                  c  UR                  nOSn[        R                  " XR                  5      u  pgnUR                  (       a  UR                  n	O&UR                  c  UR                  R                  n	OSn	UR                  (       a  UR                  n
O&UR                  c  UR                  R                  n
OSn
UR                  R                  nUR                  b/  U R                  R                   R#                  UR                  5      nU R                  R                  UR                  UU R                  R                  R                  R                  U R                  R!                  U	U
UUUUS9UR$                  =(       d    UR&                  UR(                  =(       d    UR*                  UR,                  =(       d    UR.                  UR0                  =(       d    UR2                  S9nU(       a&  [        R4                  " XUR6                  5      Ul        U(       a4  UR8                  nUR;                  S5      (       a  UR<                  nXl        U$ )z'Returns a modified HealthCheck message.z<update tcp subcommand applied to health check with protocol N)requestresponseportportNameportSpecificationproxyHeader)namedescriptiontypetcpHealthCheckcheckIntervalSec
timeoutSechealthyThresholdunhealthyThresholdsource_regions)rK   r+   HealthCheckTypeValueValuesEnumr   core_exceptionsErrorrI   rJ   r   HandlePortRelatedFlagsForUpdaterL   rC   rD   rH   proxy_headerTCPHealthCheckProxyHeaderValueValuesEnumcheck_intervalrM   timeoutrN   healthy_thresholdrO   unhealthy_thresholdrP   ModifyLogConfig	logConfigsourceRegionsIsSpecifiedrQ   )r/   argsexisting_checkr    r!   rJ   rE   	port_nameport_specificationrC   rD   rW   new_health_checkrQ   s                 r   _Modifyrg   [   si    oo!!5599:


F  	!" " 
""K ,,KK(;##)$$(*G*G)I%$% 
\\llG||++33GG	]]}}H}},,55HH..::,	"??11LLL__00??&&::>>__33." 4 $ ++N~/N/N:!:!:.. 8&7722 <(;;! 1 & !4!D!Dn.."0 #11N())**n%3"	r   c                 n   [         R                  " U 5        U R                  =(       dk    U R                  =(       dX    U R                  =(       dE    U R
                  =(       d2    U R                  =(       d    U R                  =(       d    U R                  (       + nU(       a  U R                  SL =(       a    UnSnU(       a  U R                  S5      (       a  SnU R                  cP  U R                  cB  U R                  c4  U R                  c&  U(       d  U(       a  [        R                   " S5      egggggg)zBValidates given args and raises exception if any args are invalid.NFrQ   Tz'At least one property must be modified.)r   CheckProtocolAgnosticArgsrE   rZ   r[   r\   r]   rW   use_serving_portenable_loggingra   rJ   rC   rD   rd   r
   ArgumentError)rb   r    r!   
args_unsetsource_regions_modifieds        r   _ValidateArgsro      s    //5II ?!4!4 ? ?**?.2.F.F?%%?)-)>)>@* %%-<*J! 0 01A B B" 
,,

--

..
 %


"
"#L
MM  & !    r   c                    UR                   n[        XU5        [        R                  " S5      nUR	                  XR
                  [        R                  R                  S9n[        R                  " U5      (       a  [        XF5      nO[        XF5      nUR                  U/5      n[        X@US   X#5      n	US   U	:X  a=  [        R                   R#                  SR%                  US   R&                  5      5        U$ [        R                  " U5      (       a  [)        XFU	5      n
O[+        XFU	5      n
UR                  U
/5      $ )z<Issues the requests necessary for updating the health check.r   )default_scoper   z/No change requested; skipping update for [{0}].)r/   ro   r   r   ResolveAsResource	resourcescompute_scope	ScopeEnumGLOBALr   IsRegionalHealthCheckRefr>   r1   MakeRequestsrg   r   statusPrintformatrI   rA   r9   )rb   holderr    r!   r/   r"   r0   get_requestobjects
new_objectset_requests              r   _Runr      s    ==&*@A..u5%77
M,C,C,J,J 8 L 112BCC(BK :K.'GAJ 2* QZ:JJFMM
 N112BCC(:NK :FK			k]	++r   c                   D    \ rS rSrSrSrSr\" 5       r\	S 5       r
S rSrg)r4      r   Tc                 D    [        XR                  U R                  5        g N)r#   _include_log_config_include_source_regions)clsr   s     r   ArgsUpdate.Args   s    	&))3+F+FGr   c                     [         R                  " U R                  5       5      n[        XU R                  U R
                  5      $ r   )r   ComputeApiHolderReleaseTrackr   r   r   )selfrb   r|   s      r   Run
Update.Run   s;    **4+<+<+>?Fd..0L0L r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   detailed_helpclassmethodr   r   __static_attributes__r   r   r   r4   r4      s3     # /-H Hr   r4   c                       \ rS rSrSrg)
UpdateBeta   r   Nr   r   r   r   r   r   r   r   r   r           r   r   c                       \ rS rSrSrg)UpdateAlphai  r   Nr   r   r   r   r   r     r   r   r   N)&r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   rt   0googlecloudsdk.command_lib.compute.health_checksr
   r   googlecloudsdk.corerT   r   r   r#   r1   r9   r>   rA   rg   ro   r   ReleaseTracksr   GADefaultUniverseOnlyUpdateCommandr4   BETAr   ALPHAr   r   r   r   <module>r      s   * &  ' 7 > ( E G B = #
A11//HVN<",J D%%(()T   *$ D%%**+  ,
 D%%++,*  -r   