
                         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SnapshotsRemoveLabelsSnapshotArgAddArgumentr   AddArgsForRemoveLabelsparsers    .lib/surface/compute/snapshots/remove_labels.py_GAArgsr   !   s6    &5&E&E&G###//7%%f-    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; # ##//7%%f-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   *Remove labels to Compute Engine snapshots.c                     t        |        y N)r   r   s    r   ArgszSnapshotsRemoveLabels.Args?   s	    FOr   c                 $    | j                  |      S r%   _Runselfargss     r   RunzSnapshotsRemoveLabels.RunC   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+                               }|j,                  rBi }|j.                  r4|j.                  j0                  D ]  }	|	j2                  ||	j4                  <    t!        j6                  |      j9                  |j:                  j<                  |j.                        }
|
j>                  s|S |jA                  |jB                  |jD                  |jF                  |j;                  |jH                  |
j.                              }|j$                  jK                  |      }|j                  jM                  |jN                  d      }tQ        jR                  |j$                        }tU        jV                  ||djY                  |j[                                     S t!        j"                  |      }|j\                  j'                   |j^                  di |j+                               }|j,                  rBi }|j.                  r4|j.                  j0                  D ]  }	|	j2                  ||	j4                  <    t!        j6                  |      j9                  |j`                  j<                  |j.                        }
|
j>                  s|S |jc                  |jB                  |jD                  |ja                  |jH                  |
j.                        	      }|j\                  jK                  |      }|j                  jM                  |jN                  d
      }tQ        jR                  |j\                        }tU        jV                  ||djY                  |j[                                     S )N)scope_listerdefault_scopezcompute.regionSnapshots)subtractions)labelFingerprintlabels)projectresourceregionregionSetLabelsRequestzcompute.regionOperations)
collectionz!Updating labels of snapshot [{0}])r4   r5   globalSetLabelsRequestzcompute.globalOperations )2r   ComputeApiHolderReleaseTrackclientapitools_clientmessagesr   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListercompute_scope	ScopeEnumGLOBAL
Collectionr   GetUpdateLabelsDictFromArgsregionSnapshotsGet ComputeRegionSnapshotsGetRequestAsDictallr3   additionalPropertiesvaluekeyDiffApplyRegionSetLabelsRequestLabelsValueneeds_update&ComputeRegionSnapshotsSetLabelsRequestr4   snapshotr6   r2   	SetLabelsParseselfLinkr   Pollerr   WaitForformatName	snapshotsComputeSnapshotsGetRequestGlobalSetLabelsRequest ComputeSnapshotsSetLabelsRequest)r+   r,   support_regionholderr=   r?   snapshot_refremove_labelsregional_snapshotlabellabels_updaterequest	operationoperation_refoperation_pollerrW   s                   r   r)   zSnapshotsRemoveLabels._RunF   s   **4+<+<+>?F]]**F}}%%H(44FF"88G#--44	 G 
L 	##%)BB!==dCm 0044
3(
3
3
Ll6I6I6K
LN 
##(//DDe',{{M%))$ E "&&MBHH

)
)
5
5

"
"$m ''  ??&&(($$

)
)0AA")) * + @ ,g ((227;i&&,,


)C - Em  v'='=>^^
M
-
4
4!#$ $
 "==dCm!!%%
-(
-
-
F0C0C0E
FHh 
??;;e',{{M%))$ < "&&MBHH

)
)
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)   r:   r   r   r   r   :   s$     3 V$r   r   c                   &    e Zd ZdZed        Zd Zy)SnapshotsRemoveLabelsBetar#   c                     t        |        y r%   )r   r   s    r   r&   zSnapshotsRemoveLabelsBeta.Args   s
    fr   c                 (    | j                  |d      S NT)rc   r(   r*   s     r   r-   zSnapshotsRemoveLabelsBeta.Run       99   r   Nrn   ro   rp   rq   rr   r&   r-   r:   r   r   rt   rt      s    2 r   rt   c                   &    e Zd ZdZed        Zd Zy)SnapshotsRemoveLabelsAlphar#   c                     t        |        y r%   )r!   r   s    r   r&   zSnapshotsRemoveLabelsAlpha.Args   s
    vr   c                 (    | j                  |d      S rw   r(   r*   s     r   r-   zSnapshotsRemoveLabelsAlpha.Run   rx   r   Nry   r:   r   r   r{   r{      s    2 r   r{   rW   N)'rq   
__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   r   r   rD   ,googlecloudsdk.command_lib.compute.snapshotsr   $googlecloudsdk.command_lib.util.argsr   r   r   r!   ReleaseTracksr<   GAUniverseCompatibleUpdateCommandr   BETArt   ALPHAr{   #GenerateDetailedHelpForRemoveLabelsdetailed_helpr:   r   r   <module>r      s   . &  ' 7 < . ( E @ ; E Q <... D%%(()`$D.. `$  *`$F D%%**+ 5  , D%%++,!6  - :99*E  #r   