
    $                        S r SSKJr  SSKJr  SSKJr  SSK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  SS0rS rS rS r\
R0                  \
R2                  " \
R4                  R6                  5       " S S\
R8                  5      5       5       r\
R2                  " \
R4                  R<                  5       " S S\5      5       r\
R2                  " \
R4                  R@                  5       " S S\5      5       r!g)z&Create network endpoint group command.    )absolute_import)division)unicode_literalsN)base_classes)network_endpoint_groups)base)
exceptions)flags)scope)logEXAMPLESz|
To create a network endpoint group:

  $ {command} my-neg --zone=us-central1-a --network=my-network --subnet=my-subnetwork
c                 N    SnX;   a  SR                  U [        X   5      5      nU$ )N z- Type {0} must be specified in the {1} scope.)format_JoinWithOr)network_endpoint_typevalid_scopesvalid_scopes_error_messages      5lib/surface/compute/network_endpoint_groups/create.py_GetValidScopesErrorMessager   )   s5    !*7f{<+NO 
 
$#    c                     [         R                  " 5       nU R                  5        H7  u  p#U H,  nUR                  U[	        5       5      R                  U5        M.     M9     U$ )N)collectionsOrderedDictitems
setdefaultlistappend)dicnew_dickeyvaluesvalues        r   _Invertr$   4   sP    ##%'YY[kc'..s3  ! 
.r   c                     U (       d  g[        U 5      S:X  a  U S   $ [        U 5      S:X  a  U S   S-   U S   -   $ SR                  U SS 5      S	-   U S   -   $ )
zHJoins strings, for example, into a string like 'A or B' or 'A, B, or C'.r      r      z or z, Nz, or )lenjoin)stringss    r   r   r   <   se    	
7|q1:
7|q1:++99WSb\"W,wr{::r   c                   @    \ rS rSrSr\rSrSr\	S 5       r
S rS rSrg)	CreateH   z/Create a Compute Engine network endpoint group.Fc                     [         R                  " 5       R                  U5        [         R                  " UU R                  U R
                  S9  g N)support_neg_typesupport_serverless_deploymentr
   MakeNetworkEndpointGroupsArgAddArgumentAddCreateNegArgsToParserr1   r2   clsparsers     r   ArgsCreate.ArgsQ   <    	&&(44V<	""--&)&G&Gr   c                 "   [         R                  " U R                  5       5      nUR                  nUR                  R                  nUR
                  n[        R                  " X4U5      n[        R                  " 5       R                  UUR
                  [        R                  R                  [        R                  " UR                  5      S9nU R!                  X5        UR"                  (       aS  UR%                  UUR&                  UR(                  UR"                  UR*                  UR,                  UR.                  S9nGOU R0                  (       a  UR%                  UUR&                  UR(                  UR"                  UR*                  UR,                  UR2                  UR4                  UR6                  UR8                  UR:                  UR<                  UR>                  UR@                  URB                  URD                  URF                  URH                  URJ                  UR.                  S9nOUR%                  UUR&                  UR(                  UR"                  UR*                  UR,                  UR2                  UR4                  UR6                  UR8                  UR:                  UR<                  UR>                  UR@                  URB                  UR.                  S9n[L        RN                  " URQ                  5       S5        U$ )zCIssues the request necessary for adding the network endpoint group.)default_scopescope_lister)default_portproducer_portnetworksubnetpsc_target_service)r@   rA   rB   rC   cloud_run_servicecloud_run_tagcloud_run_url_maskapp_engine_appapp_engine_serviceapp_engine_versionapp_engine_url_maskcloud_function_namecloud_function_url_maskserverless_deployment_platformserverless_deployment_resourceserverless_deployment_versionserverless_deployment_url_maskrD   )r@   rA   rB   rC   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rD   znetwork endpoint group))r   ComputeApiHolderReleaseTrackclientmessages	resourcesr   NetworkEndpointGroupsClientr
   r4   ResolveAsResourcecompute_scope	ScopeEnumZONEcompute_flagsGetDefaultScopeLister_ValidateNEGrA   r-   r   r@   rB   rC   rD   r2   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r   CreatedResourceName)	selfargsholderrT   rU   rV   
neg_clientneg_refresults	            r   Run
Create.RunZ   s   **4+<+<+>?F]]F}}%%H  I(DD)J 002DD#--22"88G	 E G 	d$  


$
$((**,,!44 ! f 
	+	+  


$
$((**,, 22**!44,,!44!44"66"66"&">">)-)L)L)-)L)L(,(J(J)-)L)L!44) ! f.   


$
$((**,, 22**!44,,!44!44"66"66"&">">!44! ! f& (@AMr   c           
          [        US5      n[        US5      nUR                  n[        R                  " 5       nS/US'   S/US'   SS/US'   SS/US	'   S/US
'   S/US'   S/US'   S/US'   [	        U5      nU(       aD  US   nXX;  a9  [
        R                  " SSR                  [        U5      [        XV5      5      5      egU(       as  US   n	XY;  a9  [
        R                  " SSR                  [        U	5      [        XV5      5      5      eUS:X  a)  UR                  (       d  [
        R                  " SS5      eggUS   n
XZ;  a9  [
        R                  " SSR                  [        U
5      [        XV5      5      5      eg)z)Validate NEG input before making request.zoneregionzonalzgce-vm-ip-portregionalzgce-vm-ip-portmapglobalzinternet-ip-portzinternet-fqdn-port
serverlesszprivate-service-connectznon-gcp-private-ip-portz	gce-vm-ipz--network-endpoint-typez9Zonal NEGs only support network endpoints of type {0}.{1}z<Regional NEGs only support network endpoints of type {0}.{1}z--private-service-connectzhNetwork endpoint type private-service-connect must specify --psc-target-service for private service NEG.z:Global NEGs only support network endpoints of type {0}.{1}N)hasattrr   r   r   r$   r	   InvalidArgumentExceptionr   r   r   rD   )ra   rb   re   is_zonalis_regionalr   r   valid_scopes_invertedvalid_zonal_typesvalid_regional_typesvalid_global_typess              r   r^   Create._ValidateNEG   s   w'H'8,K 66**,L&-YL!")3L$%(0*'=L#$*2J)?L%&",L/9lL*+/6iL*+!(	L#L1/8		711%GNN-.+)
 	
 
8 
2:>		:11%JV01+)	
 		
  #<
<))11'@
 	
 * = 1:		811%HOO./+)
 	
 
9r    N)__name__
__module____qualname____firstlineno____doc__DETAILED_HELPdetailed_helpr1   r2   classmethodr:   rg   r^   __static_attributes__ry   r   r   r-   r-   H   s7     8-"' HTH
r   r-   c                   ,    \ rS rSrSrSr\S 5       rSrg)
CreateBeta   6Create a Google Compute Engine network endpoint group.Tc                     [         R                  " 5       R                  U5        [         R                  " UU R                  U R
                  S9  g r0   r3   r7   s     r   r:   CreateBeta.Args   r<   r   ry   N)	rz   r{   r|   r}   r~   r2   r   r:   r   ry   r   r   r   r      s    >"& r   r   c                   ,    \ rS rSrSrSr\S 5       rSrg)CreateAlpha   r   Tc                     [         R                  " 5       R                  U5        [         R                  " UU R                  U R
                  S9  g r0   r3   r7   s     r   r:   CreateAlpha.Args  r<   r   ry   N)	rz   r{   r|   r}   r~   r1   r   r:   r   ry   r   r   r   r      s    > r   r   )"r~   
__future__r   r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r\   r   rY   :googlecloudsdk.command_lib.compute.network_endpoint_groupsgooglecloudsdk.corer   r   r   r$   r   UniverseCompatibleReleaseTracksrS   GACreateCommandr-   BETAr   ALPHAr   ry   r   r   <module>r      s    - &  '  7 B ( . E E L #  $	; D%%(()b
T b
 * b
J D%%**+  , D%%++,*  -r   