
                         $   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  G d	 d
e      Ze
j"                   e
j$                  e
j&                  j(                         G d de
j*                                      Ze
j"                   e
j$                  e
j&                  j.                         G d de                    Ze
j"                   e
j$                  e
j&                  j2                         G d de                    Zy)z5Command for modifying the target of forwarding rules.    )absolute_import)division)unicode_literals)base_classes)forwarding_rules_utils)base)flagsc                   <    e Zd ZdZdZd Zed        Zd Zd Z	d Z
y)SetTargetHelperz,Helper that sets a forwarding rule's target.Nc                     || _         y N)_holder)selfholders     2lib/surface/compute/forwarding_rules/set_target.py__init__zSetTargetHelper.__init__!   s	    DL    c                     t        j                         | _        t        j                  |       | j                  j	                  |       y)z2Adds flags to set the target of a forwarding rule.N)r	   ForwardingRuleArgumentFORWARDING_RULE_ARGAddSetTargetArgsAddArgumentclsparsers     r   ArgszSetTargetHelper.Args$   s7     $::<C	6"''/r   c                    | j                   j                  }| j                  j                  || j                   j                  t        j                  |            }|j                         dk(  r)| j                  || j                   j                  ||      }n;|j                         dk(  r(| j                  || j                   j                  ||      }|j                        S )z;Issues requests necessary to set target on Forwarding Rule.)scope_listerzcompute.globalForwardingRuleszcompute.forwardingRules)r   clientr   ResolveAsResource	resourcescompute_flagsGetDefaultScopeLister
CollectionCreateGlobalRequestsCreateRegionalRequestsMakeRequests)r   argsr   forwarding_rule_refrequestss        r   RunzSetTargetHelper.Run+   s    \\  F22DD"88@ E B
 %%'+JJ**64<<3I3I+>Fh		'	'	)-F	F,,VT\\5K5K-@$Hh x((r   c                    t        j                  ||      }|j                  j                  |j	                         |j
                  |j                  j                  |j                                     }|j                  j                  d|fgS )z!Create a globally scoped request.target)forwardingRuleprojecttargetReference	SetTarget)
utilsGetGlobalTargetmessages,ComputeGlobalForwardingRulesSetTargetRequestNamer0   TargetReferenceSelfLinkapitools_clientglobalForwardingRules)r   r   r!   r)   r(   
target_refrequests          r   r%   z$SetTargetHelper.CreateGlobalRequests=   s    &&y$7JooJJ*//1#++77&&( 8 + K G ##99;P  r   c           	      @   t        j                  ||||      \  }}|j                  j                  |j	                         |j
                  |j                  |j                  j                  |j                                     }|j                  j                  d|fgS )z#Create a regionally scoped request.)r)   r-   )r/   r0   regionr1   r2   )r3   GetRegionalTargetr5   &ComputeForwardingRulesSetTargetRequestr7   r0   r?   r8   r9   r:   forwardingRules)r   r   r!   r)   r(   r<   _r=   s           r   r&   z&SetTargetHelper.CreateRegionalRequestsK   s     ++	45HMJ ooDD*//1#++"))77&&( 8 +	 E G ##33['JKKr   )__name__
__module____qualname____doc__r   r   classmethodr   r+   r%   r&    r   r   r   r      s4    4 0 0)$Lr   r   c                   f    e Zd ZdZdZddj                  ej                        iZe	d        Z
d Zy)SetCModify a forwarding rule to direct network traffic to a new target.NDESCRIPTIONa  
          *{{command}}* is used to set a new target for a forwarding
          rule. {overview}

          When creating a forwarding rule, exactly one of  ``--target-instance'',
          ``--target-pool'', ``--target-http-proxy'', ``--target-https-proxy'',
          ``--target-grpc-proxy'', ``--target-ssl-proxy'',
          ``--target-tcp-proxy'' or ``--target-vpn-gateway''
          must be specified.)overviewc                 .    t         j                  |       y r   )r   r   r   s     r   r   zSet.Argsq   s     r   c                 |    t        j                  | j                               }t        |      j	                  |      S r   )r   ComputeApiHolderReleaseTrackr   r+   )r   r(   r   s      r   r+   zSet.Runu   s1    **4+<+<+>?F6"&&t,,r   )rD   rE   rF   rG   r   formatr	   FORWARDING_RULES_OVERVIEWdetailed_helprH   r   r+   rI   r   r   rK   rK   ]   sL     L    !'0O0O P- ! !-r   rK   c                       e Zd ZdZy)SetBetarL   NrD   rE   rF   rG   rI   r   r   rW   rW   z        Lr   rW   c                       e Zd ZdZy)SetAlpharL   NrX   rI   r   r   r[   r[      rY   r   r[   N)rG   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r3   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   r"   3googlecloudsdk.command_lib.compute.forwarding_rulesobjectr   UniverseCompatibleReleaseTracksrR   GAUpdateCommandrK   BETArW   ALPHAr[   rI   r   r   <module>rh      s    < &  ' 7 J ( E E>Lf >LB D%%(()-$

 - * -6 D%%**+c  , 
 D%%++,w  - r   