
    %                        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 dZ ej.                  ej0                  j2                  ej0                  j4                  ej0                  j6                         G d dej8                               Zdddj=                  ddd      de_        y)zGCommand for simulating maintenance events on virtual machine instances.    )absolute_import)division)unicode_literals)base_classes)poller)waiter)arg_parsers)base)flags)
exceptions)logi m c                   &    e Zd ZdZed        Zd Zy)SimulateMaintenanceEventz2Simulate maintenance of virtual machine instances.c                     t         j                  j                  |        t        j                  j                  |        | j                  dt        j                         dd       y )Nz--with-extended-notificationsFz`Send an extended notification before simulating a host maintenance event on a Compute Engine VM.)typerequiredhelp)	instance_flagsINSTANCES_ARGAddArgumentr
   
ASYNC_FLAGAddToParseradd_argumentr	   
ArgBoolean)parsers    ;lib/surface/compute/instances/simulate_maintenance_event.pyArgszSimulateMaintenanceEvent.Args(   sR      ,,V4OO'
'##%8      c           
         t        j                  | j                               }|j                  j                  }|j                  j
                  }t        j                  j                  ||j                  t        j                  |j                              }g }|j                  rg|D ]a  }|j                  |j                         |j                  |j                  |j                         }|j#                  |j$                  d|f       c nE|D ]@  } |j                  di |j'                         }|j#                  |j$                  d|f       B g }	|j                  j)                  ||	      }
|
D ]@  }t+        |dd       }|s|	j#                  t-        j.                  |j0                               B |	rt3        j4                  |	      |
D cg c]'  }|j                  j7                  |j8                        ) }}|j:                  rNt=        |      D ]>  \  }}t?        j@                  |djC                  ||   j                               dd       @ |
S t-        jD                  |j                  |j$                  |      }tG        jH                  |t-        jJ                  |      d	jC                  d
jM                  d |D                    tN        tN              S c c}w )N)scope_lister)instanceprojectwithExtendedNotificationszoner   errorzgce instance [{0}]TzWUse [gcloud compute operations describe] command to check the status of this operation.)kindis_asyncdetailsz+Simulating maintenance on instance(s) [{0}]z, c              3   <   K   | ]  }|j                           y w)N)SelfLink).0is     r   	<genexpr>z/SimulateMaintenanceEvent.Run.<locals>.<genexpr>r   s     :MqajjlMs   )max_wait_mswait_ceiling_ms )(r   ComputeApiHolderReleaseTrackclientapitools_clientmessagesr   r   ResolveAsResource	resourcesr   GetDefaultScopeListerwith_extended_notifications/ComputeInstancesSimulateMaintenanceEventRequestNamer"   r$   append	instancesAsDictAsyncRequestsgetattrr   OperationErrorserrorscore_exceptions
MultiErrorParseselfLinkasync_	enumerater   UpdatedResourceformatBatchPollerr   WaitForOperationBatchjoin%SIMULATE_MAINTENANCE_EVENT_TIMEOUT_MS)selfargsholderr3   r5   instance_refsrequestsinstance_refrequesterrors_to_collect	responsesrerroperation_refsr,   operation_refoperation_pollers                    r   RunzSimulateMaintenanceEvent.Run6   s   **4+<+<+>?F]]**F}}%%H"00BB00? C M H''',JJ!&&( ((&*&F&F""	 K 
 	))+EwOP ( (,J(JJ 
!!#
 	))+EwOP	 ( ++H6GHIAw%c	  !7!7

!CD  &&'899BKL)Qf&&,,QZZ8)NL{{'7
!]%,,]1-=-B-B-DE9	
 8 ))v'' >>n-5<<II:M::	
 := % Ms   ,KN)__name__
__module____qualname____doc__staticmethodr   r^   r0   r   r   r   r   "   s     ; @r   r   z)Simulate host maintenance of VM instancesz        *{command}* simulates a host maintenance event on a
        Compute Engine VM. For more information, see
        https://cloud.google.com/compute/docs/instances/simulating-host-maintenance.
        z        To simulate a maintenance event on an instance named ``{0}''
        located in zone ``{1}'', run:

          $ {2} {0} --zone={1}
        ztest-instancez
us-east1-dz	{command})briefDESCRIPTIONEXAMPLESN) rb   
__future__r   r   r   googlecloudsdk.api_lib.computer   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   r
   "googlecloudsdk.command_lib.computer   ,googlecloudsdk.command_lib.compute.instancesr   googlecloudsdk.corer   rC   r   rO   ReleaseTracksr2   ALPHABETAGAUpdateCommandr   rJ   detailed_helpr0   r   r   <module>ru      s    N &  ' 7 < . / ( 4 P = #(/ % T..33T5F5F5I5IQt11 QQj 9

 F?L+>*  &r   