
    %                     2   S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  SS
KJr  SSSS.rS rS rS r\	R*                  \	R,                  " \	R.                  R0                  5       " S S\	R2                  5      5       5       r\\l        \	R,                  " \	R.                  R8                  5       " S S\5      5       r\\l        \	R,                  " \	R.                  R<                  5       " S S\5      5       r\\l        g)zCommand for creating disks.    )absolute_import)division)unicode_literals)base_classes)filter_rewrite)base)flags)log)
propertiesz9
          Create multiple Compute Engine disks.
        z
        *{command}* facilitates the creation of multiple Compute Engine
        disks with a single command. This includes cloning a set of Async PD
        secondary disks with the same consistency group policy.
        a  
        To consistently clone secondary disks with the same consistency group
        policy 'projects/example-project/regions/us-central1/resourcePolicies/example-group-policy' to target zone 'us-central1-a', run:

          $ {command} --source-consistency-group-policy=projects/example-project/regions/us-central1/resourcePolicies/example-group-policy --zone=us-central1-a
        )briefDESCRIPTIONEXAMPLESc                     [         R                  " U 5        [         R                  R                  U 5        [         R                  R                  U 5        g N)disks_flagsAddBulkCreateArgsAlpha!SOURCE_INSTANT_SNAPSHOT_GROUP_ARGAddArgumentSOURCE_SNAPSHOT_GROUP_ARG)parsers    (lib/surface/compute/disks/bulk/create.py
_AlphaArgsr   2   s8    $$V,//;;FC''33F;    c           
         / n[         R                  " 5       R                  SU-   S9u  pgU(       aV  U R                  U R                  R
                  SU R                  R
                  R                  S5      " XsUS94/USSSS9nX4$ U R                  U R                  R                  SU R                  R                  R                  S5      " XsUS94/USSSS9nX4$ )	z9Requests operations with group id matching the given one.zoperationGroupId=)
expressionList)filterzoneprojectFT)errors_to_collect
log_resultalways_return_operationno_followup)r   regionr   )r   RewriterRewriteMakeRequestsapitools_clientzoneOperationsGetRequestTyperegionOperations)	compute_clientr   operation_group_id
scope_nameis_zonalr    _operation_filteroperations_responses	            r   _GetOperationsr3   8   s    &//199$'99 : ;! (55

(
(
7
7

(
(
7
7
F
Fv
N%I
J 	K , $ 6 $ 
	// )55

(
(
9
96

(
(
9
9
H
H
P"wH
I 	J , $ 6  
	//r   c                     [        US5      nU(       a  UR                  OUR                  n[        XR                  X%U5      u  pgUSS.nU(       d!  U(       d  S n	[        [        X5      5      US'   U$ )z?Requests operations with group id and parses them as an output.r   r   )operationGroupIdcreatedDisksCountc                     U R                   S:H  =(       a-    [        U R                  5      S:H  =(       a    U R                  S L $ )NinsertDONE)operationTypestrstatuserror)ops    r   IsPerDiskOperation&_GetResult.<locals>.IsPerDiskOperationd   sA    ) 4c
))// 4#%88t#34r   r6   )hasattrr   r$   r3   r   summap)
r,   requestr-   parent_errorsr/   r.   r2   errorsresultr?   s
             r   
_GetResultrH   Z   sq     Wf%('w||W^^* .~/A/7!9 !3K&	v4 #&4#6F	-r   c                   R    \ rS rSrSr\S 5       r\S
S j5       rS rS
S jr	S r
Srg	)
BulkCreatem   %Create multiple Compute Engine disks.c                 0    [         R                  " U5        g r   r   AddBulkCreateArgsclsr   s     r   ArgsBulkCreate.Argsr       !!&)r   c                 L    [         R                  " U R                  5       U5      $ r   )r   ComputeApiHolderReleaseTrack)rQ   no_https     r   _GetApiHolderBulkCreate._GetApiHolderv   s    (()9)9);WEEr   c                 $    U R                  U5      $ r   _Runselfargss     r   RunBulkCreate.Runz       99T?r   c           
         U R                  5       nUR                  n[        USS 5      n[        R                  R
                  R                  R                  5       nU(       d  UR                  S5      (       aW  UR                  R                  UUR                  UR                  R                  US9S9nUR                  R                  SU4nGOUR                  R                  UUR                   UR                  R                  US9S9nUR                  R"                  SU4nGO[$        R&                  R)                  UUR*                  [,        R.                  " U5      S9nUb(  UR                  R1                  UR3                  5       S9n	OS n	[$        R4                  R)                  UUR*                  5      n
U
b(  UR                  R7                  U
R3                  5       S	9nOS nUR                  S5      (       aX  UR                  R                  UUR                  UR                  R                  UU	US
9S9nUR                  R                  SU4nOWUR                  R                  UUR                   UR                  R                  UU	US
9S9nUR                  R"                  SU4n/ nUR9                  U/USSS9nU(       a]  [;        [=        U5      5       HE  nX   n[?        U5      n[A        US   S5      (       a  US   RB                  US'   [E        U5      X'   MG     Xl#        U(       d  g US   RH                  n[K        XGS   UU5      nUS   RL                  (       a  US   RL                  US'   U$ )Nsource_consistency_group_policyr   )sourceConsistencyGroupPolicy)r   r   bulkInsertDiskResource
BulkInsert)r   r$   rg   )scope_lister)sourceInstantSnapshotGroup)sourceSnapshotGroup)rf   instantSnapshotGroupParameterssnapshotGroupParametersT)r    r#   r"      messager      statusMessage)'rY   clientgetattrr   VALUEScorer   	GetOrFailIsSpecifiedmessagesComputeDisksBulkInsertRequestr   BulkInsertDiskResourcer(   disks#ComputeRegionDisksBulkInsertRequestr$   regionDisksr   r   ResolveAsResource	resourcesr	   GetDefaultScopeListerInstantSnapshotGroupParametersSelfLinkr   SnapshotGroupParametersr'   rangelenlistrA   ro   tuple_errorsr5   rH   rq   )r_   r`   support_multiple_source_restorecompute_holderrr   
policy_urlr   rD   isg_ref
isg_paramsssg_ref
ssg_paramsr    responseierror_tuple
error_listr-   rG   s                      r   r]   BulkCreate._Run}   s   '')N""F@$GJ$$,,668G*			&	!	!//??#)??#I#I-7 $J $9 @ :
 ))//wG//EE;;#)??#I#I-7 $J $9 F :
 ))55|WM==OO


"
"226: P g
 
	__CC'.'7'7'9 D 

 
55GG


"
"g 
	__<< ' 0 0 2 = 

 
			&	!	!//??#)??#I#I-7/9(2 $J $4 @ 5 ))//wG//EE;;#)??#I#I-7/9(2 $J $4 F 5 ))55|WM""G95F/3;? # AH S*+,!'*+&

 :a=),,$Q-//*Q-$Z0 - %L!!55
,>)+F {   ( 9 9f_Mr   c                 v    AU R                   (       a'  [        R                  " U R                   S   S   5        g g )Nr   rn   )r   r
   r=   )r_   resources_were_displayeds     r   EpilogBulkCreate.Epilog   s*     ||	iiQ"# r   )r   N)F)__name__
__module____qualname____firstlineno____doc__classmethodrR   rY   ra   r]   r   __static_attributes__ r   r   rJ   rJ   m   s@     .* * F FYv$r   rJ   c                   .    \ rS rSrSr\S 5       rS rSrg)BulkCreateBeta   rL   c                 0    [         R                  " U5        g r   rN   rP   s     r   rR   BulkCreateBeta.Args   rT   r   c                 $    U R                  U5      $ r   r\   r^   s     r   ra   BulkCreateBeta.Run   rc   r   r   N	r   r   r   r   r   r   rR   ra   r   r   r   r   r   r      s    -* *r   r   c                   .    \ rS rSrSr\S 5       rS rSrg)BulkCreateAlpha   rL   c                     [        U5        g r   )r   rP   s     r   rR   BulkCreateAlpha.Args   s
    vr   c                 "    U R                  USS9$ )NT)r   r\   r^   s     r   ra   BulkCreateAlpha.Run   s    99T59  ; ;r   r   Nr   r   r   r   r   r      s    - ;r   r   N) r   
__future__r   r   r   googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer	   (googlecloudsdk.command_lib.compute.disksr   googlecloudsdk.corer
   r   DETAILED_HELPr   r3   rH   DefaultUniverseOnlyReleaseTracksrW   GACommandrJ   detailed_helpBETAr   ALPHAr   r   r   r   <module>r      s   " &  ' 7 9 ( 4 I # *			*<0D& D%%(()l$ l$ * l$\ )
  D%%**+Z  ,  -  D%%++,	;j 	; -	; !. r   