
                             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lmZ e
j&                  e
j(                   G d de
j*                                      Zy)z9Implementation of objects add-iam-policy-binding command.    )absolute_import)division)unicode_literals)api_factory)apis)base)iam_util)errors_util)iam_command_util)storage_url)set_iam_policy_taskc                   0    e Zd ZdZdddZed        Zd Zy)AddIamPolicyBindingz&Grant a principal access to an object.z
      Add an IAM policy binding to an object. For more information, see [Cloud
      Identity and Access
      Management](https://cloud.google.com/storage/docs/access-control/iam).
      a\  
      To grant full control of OBJECT in BUCKET to the user
      john.doe@example.com:

        $ {command} gs://BUCKET/OBJECT --member=user:john.doe@example.com --role=roles/storage.legacyObjectOwner

      To make OBJECT publicly readable:

        $ {command} gs://BUCKET/OBJECT --member=AllUsers --role=roles/storage.legacyObjectReader
      )DESCRIPTIONEXAMPLESc                 X    | j                  dd       t        j                  | d       y )Nurlz+URL of bucket to add IAM policy binding to.)helpT)add_condition)add_argumentr	   AddArgsForAddIamPolicyBinding)parsers    5lib/surface/storage/objects/add_iam_policy_binding.pyArgszAddIamPolicyBinding.Args8   s,    
A  C**6F    c                    t        j                  |j                        }t        j                  |j
                  |       t        j                  |j
                  |       t        j                  |j                        j                  |j                  |j                  |j                        }t        j                  ||t!        j"                  dd      |t$        j&                        S )Nstoragev1)r   storage_url_from_stringr   r
   raise_error_if_not_cloud_objectcommand_pathraise_error_if_not_gcsr   get_apischemeget_object_iam_policybucket_nameresource_name
generationr   add_iam_binding_to_resourcer   GetMessagesModuler   SetObjectIamPolicyTask)selfargs
url_objectpolicys       r   RunzAddIamPolicyBinding.Run>   s    44TXX>J//0A0A:N&&t'8'8*E  !2!23II
 8 8*:O:OQF77y$/22 r   N)__name__
__module____qualname____doc__detailed_helpstaticmethodr   r0    r   r   r   r      s3     /
	
-( G G
r   r   N)r4   
__future__r   r   r   googlecloudsdk.api_lib.storager   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper   googlecloudsdk.command_lib.iamr	   "googlecloudsdk.command_lib.storager
   r   r   (googlecloudsdk.command_lib.storage.tasksr   HiddenUniverseCompatibleCommandr   r7   r   r   <module>rB      s]    @ &  ' 6 , ( 3 : ? : H *$,, *  *r   