
                            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iZd Zd Zd Z ej4                  ej6                  j8                        ej:                   G d dej<                                      Z ej4                  ej6                  j@                         G d de             Z! ej4                  ej6                  jD                         G d de             Z#y)z'Command for labels update to snapshots.    )absolute_import)division)unicode_literals)base_classes)poller)waiter)base)flags)scope)labels_utilEXAMPLESa6          To update labels ``k0'' and ``k1'' and remove labels with key ``k3'', run:

          $ {command} example-snapshot --update-labels=k0=value1,k1=value2 --remove-labels=k3

          ``k0'' and ``k1'' will be added as new labels if not already present.

        Labels can be used to identify the snapshot and to filter them like:

          $ {parent_command} list --filter='labels.k1:value2'

        To list only the labels when describing a resource, use --format:

          $ {parent_command} describe example-snapshot --format="default(labels)"
        c                     t        j                         t        _        t        j                  j	                  | d       t        j                  |        yz Set Args based on Release Track.update)operation_typeN)snapshots_flagsMakeSnapshotArgUpdateSnapshotArgAddArgumentr   AddUpdateLabelsFlagsparsers    'lib/surface/compute/snapshots/update.py_GAArgsr   2   s:    &668&   A""6*    c                     t        j                         t        _        t        j                  j	                  | d       t        j                  |        yr   r   #MakeSnapshotArgForRegionalSnapshotsr   r   r   r   r   r   s    r   	_BetaArgsr    9   :    &JJL&   A""6*r   c                     t        j                         t        _        t        j                  j	                  | d       t        j                  |        yr   r   r   s    r   
_AlphaArgsr#   @   r!   r   c                   2    e Zd ZdZeZed        Zd ZddZ	y)r   zaUpdate a Compute Engine snapshot.

  *{command}* updates labels for a Compute Engine snapshot.
  c                     t        |        y N)r   r   s    r   ArgszUpdate.ArgsQ   s	    FOr   c                 $    | j                  |      S r&   _Runselfargss     r   Runz
Update.RunU   s    99T?r   c           	      `   t        j                  | j                               }|j                  j                  }|j                  j
                  }t        j                  j                  ||j                  t        j                  |j                        t        j                  j                        }|r|j                         dk(  ryt!        j"                  |      }|j$                  j'                   |j(                  d
i |j+                               }|j-                  |j.                  j0                  |j2                        }	|	j4                  s|S |j7                  |j8                  |j:                  |j<                  |j/                  |j>                  |	j2                              }
|j$                  jA                  |
      }|j                  jC                  |jD                  d      }tG        jH                  |j$                        }tK        jL                  ||djO                  |jQ                                     S t!        j"                  |      }|jR                  j'                   |jT                  d
i |j+                               }|j-                  |jV                  j0                  |j2                        }	|	j4                  s|S |jY                  |j8                  |j:                  |jW                  |j>                  |	j2                              }
|jR                  jA                  |
      }|j                  jC                  |jD                  d	      }tG        jH                  |jR                        }tK        jL                  ||djO                  |jQ                                     S )N)scope_listerdefault_scopezcompute.regionSnapshots)labelFingerprintlabels)projectresourceregionregionSetLabelsRequestzcompute.regionOperations)
collectionz!Updating labels of snapshot [{0}])r4   r5   globalSetLabelsRequestzcompute.globalOperations )-r   ComputeApiHolderReleaseTrackclientapitools_clientmessagesr   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListercompute_scope	ScopeEnumGLOBAL
Collectionr   GetAndValidateOpsFromArgsregionSnapshotsGet ComputeRegionSnapshotsGetRequestAsDictApplyRegionSetLabelsRequestLabelsValuer3   needs_update&ComputeRegionSnapshotsSetLabelsRequestr4   snapshotr6   r2   	SetLabelsParseselfLinkr   Pollerr   WaitForformatName	snapshotsComputeSnapshotsGetRequestGlobalSetLabelsRequest ComputeSnapshotsSetLabelsRequest)r,   r-   support_regionholderr=   r?   snapshot_reflabels_diffregional_snapshotlabels_updaterequest	operationoperation_refoperation_pollerrR   s                  r   r*   zUpdate._RunX   s?   **4+<+<+>?F]]**F}}%%H%%77"88G#--44	 8 7L 	##%)BB99$?k 0044
3(
3
3
Ll6I6I6K
L "''

)
)
5
57H7O7Om ''  ??&&(($$!)!@!@0AA")) "A "	 @ g ((227;i&&,,


)C - m  v'='=>^^


-
4
4\5F5F5H
I   99$?k!!%%
-(
-
-
F0C0C0E
Fh "''

)
)
5
5xm ''99&&((

)
)'88")) * +	 : ,g "",,W5i&&,,


)C - Em  v'7'78^^
M
-
4
4!#$ $r   N)F)
__name__
__module____qualname____doc__DETAILED_HELPdetailed_helpstaticmethodr'   r.   r*   r:   r   r   r   r   G   s+    
  - N$r   r   c                   &    e Zd ZdZed        Zd Zy)
UpdateBeta!Update a Compute Engine snapshot.c                     t        |        y r&   )r    r   s    r   r'   zUpdateBeta.Args   s
    fr   c                 (    | j                  |d      S NT)r^   r)   r+   s     r   r.   zUpdateBeta.Run       99   r   Nrh   ri   rj   rk   rn   r'   r.   r:   r   r   rp   rp      s    ) r   rp   c                   &    e Zd ZdZed        Zd Zy)UpdateAlpharq   c                     t        |        y r&   )r#   r   s    r   r'   zUpdateAlpha.Args   s
    vr   c                 (    | j                  |d      S rt   r)   r+   s     r   r.   zUpdateAlpha.Run   ru   r   Nrv   r:   r   r   rx   rx      s    ) r   rx   N)$rk   
__future__r   r   r   googlecloudsdk.api_lib.computer   )googlecloudsdk.api_lib.compute.operationsr   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   "googlecloudsdk.command_lib.computer
   rB   r   rD   ,googlecloudsdk.command_lib.compute.snapshotsr   $googlecloudsdk.command_lib.util.argsr   rl   r   r    r#   ReleaseTracksr<   GAUniverseCompatibleUpdateCommandr   BETArp   ALPHArx   r:   r   r   <module>r      s    . &  ' 7 < . ( E E Q < 	(+++ D%%(()]$T ]$  *]$@ D%%**+  , D%%++,&  -r   