
    1                         d 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	m
Z
 dd	l	mZ dd
lmZ dd
lmZ  G d de
j                         Zddde_        y)z(Command for updating target TCP proxies.    )absolute_import)division)unicode_literals)base_classes)target_proxies_utils)utils)base)
exceptions)flagsc                   .    e Zd ZdZdZdZed        Zd Zy)UpdatezUpdate a target TCP proxy.Nc                    t        j                  |       t        j                  d      | _        | j                  j                  |       t        j                         | _        | j                  j                  |d       y )NF)requiredupdate)operation_type)	r   AddProxyHeaderRelatedUpdateArgsbackend_service_flags'BackendServiceArgumentForTargetTcpProxyBACKEND_SERVICE_ARGAddArgumentr   TargetTcpProxyArgumentTARGET_TCP_PROXY_ARG)clsparsers     0lib/surface/compute/target_tcp_proxies/update.pyArgszUpdate.Args%   sk    88@ 	EE	  ''/$;;=C(((I    c                     |j                   s$|j                  st        j                  ddgd      t	        j
                  | j                               }g }| j                  j                  ||j                        }|j                  j                  }|j                  j                  }|j                  r| j                  j                  ||j                        }|j                  |j                  d|j!                  |j"                  |j%                         |j'                  |j)                                     f       |j                   r}|j*                  j-                  |j                         }|j                  |j                  d|j/                  |j"                  |j%                         |j+                  |      	      f       g }	|j                  j1                  ||	      }
|	rt3        j4                  |	       |
S )
Nz--backend-servicez--proxy-headerzIYou must specify at least one of [--backend-service] or [--proxy-header].SetBackendService)service)projecttargetTcpProxy(targetTcpProxiesSetBackendServiceRequestSetProxyHeader)proxyHeader)r!   r"   %targetTcpProxiesSetProxyHeaderRequest)proxy_headerbackend_servicer
   OneOfArgumentsRequiredExceptionr   ComputeApiHolderReleaseTrackr   ResolveAsResource	resourcesclientapitools_clientmessagesr   appendtargetTcpProxies/ComputeTargetTcpProxiesSetBackendServiceRequestr!   Name(TargetTcpProxiesSetBackendServiceRequestSelfLink%TargetTcpProxiesSetProxyHeaderRequestProxyHeaderValueValuesEnum,ComputeTargetTcpProxiesSetProxyHeaderRequestMakeRequestsr   RaiseToolException)selfargsholderrequeststarget_tcp_proxy_refr.   r0   backend_service_refr'   errorsr-   s              r   Runz
Update.Run0   s   !5!566 0
1 
 **4+<+<+>?FH44FFf  ]]**F}}%%H 44FF
  "oo""CC+332779DD2;;= E ?	 D ABC DD001B1BC oo""@@+332779AA#/ B 1	 A 345 F**8V<Iv&r   )	__name__
__module____qualname____doc__r   r   classmethodr   rC    r   r   r   r      s*    "J J.r   r   zUpdate a target TCP proxyag  
        *{command}* is used to change the backend service or proxy header
        of existing target TCP proxies. A target TCP proxy is referenced
        by one or more forwarding rules which define which packets the
        proxy is responsible for routing. The target TCP proxy in turn
        points to a backend service which will handle the requests.  )briefDESCRIPTIONN)rG   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r   googlecloudsdk.callioper	   r
   3googlecloudsdk.command_lib.compute.backend_servicesr   r   5googlecloudsdk.command_lib.compute.target_tcp_proxiesSilentCommandr   detailed_helprI   r   r   <module>rS      sR    / &  ' 7 ? 0 ( .$ G?T ?F )I	 r   