
                            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	 Z e	j                   e	j"                  j$                         G d
 de	j&                               Z e	j                   e	j"                  j*                         G d de             Z e	j                   e	j"                  j.                         G d de             Zdddde_        y)z Delete instant snapshot command.    )absolute_import)division)unicode_literals)base_classes)utils)base)flagsc                     t        j                  d      t        _        t        j                  j	                  | d       y)z?A helper function to build args based on different API version.T)pluraldelete)operation_typeN)	ips_flagsMakeInstantSnapshotArgDeleteips_argAddArgument)parsers    /lib/surface/compute/instant_snapshots/delete.py_CommonArgsr      s+    334@&...VH=    c                   8    e Zd ZdZd Zd Zed        Zd Zd Z	y)r   z(Delete Compute Engine instant snapshots.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>(   s     84C73'4   c              3   4   K   | ]  }t        |d         yw)regionNr   r   s     r   r    z4Delete._GetCommonScopeNameForRefs.<locals>.<genexpr>)   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 )z8Returns a list of delete messages for instant snapshots.zcompute.instantSnapshots)instantSnapshotprojectr   zcompute.regionInstantSnapshots)r+   r,   r#   zUnknown reference type {0}r   )MESSAGES_MODULE
CollectioninstantSnapshots$ComputeInstantSnapshotsDeleteRequestNamer,   r   regionInstantSnapshots*ComputeRegionInstantSnapshotsDeleteRequestr#   
ValueErrorformatappend)r%   clientips_refsmessagesrequestsips_refservicerequests           r   _CreateDeleteRequestszDelete._CreateDeleteRequests2   s     %%HH				!;	;))??#LLNOO @  #CC//EE#LLNOO>> F #
 5<< " # 	# oow'23# $ Or   c                     t        |       y Nr   clsr   s     r   ArgszDelete.ArgsK   
    r   c                    t        j                  | j                               }t        j                  j                  ||j                  t        j                  |j                              }| j                  |      }t        j                  ||d        t        | j                  |j                  j                  |            }|j                  j!                  |      S )N)scope_lister)
scope_nameprompt_title)r   ComputeApiHolderReleaseTrackr   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerr7   r)   r   PromptForDeletionlistr>   apitools_clientMakeRequests)r%   argsholderr8   rH   r:   s         r   _RunzDelete._RunO   s    **4+<+<+>?F~~//"88G 0 H 00:J	H$O""6==#@#@(KMH ==%%h//r   c                 $    | j                  |      S r@   rV   r%   rT   s     r   Runz
Delete.Runa       99T?r   N)
__name__
__module____qualname____doc__r)   r>   classmethodrD   rV   rZ    r   r   r   r   "   s-    0
2  0$r   r   c                   &    e Zd ZdZed        Zd Zy)
DeleteBetaz0Delete Compute Engine instant snapshots in beta.c                     t        |       y r@   rA   rB   s     r   rD   zDeleteBeta.Argsi   rE   r   c                 $    | j                  |      S r@   rX   rY   s     r   rZ   zDeleteBeta.Runm   r[   r   Nr\   r]   r^   r_   r`   rD   rZ   ra   r   r   rc   rc   e   s    8 r   rc   c                   &    e Zd ZdZed        Zd Zy)DeleteAlphaz1Delete Compute Engine instant snapshots in alpha.c                     t        |       y r@   rA   rB   s     r   rD   zDeleteAlpha.Argsu   rE   r   c                 $    | j                  |      S r@   rX   rY   s     r   rZ   zDeleteAlpha.Runy   r[   r   Nrf   ra   r   r   rh   rh   q   s    9 r   rh   z(Delete a Compute Engine instant snapshotz        *{command}* deletes a Compute Engine instant snapshot. A disk can be
        deleted only if it is not attached to any virtual machine instances.
        a          To delete Compute Engine instant snapshots with the names 'instant-snapshot-1'
        and 'instant-snapshot-2', run:

          $ {command} instant-snapshot-1 instant-snapshot-2

        To list all instant snapshots that were created before a specific date, use
        the --filter flag with the `{parent_command} list` command.

          $ {parent_command} list --filter="creationTimestamp<'2017-01-01'"

        For more information on how to use --filter with the list command,
        run $ gcloud topic filters.
        )briefDESCRIPTIONEXAMPLESN)r_   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   rN   4googlecloudsdk.command_lib.compute.instant_snapshotsr   r   ReleaseTracksrK   GADeleteCommandr   BETArc   ALPHArh   detailed_helpra   r   r   <module>ry      s    ' &  ' 7 0 ( E S> D%%(()?T ? *?D D%%**+  , D%%++,&  - 8 r   