
    #                     \   S r SSKJr  SSKJr  SSKJr  SSK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rS r\R0                  \R2                  " \R4                  R6                  5       " S S\R8                  5      5       5       r\R0                  \R2                  " \R4                  R<                  5       " S S\5      5       5       r\R0                  \R2                  " \R4                  R@                  5       " S S\5      5       5       r!g)z0Command for creating Compute Engine commitments.    )absolute_import)division)unicode_literalsN)base_classes)request_helper)utils)apis)base)
exceptions)flags)reservation_helper)
propertieszQuota .COMMITMENTS. exceeded.+c                    [         R                  " S5      R                  USS9  [         R                  " U5        [        R
                  " SU 5      n[         R                  " U5      R                  R                  U5        g)zAdd common flags.Fcreate)operation_typecomputeN)	r   MakeCommitmentArgAddArgumentAddAutoRenewr	   GetMessagesModuleGetTypeMapperFlag
choice_argAddToParser)trackparsermessagess      )lib/surface/compute/commitments/create.py_CommonArgsr   &   s_    % ,,VH,MV##Iu5((#..::6B    c                   T    \ rS rSrSrSrSrSrSrSr	Sr
SS0r\S 5       rS rS	 rS
rg)Create.   "Create Compute Engine commitments.TFEXAMPLESa  
        To create a commitment called ``commitment-1'' in the ``us-central1''
        region, with a ``12-month'' plan, ``9GB'' of memory and 4 vcpu cores,
        run:

          $ {command} commitment-1 --plan=12-month --resources=memory=9GB,vcpu=4 --region=us-central1
      c           
          [        SU5        [        R                  " UU R                  U R                  U R
                  U R                  U R                  U R                  S9  g )Nv1support_share_settingsupport_stable_fleetsupport_existing_reservation"support_reservation_sharing_policysupport_60_month_plansupport_24_month_plan	r   r   AddCreateFlags_support_share_setting_support_stable_fleet_support_existing_reservation#_support_reservation_sharing_policy_support_60_month_plan_support_24_month_planclsr   s     r   ArgsCreate.ArgsB   sS    f	!88 66%(%F%F+.+R+R!88!88r   c                    UR                   b#  UR                  b  [        R                  " S5      e[        R
                  " U5      nUR                  UR                  5      n	UR                  [        R                  " XU5      UR                  5       [        R                  " X!R                  5      [        R                  " X!5      U	[        R                  " U5      UR                   [        R                   " UR                  5      US9	n
[        R"                  " U5      U
l        UR'                  U
UUR(                  S9$ Nz3It's not possible to merge and split in one request)	reservationsnameplan	resourcestype	autoRenewsplitSourceCommitmentmergeSourceCommitmentsexistingReservations)
commitmentprojectregionsplit_source_commitmentmerge_source_commitmentsr   ConflictingArgumentsExceptionr   r   GetEnumForChoicer@   
Commitmentr   MakeReservationsNameTranslatePlanArgr>   TranslateResourcesArgGroupTranslateAutoRenewArgForCreateTranslateMergeArgTranslateCustomEndTimeArgcustomEndTimestamp%ComputeRegionCommitmentsInsertRequestrG   selfargsr   rF   rG   commitment_refexisting_reservationsholdercommitment_type_flagcommitment_typerE   s              r   _MakeCreateRequestCreate._MakeCreateRequestO   s!    	$$0))544
?  !228<*;;DIIFO$$'88F
   "##Hii8228B66t<"::$66)) 
 3 % J %*$C$CD$IJ!99$$ :  r   c           	         [         R                  " U R                  5       5      nUR                  n[        R
                  " S5      R                  UU[        R                  " UR                  5      S9n[        R                  " X5      nUR                  R                  n[        R                  R                  R                  R!                  5       n[        R                  R"                  R$                  R!                  5       nU R'                  UUUUUUU5      n	UR                  R(                  R*                  n
UR                  R,                  nUR                  R(                  R.                  n/ n[1        [2        R4                  " U
SU	4/UUUS95      n[7        U5       H  u  nn[9        US   S5      (       a2  [;        US   R<                  [>        5      (       a  US   R<                  nOUS   n[@        RB                  " [D        U5      (       d  Ms  US   US-   4X'   M     U(       a  [F        RH                  " U5        U$ )	NF)scope_listerInsert)requestshttp	batch_urlerrors   messager   z~ You can request commitments quota on https://cloud.google.com/compute/docs/instances/signing-up-committed-use-discounts#quota)%r   ComputeApiHolderReleaseTrackr?   r   r   ResolveAsResourcecompute_flagsGetDefaultScopeListerclientResolveExistingReservationArgsr   r   VALUESr   rG   GetcorerF   r_   apitools_clientregionCommitmentsrf   re   listr   MakeRequests	enumeratehasattr
isinstanceri   strrematch _MISSING_COMMITMENTS_QUOTA_REGEXr   RaiseToolException)rX   rY   r\   r?   rZ   r[   r   rG   rF   create_requestservicerf   re   rg   resultierrorerr_msgs                     r   Run
Create.Runz   s   **4+<+<+>?F  I,,U3EE"88G F N
 "@@ }}%%H&&--113F$$,,002G,,N mm++==G''I==((--DF##.9:		
F f%5	q9	%	%*U1X5E5Es*K*K(""(	2G	<	<!H;
	 &" v&Mr    N)__name__
__module____qualname____firstlineno____doc__r0   r1   r2   r3   r4   r5   detailed_helpclassmethodr8   r_   r   __static_attributes__r   r   r   r!   r!   .   sY     +"&(-%    
 - 
 
)V7r   r!   c                   @    \ rS rSrSrSrSrSrSrSr	Sr
\S 5       rSrg)
CreateBeta   r#   TFc           
          [        SU5        [        R                  " UU R                  U R                  U R
                  U R                  U R                  U R                  S9  g )Nbetar'   r.   r6   s     r   r8   CreateBeta.Args   sS    	!88 66%(%F%F+.+R+R!88!88r   r   N)r   r   r   r   r   r0   r1   r2   r3   r4   r5   r   r8   r   r   r   r   r   r      s=     +"&(,%  
 
r   r   c                   F    \ rS rSrSrSrSrSrSrSr	Sr
\S 5       rS rSrg)CreateAlpha   r#   Tc           
          [        SU5        [        R                  " UU R                  U R                  U R
                  U R                  U R                  U R                  S9  g )Nalphar'   r.   r6   s     r   r8   CreateAlpha.Args   sS     	!88 66%(%F%F+.+R+R!88!88r   c                    UR                   b#  UR                  b  [        R                  " S5      e[        R
                  " U5      nUR                  UR                  5      n	UR                  [        R                  " XU5      UR                  5       [        R                  " X!R                  5      [        R                  " X!5      U	[        R                  " U5      UR                   [        R                   " UR                  5      US9	n
[        R"                  " U5      U
l        UR'                  U
UUR(                  S9$ r;   rH   rW   s              r   r_   CreateAlpha._MakeCreateRequest   s!    	$$0))544
?  !228<*;;DIIFO$$'88F
   "##Hii8228B66t<"::$66)) 
 3 % J  %*$C$CD$IJ!99$$ :  r   r   N)r   r   r   r   r   r0   r1   r2   r3   r4   r5   r   r8   r_   r   r   r   r   r   r      sB     +"&(,%
 
*r   r   )"r   
__future__r   r   r   r|   googlecloudsdk.api_lib.computer   r   r   googlecloudsdk.api_lib.utilr	   googlecloudsdk.callioper
   r   "googlecloudsdk.command_lib.computer   rm   .googlecloudsdk.command_lib.compute.commitmentsr   googlecloudsdk.corer   r~   r   UniverseCompatibleReleaseTracksrk   GACommandr!   BETAr   ALPHAr   r   r   r   <module>r      s   7 &  ' 	 7 9 0 , ( . E @ M * $E  C D%%(()AT\\ A * AH D%%**+  , 0 D%%++,A* A - Ar   