
                             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Jr  SS	KJr  SS
KJr  SSKJr  SSKJr  \
R&                  \
R(                   " S S\
R*                  5      5       5       rg)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                   8    \ rS rSrSrSSS.r\S 5       rS rSr	g	)
AddIamPolicyBinding   z&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                 N    U R                  SSS9  [        R                  " U SS9  g )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ArgsAddIamPolicyBinding.Args8   s,    
A  C**6F    c                    [         R                  " UR                  5      n[        R                  " UR
                  U5        [        R                  " UR
                  U5        [        R                  " UR                  5      R                  UR                  UR                  UR                  5      n[        R                  " UU[         R"                  " SS5      U[$        R&                  5      $ )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   Run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____firstlineno____doc__detailed_helpstaticmethodr   r2   __static_attributes__r4   r   r   r   r      s3     /
	
-( G G
r   r   N)r9   
__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   r4   r   r   <module>rG      s]    @ &  ' 6 , ( 3 : ? : H *$,, *  *r   