
    !                        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 ej"                  ej$                  j2                         G d de             Zddde_        y)z(Command for compute reservations create.    )absolute_import)division)unicode_literals)base_classes)base)flags)resource_args)utilc                     t        j                  || ||      }| j                  |_        |j                  |||j                        S )z0Common routine for creating reservation request.)reservationprojectzone)r
   MakeReservationMessageFromArgsdescription ComputeReservationsInsertRequestr   )argsmessagesr   reservation_ref	resourcesr   s         *lib/surface/compute/reservations/create.py_MakeCreateRequestr      sQ    33Hd4CYP+ ,,+		2	2w_5I5I 
3 
K K    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 reservation.)scope_listerInsert)r   r	   GetReservationResourceArgResolveAsResourcecompute_flagsGetDefaultScopeListerclientr   r   r   apitools_clientreservationsMakeRequests)compute_apir   r   r   r   r   create_requestservices           r   
_RunCreater'   &   s    ##)!;;=OO
 66{7I7IJ P L/
 (((##'%dHg&/1. ..;;'				(	(7Hn*M)N	OOr   c                   6    e Zd ZdZdZdZdZdZed        Z	d Z
y)Create$Create a Compute Engine reservation.FTc                     t        j                         j                  |d       t        j                  || j
                  | j                  | j                         y )Ncreateoperation_type)support_folder_share_setting"support_reservation_sharing_policysupport_ssd_count)r	   r   AddArgumentr   AddCreateFlags_support_folder_share_setting#_support_reservation_sharing_policy_support_ssd_countclsparsers     r   ArgszCreate.Args@   sO    ++-99x : )	%(%F%F+.+R+R00	r   c                 p    t        t        j                  t        j                  j
                        |      S N)r'   r   ComputeApiHolderr   ReleaseTrackGAselfr   s     r   Runz
Create.RunK   s&    l33D4E4E4H4HI4PPr   N)__name__
__module____qualname____doc___support_auto_deleter4   r5   r6   classmethodr:   rB    r   r   r)   r)   7   s7     -"'(,% Qr   r)   c                   6    e Zd ZdZdZdZdZdZed        Z	d Z
y)
CreateBetar*   TFc                     t        j                         j                  |d       t        j                  || j
                  | j                  | j                  | j                         y )Nr,   r-   )r/   support_auto_deleter0   r1   )	r	   r   r2   r   r3   r4   rG   r5   r6   r7   s     r   r:   zCreateBeta.ArgsW   sX    ++-99x : )	%(%F%F44+.+R+R00r   c                 p    t        t        j                  t        j                  j
                        |      S r<   )r'   r   r=   r   r>   BETAr@   s     r   rB   zCreateBeta.Runc   s-    %%d&7&7&<&<=tE Er   NrC   rD   rE   rF   r6   rG   r4   r5   rH   r:   rB   rI   r   r   rK   rK   O   s5    ,"'(,%	 	Er   rK   c                   6    e Zd ZdZdZdZdZdZed        Z	d Z
y)CreateAlphar*   Tc                     t        j                         j                  |d       t        j                  |d| j
                  | j                  | j                  | j                         y )Nr,   r-   T)support_fleetr/   r1   rM   r0   )	r	   r   r2   r   r3   r4   r6   rG   r5   r7   s     r   r:   zCreateAlpha.Argsp   s[    ++-99x : )	%(%F%F0044+.+R+Rr   c                 p    t        t        j                  t        j                  j
                        |      S r<   )r'   r   r=   r   r>   ALPHAr@   s     r   rB   zCreateAlpha.Run}   s-    %%d&7&7&=&=>F Fr   NrP   rI   r   r   rR   rR   h   s5    ,"&(,%
 
Fr   rR   r*   a#  
        To create a Compute Engine reservation by specifying VM properties using an instance template, run:

            $ {command} my-reservation --vm-count=1 --source-instance-template=example-instance-template --zone=fake-zone

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

            $ {command} my-reservation --vm-count=1 --machine-type=custom-8-10240 --min-cpu-platform="Intel Haswell" --accelerator=count=2,type=nvidia-tesla-v100 --local-ssd=size=375,interface=scsi --zone=fake-zone
        )briefEXAMPLESN)rF   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   "googlecloudsdk.command_lib.computer   r   /googlecloudsdk.command_lib.compute.reservationsr	   r
   r   r'   ReleaseTracksr>   r?   UniverseCompatibleCreateCommandr)   rO   rK   rV   rR   detailed_helprI   r   r   <module>rb      s    / &  ' 7 ( E A I @KP" D%%(()QT Q  *Q, D%%**+E E ,E0 D%%++,F* F -F6 	/	 r   