
                         N   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mZ d Zd Zd Z ej6                  ej8                  j:                        ej<                   G d dej>                                      Z  ej6                  ej8                  jB                         G d de              Z" ej6                  ej8                  jF                         G d de              Z$ ejJ                  d      e _&        y)z'Command for adding labels to snapshots.    )absolute_import)division)unicode_literals)base_classes)poller)waiter)base)flags)labels_doc_helper)labels_flags)scope)labels_utilc                     t        j                         t        _        t        j                  j	                  |        t        j                  |        y)z3A helper function to build args for GA API version.N)snapshots_flagsMakeSnapshotArgSnapshotsAddLabelsSnapshotArgAddArgumentr   AddArgsForAddLabelsparsers    +lib/surface/compute/snapshots/add_labels.py_GAArgsr   !   s6    #2#B#B#D   ,,V4""6*    c                     t        j                         t        _        t        j                  j	                  |        t        j                  |        y)z5A helper function to build args for Beta API version.Nr   #MakeSnapshotArgForRegionalSnapshotsr   r   r   r   r   r   s    r   	_BetaArgsr   (   <     99;     ,,V4""6*r   c                     t        j                         t        _        t        j                  j	                  |        t        j                  |        y)z6A helper function to build args for Alpha API version.Nr   r   s    r   
_AlphaArgsr!   1   r   r   c                   .    e Zd ZdZed        Zd ZddZy)r   a  Add labels to Compute Engine snapshots.

  *{command}* adds labels to a Compute Engine snapshot.
  For example, running:

    $ {command} example-snapshot --labels=k0=v0,k1=v1

  will add key-value pairs ``k0''=``v0'' and ``k1''=``v1'' to
  'example-snapshot'.

  Labels can be used to identify the snapshot and to filter them as in

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

  To list existing labels

    $ {parent_command} describe example-snapshot --format="default(labels)"
  c                     t        |        y N)r   r   s    r   ArgszSnapshotsAddLabels.ArgsP   s	    FOr   c                 $    | j                  |      S r$   _Runselfargss     r   RunzSnapshotsAddLabels.RunT   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(  rt!        j"                  |      }|j$                  j'                   |j(                  di |j+                               }t!        j,                  |      j/                  |j0                  j2                  |j4                        }	|	j6                  s|S |j9                  |j:                  |j<                  |j>                  |j1                  |j@                  |	j4                              }
|j$                  jC                  |
      }|j                  jE                  |jF                  d      }tI        jJ                  |j$                        }tM        jN                  ||djQ                  |jS                                     S t!        j"                  |      }|jT                  j'                   |jV                  di |j+                               }t!        j,                  |      j/                  |jX                  j2                  |j4                        }	|	j6                  s|S |j[                  |j:                  |j<                  |jY                  |j@                  |	j4                        	      }
|jT                  jC                  |
      }|j                  jE                  |jF                  d
      }tI        jJ                  |jT                        }tM        jN                  ||djQ                  |jS                                     S )N)scope_listerdefault_scopezcompute.regionSnapshots)	additions)labelFingerprintlabels)projectresourceregionregionSetLabelsRequestzcompute.regionOperations)
collectionz!Updating labels of snapshot [{0}])r3   r4   globalSetLabelsRequestzcompute.globalOperations ).r   ComputeApiHolderReleaseTrackclientapitools_clientmessagesr   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListercompute_scope	ScopeEnumGLOBAL
Collectionr   GetUpdateLabelsDictFromArgsregionSnapshotsGet ComputeRegionSnapshotsGetRequestAsDictDiffApplyRegionSetLabelsRequestLabelsValuer2   needs_update&ComputeRegionSnapshotsSetLabelsRequestr3   snapshotr5   r1   	SetLabelsParseselfLinkr   Pollerr   WaitForformatName	snapshotsComputeSnapshotsGetRequestGlobalSetLabelsRequest ComputeSnapshotsSetLabelsRequest)r*   r+   support_regionholderr<   r>   snapshot_ref
add_labelsregional_snapshotlabels_updaterequest	operationoperation_refoperation_pollerrR   s                  r   r(   zSnapshotsAddLabels._RunW   sX   **4+<+<+>?F]]**F}}%%H%11CC"88G#--44	 D L 	##%)BB::4@j 0044
3(
3
3
Ll6I6I6K
L "&&<BB

)
)
5
5

"
"$m ''  ??&&(($$

)
)0AA")) *  @ g ((227;i&&,,


)C - Emv'='=>^^
M
-
4
4!#$ $ ::4@j!!%%
-(
-
-
F0C0C0E
FHh "&&<BB

)
)
5
5
//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__staticmethodr%   r,   r(   r9   r   r   r   r   :   s&    &  M$r   r   c                   &    e Zd ZdZed        Zd Zy)SnapshotsAddLabelsBeta'Add labels to Compute Engine snapshots.c                     t        |        y r$   )r   r   s    r   r%   zSnapshotsAddLabelsBeta.Args   s
    fr   c                 (    | j                  |d      S NT)r^   r'   r)   s     r   r,   zSnapshotsAddLabelsBeta.Run       99   r   Nrh   ri   rj   rk   rl   r%   r,   r9   r   r   rn   rn      s    / r   rn   c                   &    e Zd ZdZed        Zd Zy)SnapshotsAddLabelsAlpharo   c                     t        |        y r$   )r!   r   s    r   r%   zSnapshotsAddLabelsAlpha.Args   s
    vr   c                 (    | j                  |d      S rr   r'   r)   s     r   r,   zSnapshotsAddLabelsAlpha.Run   rs   r   Nrt   r9   r   r   rv   rv      s    / r   rv   rR   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
   rA   r   r   r   rC   ,googlecloudsdk.command_lib.compute.snapshotsr   $googlecloudsdk.command_lib.util.argsr   r   r   r!   ReleaseTracksr;   GAUniverseCompatibleUpdateCommandr   BETArn   ALPHArv    GenerateDetailedHelpForAddLabelsdetailed_helpr9   r   r   <module>r      s   . &  ' 7 < . ( E @ ; E Q <+++ D%%(()h$++ h$  *h$V D%%**+/  , D%%++,0  - 766zB   r   