
    L                         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dlZ G d dej(                        Z G d de
j,                        Zy)zThe Stop command.    )absolute_import)division)unicode_literals)appengine_api_client)operations_util)version_util)base)
exceptions)log)
console_io)progress_tracker)resource_printerNc                       e Zd ZdZy)VersionsStopErrorz(Errors occurring when stopping versions.N)__name__
__module____qualname____doc__      lib/surface/app/versions/stop.pyr   r   "   s    0r   r   c                   .    e Zd ZdZddiZed        Zd Zy)StopzStop serving specified versions.

  This command stops serving the specified versions. It may only be used if the
  scaling module for your service has been set to manual.
  EXAMPLESa@            To stop a specific version across all services, run:

            $ {command} v1

          To stop multiple named versions across all services, run:

            $ {command} v1 v2

          To stop a single version on a single service, run:

            $ {command} --service=servicename v1

          To stop multiple versions in a single service, run:

            $ {command} --service=servicename v1 v2

          Note that that last example may be more simply written using the
          `services stop` command (see its documentation for details).
          c                 T    | j                  ddd       | j                  ddd       y )	Nversions+zAThe versions to stop (optionally filtered by the --service flag).)nargshelpz	--servicez-sz8If specified, only stop versions from the given service.)r   )add_argument)parsers    r   Argsz	Stop.ArgsE   s9    

#K  N
T/  1r   c                 \   t        j                  | j                               }|j                         }t	        j
                  |j                  |      |j                  |j                        }|r?d}t        j                  ||t        j                         t        j                  d       nt        j                  d       g }t!        |t"              D ]g  }	 t%        j&                  dj)                  |            5  t+        j,                  |j.                  |j                  |j0                  d       d d d        i |rt;        d	j=                  |            y # 1 sw Y   (xY w# t*        j2                  $ r.}|j5                  t7        j8                  |             Y d }~d }~ww xY w)
Nz.list[title="Stopping the following versions:"])outT)cancel_on_nozNo matching versions found.)keyzStopping [{0}])blockz

)r   GetApiClientForTrackReleaseTrackListServicesr   GetMatchingVersionsListVersionsr   servicer   Printr   statusr   PromptContinuewarningsortedstrr   ProgressTrackerformatr   CallAndCollectOpErrorsStopVersionidMiscOperationErrorappendsix	text_typer   join)	selfargs
api_clientservicesr   fmterrorsversionerrs	            r   RunzStop.RunM   sJ    &::4;L;L;NOJ&&(H//)t||%H <cXs

;T2	kk/0F(,*--.>.E.Eg.NO

0
0$$goowzzO P - fkk&122  PO // *cmmC())*s0   $E*?8E7E*E'	#E**F+=$F&&F+N)r   r   r   r   detailed_helpstaticmethodr"   rF   r   r   r   r   r   '   s1      -. 1 13r   r   )r   
__future__r   r   r   googlecloudsdk.api_lib.appr   r   r   googlecloudsdk.callioper	   googlecloudsdk.corer
   r   googlecloudsdk.core.consoler   r   googlecloudsdk.core.resourcer   r;   Errorr   Commandr   r   r   r   <module>rQ      sU      &  ' ; 6 3 ( * # 2 8 9 

(( 
@34<< @3r   