
                         v    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rS	 rS
 rS rS rS rg)z8Utility methods for the compute node templates commands.    )absolute_import)division)unicode_literals)encoding)flags)	arg_utilsNc                 X    UR                   R                  n[        R                  " XSS9$ )NT)
sort_items)NodeTemplateNodeAffinityLabelsValuer   DictToAdditionalPropertyMessage)affinity_labelsmessagesaffinity_labels_classs      Jlib/googlecloudsdk/command_lib/compute/sole_tenancy/node_templates/util.py_ParseNodeAffinityLabelsr      s,    "//GG		1	1
? ?    c                    SnUR                   (       a  [        UR                   U5      nSnUR                  S5      (       as  UR                  [        R
                  " UR                  R                  SS5      5      UR                  R                  SS5      UR                  R                  SS5      S9nUR                  U R                  5       UR                  UUR                  US9nUR                  S	5      (       ad  UR                  UR                  R                  S
5      UR                  R                  S5      UR                  R                  S5      S9nU/Ul        UR                  S5      (       a;  [        R                   " UR"                  UR                  R$                  5      nXul        [)        X5      Ul        [,        R.                  " U5      nUR1                  UR3                  UR4                  5      S9n	Xl        U$ )z*Creates a Node Template message from args.Nnode_requirementsvCPUanylocalSSDmemory)cpuslocalSsdr   )namedescriptionnodeAffinityLabelsnodeTypenodeTypeFlexibilitydiskcountsizetype)	diskCount
diskSizeGbdiskTypecpu_overcommit_type)r$   )node_affinity_labelsr   IsSpecifiedNodeTemplateNodeTypeFlexibilitysix	text_typer   getr   Namer   	node_type	LocalDiskr!   disksr   ChoiceToEnumr(    CpuOvercommitTypeValueValuesEnumcpuOvercommitTypeGetAcceleratorsacceleratorsr   GetServerBindingMapperFlagServerBindingGetEnumForChoiceserver_bindingserverBinding)
node_template_refargsr   r)   node_type_flexbilitynode_template
local_diskovercommit_typeserver_binding_flagr;   s
             r   CreateNodeTemplaterD   !   s    	3D4M4M4<> 	)**#CC]]41155feDE ''++J=%%))(E: D < ''!!#""-~~. ( 0- 
f##))--(99==(v& $ (J &,M	+,,,,  >>@O '6#.t>-88B))//0C0CD * F. .	r   c                     U R                   (       a@  U R                   S   n[        U R                   R                  SS5      5      n[        XU5      $ / $ )z<Returns list of messages with accelerators for the instance.r$   r"      )acceleratorintr.   CreateAcceleratorConfigMessages)r>   r   accelerator_typeaccelerator_counts       r   r6   r6   R   sQ    	''/D,,00!<=*8+<> >	)r   c                 &    U R                  XS9nU/$ )aP  Returns a list of accelerator config messages.

Args:
  msgs: tracked GCE API messages.
  accelerator_type: reference to the accelerator type.
  accelerator_count: number of accelerators to attach to the VM.

Returns:
  a list of accelerator config message that specifies the type and number of
  accelerators to attach to an instance.
)acceleratorTypeacceleratorCount)AcceleratorConfig)msgsrJ   rK   accelerator_configs       r   rI   rI   \   s'     --& . L
	r   c                 N    SnX#S.nUR                  XUS9R                  5       nU$ )Nzcompute.regionAcceleratorTypes)projectregion)
collectionparams)ParseSelfLink)accelerator_type_nameresource_parserrS   rT   rU   rV   rJ   s          r   ParseAcceleratorTyper[   n   s:    /*1&$**6 + CCK8: 	r   )__doc__
__future__r   r   r   apitools.base.pyr   >googlecloudsdk.command_lib.compute.sole_tenancy.node_templatesr   $googlecloudsdk.command_lib.util.apisr   r,   r   rD   r6   rI   r[    r   r   <module>rb      s9    ? &  ' % P : 
?.b$r   