
    $                     V   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  \R                  " \R                   R"                  \R                   R$                  \R                   R&                  5      \R(                   " S
 S\R*                  5      5       5       rg)z&Command for updating network peerings.    )absolute_import)division)unicode_literals)base_classes)base)
exceptions)flags)
propertiesc                   >    \ rS rSrSrSr\S 5       rS rS r	S r
Srg	)
Update   a  Update a Compute Engine network peering.

## EXAMPLES

To update the peering named peering-name to both export and import custom
routes, run:

  $ {command} peering-name \
    --export-custom-routes \
    --import-custom-routes


To update the peering named peering-name to both export and import subnet
routes with public ip, run:

  $ {command} peering-name \
    --export-subnet-routes-with-public-ip \
    --import-subnet-routes-with-public-ip
Fc                 N   UR                  SSS9  UR                  SSSS9  [        R                  " U5        [        R                  " U5        [        R                  " U5        [        R
                  " U5        [        R                  " U5        [        R                  " U5        g )NnamezThe name of the peering.)helpz	--networkTzRThe name of the network in the current project to be peered with the peer network.)requiredr   )add_argumentr	   AddImportCustomRoutesFlagAddExportCustomRoutesFlag%AddImportSubnetRoutesWithPublicIpFlag%AddExportSubnetRoutesWithPublicIpFlagAddStackTypeAddUpdateStrategy)clsparsers     /lib/surface/compute/networks/peerings/update.pyArgsUpdate.Args7   s    
%?@
%	   
##F+	##F+	//7	//7	v	F#    c                    U R                  U5        [        R                  " U R                  5       5      nUR                  nU R                  X15      nUR                  R                  UR                  UR                  R                  US9[        R                  R                  R                  R                  5       S9nUR                  UR                   R"                  SU4/5      $ )z6Issues the request necessary for updating the peering.)networkPeering)networknetworksUpdatePeeringRequestprojectUpdatePeering)ValidateArgsr   ComputeApiHolderReleaseTrackclient_CreateNetworkPeeringForRequestmessages#ComputeNetworksUpdatePeeringRequestr!   NetworksUpdatePeeringRequestr
   VALUEScorer#   	GetOrFailMakeRequestsapitools_clientnetworks)selfargsholderr(   network_peeringrequests         r   Run
Update.RunL   s    d**4+<+<+>?F]]F::6HOooAA%+__%Q%Q* &R &
 !!&&..88: B G 

 
 
)
)?G	DE r   c                    UR                   R                  UR                  UR                  UR                  UR
                  UR                  S9n[        US5      (       a4  UR                   R                  R                  UR                  5      Ul
        [        US5      (       a4  UR                   R                  R                  UR                  5      Ul        U$ )N)r   exportCustomRoutesimportCustomRoutesexportSubnetRoutesWithPublicIpimportSubnetRoutesWithPublicIp
stack_typeupdate_strategy)r*   NetworkPeeringr   export_custom_routesimport_custom_routes#export_subnet_routes_with_public_ip#import_subnet_routes_with_public_ipgetattrStackTypeValueValuesEnumr?   	stackTypeUpdateStrategyValueValuesEnumr@   updateStrategy)r3   r(   r4   r6   s       r   r)   &Update._CreateNetworkPeeringForRequest_   s    oo44YY4444'+'O'O'+'O'O 5 O t\""
//
(
(
A
Aoo  t&''
//
(
(
F
F"" $ r   c                 R   UR                   SL UR                  SL /nUR                  UR                  SL UR                  SL /5        UR                  UR                  SL 5        UR                  UR                  SL 5        [        U5      (       a  [        R                  " S5      eg)zValidate arguments.Nz'At least one property must be modified.)rB   rC   extendrD   rE   appendr?   r@   allr   UpdatePropertyError)r3   r4   
check_argss      r   r%   Update.ValidateArgsx   s     	!!T)!!T)J
 00D800D8 
 doo-.d**d23
:**
3  r    N)__name__
__module____qualname____firstlineno____doc___support_stack_typeclassmethodr   r8   r)   r%   __static_attributes__rS   r   r   r   r      s0    
( $ $(&2r   r   N)rX   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   4googlecloudsdk.command_lib.compute.networks.peeringsr	   googlecloudsdk.corer
   ReleaseTracksr'   GAALPHABETADefaultUniverseOnlyCommandr   rS   r   r   <module>rh      s    - &  ' 7 ( 9 F * $++1143D3D3I3I kT\\ k kr   