
                         F   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 ddlmZ ddlmZ ej(                   ej*                  ej,                  j.                         G d dej0                                      Zddde_        y)z$Command for creating Gateway spokes.    )absolute_import)division)unicode_literals)networkconnectivity_api)networkconnectivity_util)apis)waiter)base)flags)labels_util)log)	resourcesc                   &    e Zd ZdZed        Zd Zy)Createz=Create a new Gateway spoke.

  Create a new Gateway spoke.
  c                 ,   t        j                  dd      }t        j                  | dt        j                  j
                         t        j                  | ddd       t        j                  |        t        j                  | d       t        j                  | d       t        j                  |        t        j                  |        t        j                  |j                  |        t        j                  |        t        j                   |        y )	Nnetworkconnectivityv1betaz	to createFT)supports_region_wildcardhiddenrequired)r   z#Description of the spoke to create.)r   GetMessagesModuler   AddSpokeResourceArgResourceLocationTypeREGION_ONLYAddRegionFlag
AddHubFlagAddGroupFlagAddDescriptionFlagAddAsyncFlagAddLandingNetworkFlagAddCapacityFlag+GoogleCloudNetworkconnectivityV1betaGatewayAddIpRangeReservationsFlagr   AddCreateLabelsFlags)parsermessagess     :lib/surface/network_connectivity/spokes/gateways/create.pyArgszCreate.Args)   s    %%&;XFH	U77CC 
ut 
V	v-	V%JK	v	'	<<f 
$$V,$$V,    c           	      $	   t        j                  | j                               }|j                  j                  j                         }| j                         t        j                  j                  k(  rJt        j                  ||j                  j                  j                        }|j                  D cg c]  }|j                  j                  |        }}|j                  r'|j                  j!                  |j                        }nd }|j                  j                  |j"                  |j$                  |j                  j'                  t)        j*                  |j                  j&                        j-                  |j.                        ||      |j0                  |      }|j3                  ||      }	nHt        j                  ||j                  j4                  j                        }|j                  D cg c]  }|j                  j7                  |        }}|j                  r'|j                  j9                  |j                        }nd }|j                  j5                  |j"                  |j$                  |j                  j;                  t)        j*                  |j                  j:                        j-                  |j.                        ||      |j0                  |      }|j=                  ||      }	t>        j@                  jC                  djE                  |jG                                      |	jH                  r't?        jJ                  |jG                         d       |	S |jL                  r:t>        j@                  jC                  d	jE                  |	jN                               |	S tP        jR                  jU                  |	jN                  d
tV        jX                  | j                                  }
t[        j\                  |j^                  |j`                        }t[        jb                  ||
djE                  |	jN                              }t?        jJ                  |jG                         d       |S c c}w c c}w )N)release_track)ipRange)network)capacitylandingNetworkipRangeReservations)hubgroupgatewaydescriptionlabelszCreate request issued for: [{}]spoke)kindz Check operation [{}] for status.z1networkconnectivity.projects.locations.operations)
collectionapi_versionz&Waiting for operation [{}] to complete)2r   SpokesClientReleaseTrackCONCEPTSr6   Parser
   BETAr   ParseCreateArgsr&   )GoogleCloudNetworkconnectivityV1betaSpokeLabelsValueip_range_reservations6GoogleCloudNetworkconnectivityV1betaIpRangeReservationlanding_network2GoogleCloudNetworkconnectivityV1betaLandingNetworkr1   r2   r"   r   GetCapacityArgGetEnumForChoicer.   r4   CreateSpokeBetaSpokeIpRangeReservationLandingNetworkGatewayCreateSpoker   statusPrintformatNamedoneCreatedResourceasync_namer   REGISTRYParseRelativeNamer   VERSION_MAPr	   CloudOperationPollerspoke_serviceoperation_serviceWaitFor)selfargsclient	spoke_refr5   ip_rangerange_reservationsrD   r6   op_refop_resourcepollerress                r'   Runz
Create.Run>   s   $11'')F ##))+Id//444**

//
C
C
O
Of 44	 5h //
P
P Q  5	   
		OONN,, O  	 ooGGhh

//MM++//MM  /,"4 N  && H e %%i7f**
%%11f 444h //
,
,X
,
>4  
 
		 //88(( 9 
 oo##hh

//))++//))  /,"4 *  && $ e !!)U3fJJ6==inn>NOP{{	)..*9m{{	jj9@@MNm$$66F,889J9J9LM 7 K
 ((f66F ..077DC
 	(w7JmFs   7#R#RN)__name__
__module____qualname____doc__staticmethodr(   rg    r)   r'   r   r   !   s!    
 - -(cr)   r   a`     To create a Gateway spoke named ``myspoke'' in us-central1, with a capacity of 10 Gbps and IP range reservations of 10.1.1.0/24

    $ {command} myspoke --hub=my-hub --region us-central1 --group gateways --capacity 10g --ip-range-reservations 10.1.1.0/24

  To create a Gateway spoke named ``myspoke'' in us-central1, with a capacity of 10 Gbps, IP range reservations of 10.1.1.0/24 and 10.1.2.0/24, and a landing network of my-vpc, run:

    $ {command} myspoke --hub=my-hub --region us-central1 --group gateways --capacity 10g --ip-range-reservations 10.1.1.0/24,10.1.2.0/24  --landing-network my-vpc
  z   This command uses the networkconnectivity/v1 API. The full documentation
  for this API can be found at:
  https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest
  )EXAMPLESzAPI REFERENCEN)rk   
__future__r   r   r   +googlecloudsdk.api_lib.network_connectivityr   r   googlecloudsdk.api_lib.utilr   r	   googlecloudsdk.callioper
   /googlecloudsdk.command_lib.network_connectivityr   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   r   DefaultUniverseOnlyReleaseTracksr;   r>   Commandr   detailed_helprm   r)   r'   <module>rz      s     + &  ' O P , . ( A < # ) D%%**+~T\\ ~ , ~D r)   