
    4                         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\5      r\R                  \R                  " \R                  R                   5       " S S	\R"                  5      5       5       r\R                  \R                  " \R                  R&                  5       " S
 S\5      5       5       r\R                  \R                  " \R                  R*                  5       " S S\5      5       5       rg)z5Command for modifying the target of forwarding rules.    )base_classes)forwarding_rules_utils)base)flagsc                   D    \ rS rSrSrSrS r\S 5       rS r	S r
S rS	rg)
SetTargetHelper   z,Helper that sets a forwarding rule's target.Nc                     Xl         X l        g N_holder_support_external_passthrough)selfholdersupport_external_passthroughs      2lib/surface/compute/forwarding_rules/set_target.py__init__SetTargetHelper.__init__   s    L)E&    c                     [         R                  " 5       U l        [         R                  " XS9  U R                  R	                  U5        g)z2Adds flags to set the target of a forwarding rule.)include_external_passthroughN)r   ForwardingRuleArgumentFORWARDING_RULE_ARGAddSetTargetArgsAddArgument)clsparserr   s      r   ArgsSetTargetHelper.Args"   s<     $::<C	 ''/r   c                    U R                   R                  nU R                  R                  UU R                   R                  [
        R                  " U5      S9nUR                  5       S:X  a'  U R                  X R                   R                  X15      nO:UR                  5       S:X  a&  U R                  X R                   R                  X15      nUR                  W5      $ )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   RunSetTargetHelper.Run+   s    \\  F22DD"88@ E B
 %%'+JJ**6<<3I3I+>Fh		'	'	)-F	F,,V\\5K5K-@Hh x((r   c                 (   [         R                  " X$U R                  5      nUR                  R	                  UR                  5       UR                  UR                  R                  UR                  5       S9S9nUR                  R                  SU4/$ )z!Create a globally scoped request.target)forwardingRuleprojecttargetReference	SetTarget)utilsGetGlobalTargetr   messages,ComputeGlobalForwardingRulesSetTargetRequestNamer4   TargetReferenceSelfLinkapitools_clientglobalForwardingRules)r   r"   r$   r,   r+   
target_refrequests          r   r(   $SetTargetHelper.CreateGlobalRequests=   s    &&;;J ooJJ*//1#++77&&( 8 + K G ##99;P  r   c           	      *   [         R                  " XXCS9u  pVUR                  R                  UR	                  5       UR
                  UR                  UR                  R                  UR                  5       S9S9nUR                  R                  SU4/$ )z#Create a regionally scoped request.)r,   r1   )r3   r4   regionr5   r6   )r7   GetRegionalTargetr9   &ComputeForwardingRulesSetTargetRequestr;   r4   rD   r<   r=   r>   forwardingRules)r   r"   r$   r,   r+   r@   _rA   s           r   r)   &SetTargetHelper.CreateRegionalRequestsM   s     ++4MJ ooDD*//1#++"))77&&( 8 +	 E G ##33['JKKr   r   )__name__
__module____qualname____firstlineno____doc__r   r   classmethodr   r.   r(   r)   __static_attributes__ r   r   r   r      s5    4F 0 0)$ Lr   r   c                   l    \ rS rSrSrSrSrSSR                  \R                  S90r
\S 5       rS	 rS
rg)Set_   CModify a forwarding rule to direct network traffic to a new target.NF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                 B    [         R                  XR                  5        g r   )r   r   r   )r   r   s     r   r   Set.Argst   s    !B!BCr   c                     [         R                  " U R                  5       5      n[        X R                  5      R                  U5      $ r   )r   ComputeApiHolderReleaseTrackr   r   r.   )r   r+   r   s      r   r.   Set.Runx   s7    **4+<+<+>?F6#E#EFJJ4PPr   rQ   )rJ   rK   rL   rM   rN   r   r   formatr   FORWARDING_RULES_OVERVIEWdetailed_helprO   r   r.   rP   rQ   r   r   rS   rS   _   sU     L"'    !'0O0O P- D DQr   rS   c                       \ rS rSrSrSrSrg)SetBeta}   rU   FrQ   NrJ   rK   rL   rM   rN   r   rP   rQ   r   r   rb   rb   }   s     L"'r   rb   c                       \ rS rSrSrSrSrg)SetAlpha   rU   TrQ   Nrd   rQ   r   r   rf   rf      s     L"&r   rf   N)rN   googlecloudsdk.api_lib.computer   r   r7   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r%   3googlecloudsdk.command_lib.compute.forwarding_rulesobjectr   UniverseCompatibleReleaseTracksr\   GAUpdateCommandrS   BETArb   ALPHArf   rQ   r   r   <module>rs      s    < 8 J ( E ECLf CLL D%%(()Q$

 Q * Q8 D%%**+(c ( , (
 D%%++,'w ' - 'r   