
                            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
 Zd Z ej"                  ej$                  j&                        ej(                   G d dej*                                      Z ej"                  ej$                  j.                         G d de             Zddde_        ddde_        y)z/Command for compute future reservations create.    )absolute_import)division)unicode_literals)base_classes)base)flags)resource_args)utilc                     t        j                  ||| |      }| j                  |_        | j                  |_        |j                  |||j                        S )z7Common routine for creating future reservation request.)futureReservationprojectzone)r
   $MakeFutureReservationMessageFromArgsdescriptionname_prefix
namePrefix&ComputeFutureReservationsInsertRequestr   )argsmessages	resourcesr   future_reservation_reffuture_reservations         1lib/surface/compute/future_reservations/create.py_MakeCreateRequestr      sd     @@	4!79#'#3#3 "&"2"2		8	8*!&& 
9 
( (    c                    | j                   }t        j                         j                  ||t	        j
                  | j                              }| j                  j                  }|j                  }t        |||||      }| j                  j                  j                  }| j                  j                  |d|fg      S )z/Common routine for creating future reservation.)scope_listerInsert)r   r	   GetFutureReservationResourceArgResolveAsResourcecompute_flagsGetDefaultScopeListerclientr   r   r   apitools_clientfutureReservationsMakeRequests)compute_apir   r   r   r   r   create_requestservices           r   
_RunCreater*   +   s    ##)(HH 
 66{7I7IJ  L  ((("**'%dHi&<>. ..AA'				(	(7Hn*M)N	OOr   c                   V    e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZed        Zd Zy)
CreateBetaz$Create a Compute Engine reservation.TFc                    t        j                         j                  |d       t        j                  || j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                          y )Ncreateoperation_type)support_share_settingsupport_location_hintsupport_fleetsupport_planning_statussupport_instance_templatesupport_local_ssd_countsupport_auto_delete$support_require_specific_reservationsupport_gscsupport_dws_gpusupport_cudssupport_dws_tpu)r	   r   AddArgumentr   AddCreateFlags_support_share_setting_support_location_hint_support_fleet_support_planning_status_support_instance_template_support_local_ssd_count_support_auto_delete%_support_require_specific_reservation_support_gsc_support_dws_gpu_support_cuds_support_dws_tpuclsparsers     r   ArgszCreateBeta.ArgsN   s    113??x @ )	!88!88(( # < <"%"@"@ # < <44-0-V-V$$,,&&,,r   c                 p    t        t        j                  t        j                  j
                        |      S N)r*   r   ComputeApiHolderr   ReleaseTrackBETAselfr   s     r   RunzCreateBeta.Runb   s-    %%d&7&7&<&<=tE Er   N)__name__
__module____qualname____doc__r?   r@   rC   rA   rB   rD   rE   rF   rG   rH   rI   rJ   classmethodrN   rV    r   r   r,   r,   =   sd     - #.!!*.',- &Er   r,   c                   V    e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZed        Zd Zy)CreateAlpha+Create a Compute Engine future reservation.Tc                    t        j                         j                  |d       t        j                  || j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                          y )Nr.   r/   )r1   r2   r3   r4   r5   r6   r7   r8   r9   r;   r:   r<   )r	   r   r=   r   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rI   rH   rJ   rK   s     r   rN   zCreateAlpha.Argsx   s    113??x @ )	!88!88(( # < <"%"@"@ # < <44-0-V-V$$&&,,,,r   c                 p    t        t        j                  t        j                  j
                        |      S rP   )r*   r   rQ   r   rR   ALPHArT   s     r   rV   zCreateAlpha.Run   s-    %%d&7&7&=&=>F Fr   N)rW   rX   rY   rZ   r?   r@   rC   rA   rB   rD   rE   rF   rG   rI   rH   rJ   r[   rN   rV   r\   r   r   r^   r^   g   sb    3#.!!*.',- &Fr   r^   r_   a  
        To create a Compute Engine future reservation by specifying VM properties using an instance template, run:

            $ {command} my-future-reservation --total-count=1000 --start-time=2022-11-10 --end-time=2022-12-10 --name-prefix=prefix-reservation --source-instance-template=example-instance-template --zone=fake-zone

        To create a Compute Engine future reservation by directly specifying VM properties, run:

            $ {command} my-future-reservation --total-count=1000 --start-time=2022-11-10 --end-time=2022-12-10 --name-prefix=prefix-reservation --machine-type=custom-8-10240 --min-cpu-platform="Intel Haswell" --accelerator=count=2,type=nvidia-tesla-v100 --local-ssd=size=375,interface=scsi
        )briefEXAMPLESN)rZ   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r!   6googlecloudsdk.command_lib.compute.future_reservationsr	   r
   r   r*   ReleaseTracksrR   rS   DefaultUniverseOnlyCreateCommandr,   rb   r^   detailed_helpr\   r   r   <module>rn      s    6 &  ' 7 ( E H P G(P$ D%%**+%E## %E  ,%EP D%%++,&F* &F -&FT 	6
   	6 r   