
                         v    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Zd	 Zd
 Zd Zd Zd Zy)z8Utility methods for the compute node templates commands.    )absolute_import)division)unicode_literals)encoding)flags)	arg_utilsNc                 ^    |j                   j                  }t        j                  | |d      S )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                    d}|j                   rt        |j                   |      }d}|j                  d      ru|j                  t	        j
                  |j                  j                  dd            |j                  j                  dd      |j                  j                  dd            }|j                  | j                         |j                  ||j                  |      }|j                  d	      rg|j                  |j                  j                  d
      |j                  j                  d      |j                  j                  d            }|g|_        |j                  d      r;t        j                   |j"                  |j                  j$                        }||_        t)        ||      |_        t-        j.                  |      }|j1                  |j3                  |j4                              }	|	|_        |S )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 '6M#.tX>-88B))//0C0CD * F. .-	r   c                     | j                   rA| j                   d   }t        | j                   j                  dd            }t        |||      S g S )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   sT    	''/D,,00!<=*85E+<> >	)r   c                 .    | j                  ||      }|gS )a`  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*     --&9J . L
	r   c                 X    d}||d}|j                  | ||      j                         }|S )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   