
                            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dlmZ ddZd Z 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j*                               Zy)z.Command to add IAM policy binding for a model.    )absolute_import)division)unicode_literals)models)base)iam_util)endpoint_util)flags)models_util)region_utilc                     t        j                         j                  |        t        j                  d      j                  |        t	        j
                  | t         j                  |       y )NT)include_globaladd_condition)r
   GetModelNameAddToParserGetRegionArgr   AddArgsForAddIamPolicyBindingMlEngineIamRolesCompleter)parserr   s     8lib/surface/ai_platform/models/add_iam_policy_binding.py_AddIamPolicyBindingFlagsr      sN    ""6*D)55f=
((e--]L    c                    t        j                  |       }t        j                  |      5  t	        j
                  t        j                         | j                  | j                  | j                        cd d d        S # 1 sw Y   y xY wN)region)r   	GetRegionr	   MlEndpointOverridesr   AddIamPolicyBindingr   ModelsClientmodelmemberrole)argsr   s     r   _Runr%   %   sY      &&((7**6+>+>+@$**+/;;		C 877s   AA>>Bc                   R    e Zd ZdZ ej
                  dddd      Zed        Zd Z	y	)
r   "Add IAM policy binding to a model.r!   my_modelroles/ml.adminFr#   	conditionc                     t        |        y Nr   r   s    r   ArgszAddIamPolicyBinding.Args3   
    f%r   c                     t        |      S r-   r%   selfr$   s     r   RunzAddIamPolicyBinding.Run7       :r   N
__name__
__module____qualname____doc__r   %GetDetailedHelpForAddIamPolicyBindingdetailed_helpstaticmethodr0   r6    r   r   r   r   ,   ;    *@(@@z 0EC- & &r   r   c                   R    e Zd ZdZ ej
                  dddd      Zed        Zd Z	y	)
AddIamPolicyBindingBetar'   r!   r(   r)   Fr*   c                     t        |        y r-   r.   r/   s    r   r0   zAddIamPolicyBindingBeta.ArgsB   r1   r   c                     t        |      S r-   r3   r4   s     r   r6   zAddIamPolicyBindingBeta.RunF   r7   r   Nr8   r@   r   r   rC   rC   ;   rA   r   rC   c                   R    e Zd ZdZ ej
                  dddd      Zed        Zd Z	y	)
AddIamPolicyBindingAlphazAdds IAM policy binding to a model.

  Adds a policy binding to the IAM policy of a ML engine model, given a model ID
  and the binding. One binding consists of a member, a role, and an optional
  condition.
  r!   r(   r)   Tr*   c                     t        | d       y )NTr   r.   r/   s    r   r0   zAddIamPolicyBindingAlpha.ArgsU   s    fD9r   c                    t        j                  |      }t        j                  |      5  t	        j
                  |      }t	        j                  ||j                         t        j                  t        j                         |j                  |j                  |j                  |      cd d d        S # 1 sw Y   y xY wr   )r   r   r	   r   r   ValidateAndExtractCondition'ValidateMutexConditionAndPrimitiveRolesr#   r    AddIamPolicyBindingWithConditionr   r    r!   r"   )r5   r$   r   r+   s       r   r6   zAddIamPolicyBindingAlpha.RunY   s    ""4(F		*	*&	966t<i66y$))L99




**
++
))
 
:	9	9s   A>B44B=Nr8   r@   r   r   rG   rG   J   s@     A(@@z 0DB- : :
r   rG   N)F)r<   
__future__r   r   r    googlecloudsdk.api_lib.ml_enginer   googlecloudsdk.callioper   googlecloudsdk.command_lib.iamr   $googlecloudsdk.command_lib.ml_enginer	   r
   r   r   r   r%   ReleaseTracksReleaseTrackGACommandr   BETArC   ALPHArG   r@   r   r   <module>rX      s    5 &  ' 3 ( 3 > 6 < <LC D%%(()$,,  * D%%**+1  , D%%++,t||  -r   