
                             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	 Zd
 Zd Zd Zd Zd Zd Zy)z<Helpers for creating reservation within commitment creation.    )absolute_import)division)unicode_literals)flags)resource_args)util)yamlc                     | j                  d      rt        || |j                        S | j                  d      rt        | ||      gS g S )Nreservations_from_filereservation)IsSpecified_MakeReservationsFromFile	resources_MakeSingleReservation)argsmessagesholders      Hlib/googlecloudsdk/command_lib/compute/commitments/reservation_helper.pyMakeReservationsr      sK    	./$XtV5E5EFF&"46:;;I    c                 |    | j                  d      rt        || |      S | j                  d      rt        | |      S g S )Nr   source_reservation)r   r   MakeSourceDestReservations)r   r   r   s      r   MakeUpdateReservationsr   $   sA    	./$XtY??,-%dH55Ir   c           	      N    t        ddddd| |      }t        dddd	d
| |      }||gS )z9Return messages required for update-reservations command.r   source_acceleratorsource_local_ssdsource_share_settingsource_share_withdest_reservationdest_acceleratordest_local_ssddest_share_settingdest_share_with)ReservationArgToMessage)r   r   
source_msgdestination_msgs       r   r   r   -   sO    &
* ,
/ o	&&r   c                 4   t        j                  |t        ||d            }t        j                  |t        ||d            }t        j                  ||t        ||d      |      }	t        || d      } t        j
                  || j                  dd      ||| j                  dd      | j                  dd            }
t        j                  || j                  dd      |	|
| j                  dd      | j                  dd      | j                  dd            }|S )	z3Convert single reservation argument into a message.Nzvm-countzmachine-typezmin-cpu-platformr   zresource-policieszrequire-specific-reservationzreservation-zone)r   MakeGuestAcceleratorsgetattrMakeLocalSsdsMakeShareSettingsWithArgs!MakeSpecificSKUReservationMessagegetMakeReservationMessage)r   accelerator	local_ssdshare_setting
share_withr   r   accelerators
local_ssdsshare_settingsspecific_allocationa_msgs               r   r%   r%   D   s    ++H,3D+48-:;, !!(GD)48-: ;*11gdM48*F.k40+>>ooj$'oond+oo($/ 
%
%t4)oo)40oo4d;oo($/1% 
,r   c                 Z    t        j                  |j                        }t        | ||      S )N)r	   loadr   _ConvertYAMLToMessage)r   r   r   reservations_yamls       r   r   r   h   s'    ii ; ;<	x):I	FFr   c                    |sg S g }|D ]V  }t        j                  | |j                  dd            }t        j                  | |j                  dd            }t        j                  | ||j                  dd            }t        j
                  | ||j                  dd      |      }t        j                  | |j                  dd      |||j                  dd      |j                  dd            }	t        j                  | |j                  d	d      ||	||j                  d
d      |j                  dd      |j                  dd            }
|j                  |
       Y |S )z9Converts the fields in yaml to allocation message object.r0   Nr1   r2   resource_policiesvm_countmachine_typemin_cpu_platformr   require_specific_reservationreservation_zonereservation_sharing_policy)rD   )	r   r)   r.   r+   MakeShareSettingsWithDictMakeResourcePoliciesr-   r/   append)r   r<   r   allocations_msgar4   r5   r6   r>   r7   r8   s              r   r;   r;   m   sY   	I/a--h./eeM4.HJL##HaeeK.FGJ33!QUU?D13N 11!QUU.5yB @@	j$	nd#	 $' ''!%%t,n.	,d3	 $'#$55)Et#LNE 5!3 4 
r   c                     t        j                  d      j                  | |j                  t	        j
                  |j                              }t        j                  || ||j                        S )z$Makes one Allocation message object.F)
positional)scope_lister)	r   GetReservationResourceArgResolveAsResourcer   compute_flagsGetDefaultScopeListerclientr   MakeReservationMessageFromArgs)r   r   r   reservation_refs       r   r   r      sk    !;;))



$::6==I * K 
 
	,	,Xt_-3-=-=
? ?r   N)__doc__
__future__r   r   r   "googlecloudsdk.command_lib.computer   rO   /googlecloudsdk.command_lib.compute.reservationsr   r   googlecloudsdk.corer	   r   r   r   r%   r   r;   r    r   r   <module>rZ      sF    C &  ' E I @ $'.!HG
D?r   