
                         P   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  e
j"                  e
j$                  j&                  e
j$                  j(                  e
j$                  j*                         G d de
j,                               Zy)zCreate node group command.    )absolute_import)division)unicode_literals)base_classes)utils)base)
exceptions)flags)utilc                   0    e Zd ZdZdddZed        Zd Zy)Createz#Create a Compute Engine node group.z
         To create a node group, run:

           $ {command} my-node-group --node-template=example-template --target-size=4
       )briefEXAMPLESc                 J   t        j                         j                  |        t        j                  |        t        j                  | d       t        j
                  |        t        j                  |        t        j                  |        t        j                  |        y )NT)required_mode)	r
   MakeNodeGroupArgAddArgumentAddCreateArgsToParserAddAutoscalingPolicyArgToParserAddMaintenanceWindowArgToParserAddLocationHintArgToParserAddShareSettingArgToParser!AddMaintenanceIntervalArgToParser)parsers    6lib/surface/compute/sole_tenancy/node_groups/create.pyArgszCreate.Args-   so    	((0	'	))&E	))&1	$$V,	$$V,	++F3    c                    t        j                  | j                               }|j                  }|j                  j                  }t        j                         j                  ||j                  t        j                  |j                              }t        j                  |j                  |j                  |j                  t        j                   |j"                              }|j%                  |j'                         |j(                  |j+                               }t-        |d      r7t        j.                  |      }|j1                  |j2                        }	|	|_        t-        |d      r7t        j6                  |      }|j1                  |j8                        }
|
|_        t-        |d      rZ|j<                  rN|j<                  dk7  r"|j>                  tA        jB                  dd	      t        jD                  ||      }||_#        |jH                  r!|jK                  |jH                  
      |_&        t-        |d      r|jN                  r|jN                  |_(        |jR                  rt        jT                  ||      |_+        |jY                  ||jZ                  |j                  |j"                        }|j                  j\                  j^                  }|ja                  |d|fg      d   S )N)scope_lister)projectregion)namedescriptionnodeTemplatemaintenance_policymaintenance_intervalautoscaler_modeoffz--max-nodesz--autoscaler-mode is on)	startTimelocation_hint)	nodeGroupinitialNodeCountr    zoneInsertr   )1r   ComputeApiHolderReleaseTrackclientmessagesr
   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerr   ParseNodeTemplatenode_templater    compute_utilsZoneNameToRegionNamer-   	NodeGroupNamer#   SelfLinkhasattrGetMaintenancePolicyEnumMapperGetEnumForChoicer%   maintenancePolicy GetMaintenanceIntervalEnumMapperr&   maintenanceIntervalr'   	max_nodesr	   RequiredArgumentExceptionBuildAutoscalingautoscalingPolicymaintenance_window_start_timeNodeGroupMaintenanceWindowmaintenanceWindowr*   locationHintshare_settingBuildShareSettingsshareSettingsComputeNodeGroupsInsertRequesttarget_sizeapitools_client
nodeGroupsMakeRequests)selfargsholderr1   r2   node_group_refnode_template_ref
node_groupmapperr%   r&   autoscaling_policyrequestservices                 r   Runz
Create.Run7   s   **4+<+<+>?F]]F}}%%H++-??f"88G @ IN ..&&11.2E2EF	H ##  "$$&//1 $ 3J
 t)*33H=f!2243J3JK%7j"t+,55h?f#44T5N5NO';j$t&'D,@,@				&4>>+A22=3LN 	N00x@%7j"))%-%H%H66 &I &8j" t_%$*<*< $ 2 2j!%!8!84!Hj55))&&  	 6 "G mm++66G(G <=>qAAr   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   r^    r   r   r   r      s2     , 5- 4 45Br   r   N)rb   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   r9   googlecloudsdk.callioper   r	   "googlecloudsdk.command_lib.computer
   r5   ;googlecloudsdk.command_lib.compute.sole_tenancy.node_groupsr   ReleaseTracksr0   ALPHABETAGACreateCommandr   re   r   r   <module>rp      s    ! &  ' 7 A ( . E M L T..33T5F5F5I5IKBT KBKBr   