
    c                        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$                  ej&                  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Create resource policy command.    )absolute_import)division)unicode_literals)base_classes)base)
exceptions)flags)utilc                     t        j                         j                  |        t        j                  |        t        j                  |        t        j
                  |        y)zA helper function.N)r	   MakeResourcePolicyArgAddArgumentAddCommonArgsAddTypeArgsForWorkloadPolicyAAddMaxTopologyDistanceAndAcceleratorTopologyArgsForWorkloadPolicyparsers    ?lib/surface/compute/resource_policies/create/workload_policy.py_CommonArgsr      sH     ++F3f$$V,II    c                     |j                   N| j                  j                  |j                  j                  j
                  k7  rt        j                  dd      yy)zValidates the workload policy.Nz--accelerator-topologyzMAccelerator topology is only supported for high throughput workload policies.)accelerator_topologyworkloadPolicytypeResourcePolicyWorkloadPolicyTypeValueValuesEnumHIGH_THROUGHPUTr   InvalidArgumentException)resource_policymessagesargss      r   ValidateWorkloadPolicyr!   (   s`    	*$$))		.	.	B	B	R	RS 
-
- 	 S +r   c                   &    e Zd ZdZed        Zd Zy)CreateWorkloadPolicyGa1Create a Compute Engine workload resource policy.c                     t        |        y )N)r   r   s    r   ArgszCreateWorkloadPolicyGa.Args:   s
    r   c                 .   t        j                  | j                               }|j                  }t	        j
                         j                  ||j                  t        j                  |j                              }|j                  j                  }t        j                  |||      }t        |||       |j                  ||j                  |j                         }|j                  j"                  j$                  }|j'                  |d|fg      d   S )N)scope_lister)resourcePolicyprojectregionInsertr   )r   ComputeApiHolderReleaseTrackclientr	   r   ResolveAsResource	resourcescompute_flagsGetDefaultScopeListerr   r
   MakeWorkloadPolicyr!   $ComputeResourcePoliciesInsertRequestr*   r+   apitools_clientresourcePoliciesMakeRequests)	selfr    holderr/   
policy_refr   r   create_requestservices	            r   RunzCreateWorkloadPolicyGa.Run>   s    **4+<+<+>?F]]F,,.@@"88G A J }}%%H--j$IO?Hd;BB&""   C N mm++<<G(N CDEaHHr   N)__name__
__module____qualname____doc__staticmethodr&   r>    r   r   r#   r#   5   s     : Ir   r#   c                       e Zd ZdZy)CreateWorkloadPolicyBetar$   Nr?   r@   rA   rB   rD   r   r   rF   rF   U       9r   rF   c                       e Zd ZdZy)CreateWorkloadPolicyAlphar$   NrG   rD   r   r   rJ   rJ   Z   rH   r   rJ   r$   z;To create a workload policy:

$ {command} NAME --type=TYPE
)DESCRIPTIONEXAMPLESN)rB   
__future__r   r   r   googlecloudsdk.api_lib.computer   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.computer	   r2   4googlecloudsdk.command_lib.compute.resource_policiesr
   r   r!   UniverseCompatibleReleaseTracksr.   GACreateCommandr#   BETArF   ALPHArJ   detailed_helprD   r   r   <module>rY      s    & &  ' 7 ( . E F E
 D%%(()IT// I * I< D%%**+:5 : ,: D%%++,: 6 : -:
 K(  $r   