
                         f   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dddde_        y)zCommand for deleting disks.    )absolute_import)division)unicode_literals)base_classes)utils)base)
completers)flags)scopec                   2    e Zd ZdZed        Zd Zd Zd Zy)DeletezDelete Compute Engine persistent disks.

  *{command}* deletes one or more Compute Engine
  persistent disks. Disks can be deleted only if they are not
  being used by any virtual machine instances.
  c                     t        j                  d      t        _        t        j                  j	                  | d       | j
                  j                  t        j                         y )NT)pluraldelete)operation_type)	disks_flagsMakeDiskArgr   	disks_argAddArgumentdisplay_infoAddCacheUpdaterr	   DisksCompleter)parsers    #lib/surface/compute/disks/delete.pyArgszDelete.Args(   sH    "..d;F
   A
''
(A(AB    c                 `    t        d |D              }t        d |D              }|r|sy|r|syy)z!Gets common scope for references.c              3   4   K   | ]  }t        |d         yw)zoneNhasattr.0refs     r   	<genexpr>z4Delete._GetCommonScopeNameForRefs.<locals>.<genexpr>0   s     84C73'4   c              3   4   K   | ]  }t        |d         yw)regionNr    r"   s     r   r%   z4Delete._GetCommonScopeNameForRefs.<locals>.<genexpr>1   s     <tWS(+tr&   r   r(   N)any)selfrefshas_zone
has_regions       r   _GetCommonScopeNameForRefsz!Delete._GetCommonScopeNameForRefs.   s5    8488H<t<<J
	Hr   c                     |j                   }g }|D ]  }|j                         dk(  rC|j                  }|j                  |j	                         |j
                  |j                        }n~|j                         dk(  rC|j                  }|j                  |j	                         |j
                  |j                        }n(t        dj                  |j                                     |j                  |d|f        |S )z,Returns a list of delete messages for disks.zcompute.disks)diskprojectr   zcompute.regionDisks)r0   r1   r(   zUnknown reference type {0}r   )MESSAGES_MODULE
CollectiondisksComputeDisksDeleteRequestNamer1   r   regionDisksComputeRegionDisksDeleteRequestr(   
ValueErrorformatappend)r*   client	disk_refsmessagesrequestsdisk_refservicerequests           r   _CreateDeleteRequestszDelete._CreateDeleteRequests:   s     %%HH				/	1,,44$$ 5    $99$$::$$?? ; $
 5 3 3 568 	8 oow'23# $ Or   c                    t        j                  | j                               }t        j                  j                  ||j                  t        j                  j                  t        j                  |j                              }| j                  |      }t        j                  ||d        t!        | j#                  |j                  j$                  |            }|j                  j'                  |      S )N)default_scopescope_lister)
scope_nameprompt_title)r   ComputeApiHolderReleaseTrackr   r   ResolveAsResource	resourcescompute_scope	ScopeEnumZONEr
   GetDefaultScopeListerr<   r.   r   PromptForDeletionlistrC   apitools_clientMakeRequests)r*   argsholderr=   rG   r?   s         r   Runz
Delete.RunS   s    **4+<+<+>?F  22f#--2200? 3 AI
 00;J	jt= D..%%y2 3H ==%%h//r   N)	__name__
__module____qualname____doc__staticmethodr   r.   rC   rW    r   r   r   r      s,     C C

20r   r   zDelete a Compute Engine diskz        *{command}* deletes a Compute Engine disk. A disk can be
        deleted only if it is not attached to any virtual machine instances.
        z{        To delete the disk 'my-disk' in zone 'us-east1-a', run:

            $ {command} my-disk --zone=us-east1-a
        )briefDESCRIPTIONEXAMPLESN)r[   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   r
   r   rM   (googlecloudsdk.command_lib.compute.disksr   ReleaseTracksrJ   GABETAALPHADeleteCommandr   detailed_helpr]   r   r   <module>rl      s    " &  ' 7 0 ( 9 4 E I $++00$2C2C2I2IKC0T C0KC0L ,	
	 r   