
    P                     D   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  ej"                  ej$                  j&                  ej$                  j(                  ej$                  j*                         G d
 dej,                               Zy)zPerform maintenance command.    )absolute_import)division)unicode_literals)base_classes)base)flags)log)timesc                   0    e Zd ZdZdddZed        Zd Zy)PerformMaintenancez<Perform maintenance on nodes in a Compute Engine node group.z
       To perform maintenance on nodes in a node group, run:

         $ {command} my-node-group --nodes=node-1,node-2 --start-time=2023-05-01T00:00:00.000-08:00
     )briefEXAMPLESc                     t        j                         j                  |        t        j                  |        t        j                  |        y )N)r   MakeNodeGroupArgAddArgument%AddPerformMaintenanceNodesArgToParser)AddPerformMaintenanceStartTimeArgToParser)parsers    Clib/surface/compute/sole_tenancy/node_groups/perform_maintenance.pyArgszPerformMaintenance.Args,   s5    	((0	//7	33F;    c                    t        j                  | j                               }|j                  j                  }t        j                         j                  ||j                  t        j                  |j                              }|j                  |j                        }|j                  r$t        j                  |j                        |_        |j#                  ||j%                         |j&                  |j(                        }|j                  j*                  j,                  }|j/                  |      }|j                  j1                  |j2                  d      }	t4        j6                  j9                  dj;                  |j                  |j%                         |	j=                                      t4        j6                  j9                  d       |S )N)scope_lister)nodes)#nodeGroupsPerformMaintenanceRequest	nodeGroupprojectzonezcompute.zoneOperations)
collectionzJPerform maintenance call in progress for nodes [{}] in node group [{}]: {}zUUse [gcloud compute operations describe URI] to check the status of the operation(s).)r   ComputeApiHolderReleaseTrackclientmessagesr   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeLister#NodeGroupsPerformMaintenanceRequestr   
start_timer
   FormatDateTime	startTime*ComputeNodeGroupsPerformMaintenanceRequestNamer   r   apitools_client
nodeGroupsr   ParseselfLinkr	   statusPrintformatSelfLink)
selfargsholderr#   node_group_refperform_maintenancerequestservice	operationoperation_refs
             r   RunzPerformMaintenance.Run2   s   **4+<+<+>?F}}%%H++-??"88G @ IN
 #FFjj G  &+&:&:4??&K#AA,? %%'&&  	 B "G mm++66G**73I$$**'? + AMJJ	FJJ++-}/E/E/G
 JJ	 r   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   r?    r   r   r   r      s3     E N	- < <
$r   r   N)rC   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r&   ;googlecloudsdk.command_lib.compute.sole_tenancy.node_groupsgooglecloudsdk.corer	   googlecloudsdk.core.utilr
   ReleaseTracksr!   ALPHABETAGAUpdateCommandr   rF   r   r   <module>rS      s~    # &  ' 7 ( E M # * T..33T5F5F5I5I6++ 66r   