
                             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	 rS
 rS rS rS rS rS rg)z<Helpers for creating reservation within commitment creation.    )absolute_import)division)unicode_literals)flags)resource_args)util)yamlc                     U R                  S5      (       a  [        XUR                  5      $ U R                  S5      (       a  [        XU5      /$ / $ )Nreservations_from_filereservation)IsSpecified_MakeReservationsFromFile	resources_MakeSingleReservation)argsmessagesholders      Hlib/googlecloudsdk/command_lib/compute/commitments/reservation_helper.pyMakeReservationsr      sM    	.//$XV5E5EFF&&"46:;;I    c                     U R                  S5      (       a  [        XU5      $ U R                  S5      (       a  [        X5      $ / $ )Nr   source_reservation)r   r   MakeSourceDestReservations)r   r   r   s      r   MakeUpdateReservationsr   $   sC    	.//$XY??,--%d55Ir   c           	      L    [        SSSSSU U5      n[        SSSS	S
U U5      nX#/$ )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   -   sM    &
* ,
/ 	&&r   c                 0   [         R                  " U[        XQS5      5      n[         R                  " U[        XRS5      5      n[         R                  " Xe[        XSS5      U5      n	[        XPS5      n [         R
                  " UU R                  SS5      UUU R                  SS5      U R                  SS5      5      n
[         R                  " X`R                  SS5      XU R                  SS5      U R                  SS5      U R                  SS5      5      nU$ )	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,3D48-:;, !!(GD48-: ;*11gd48*F.40+>>ooj$'oond+oo($/ 
%
%t4oo)40oo4d;oo($/1% 
,r   c                 Z    [         R                  " UR                  5      n[        XU5      $ )N)r	   loadr   _ConvertYAMLToMessage)r   r   r   reservations_yamls       r   r   r   h   s$    ii ; ;<	xI	FFr   c                    U(       d  / $ / nU GHU  n[         R                  " U UR                  SS5      5      n[         R                  " XR                  SS5      5      n[         R                  " XUR                  SS5      5      n[         R
                  " XUR                  SS5      U5      n[         R                  " U UR                  SS5      UUUR                  SS5      UR                  SS5      5      n	[         R                  " XR                  S	S5      UXUR                  S
S5      UR                  SS5      UR                  SS5      S9n
UR                  U
5        GMX     U$ )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   sN   	I/a--h./eeM4.HJL##HeeK.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                     [         R                  " SS9R                  U UR                  [        R
                  " UR                  5      S9n[        R                  " XUUR                  5      $ )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      si    !;;))



$::6==I * K 
 
	,	,X_-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   