
                             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  SSKJr  \R*                   " S S\R,                  5      5       rg)zAImplementation of managed-folders add-iam-policy-binding command.    )absolute_import)division)unicode_literals)api_factory)errors)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.Add an IAM policy binding to a managed folder.z
      Add an IAM policy binding to a managed folder. For more information, see [Cloud
      Identity and Access
      Management](https://cloud.google.com/storage/docs/access-control/iam).
      aZ  
      To grant a single role to a single principal for a managed folder `managed-folder` in a bucket `bucket`:

        $ {command} gs://bucket/managed-folder --member=user:john.doe@example.com --role=roles/storage.objectCreator

      To make objects in `gs://bucket/managed-folder` publicly readable:

        $ {command} gs://bucket/managed-folder --member=allUsers --role=roles/storage.objectViewer

      To specify a custom role for a principal on `gs://bucket/managed-folder`:

        $ {command} gs://bucket/managed-folder --member=user:john.doe@example.com --role=roles/customRoleName
      )DESCRIPTIONEXAMPLESc                 N    U R                  SSS9  [        R                  " U SS9  g )Nurlz7URL of the managed folder to add IAM policy binding to.)helpT)add_condition)add_argumentr
   AddArgsForAddIamPolicyBinding)parsers    =lib/surface/storage/managed_folders/add_iam_policy_binding.pyArgsAddIamPolicyBinding.Args9   s-    
M   **6F    c                 0   [         R                  " UR                  5      n[        R                  " UR
                  U5        [        R                  " UR                  5      n[        R                  " SS5      n UR                  UR                  UR                  5      n[$        R&                  " UUUU[(        R*                  5      $ ! [        R                   a9    UR!                  UR                  UR                  5        UR#                  5       n Ntf = f)Nstoragev1)r   storage_url_from_stringr   r   "raise_error_if_not_gcs_folder_typecommand_pathr   get_apischemer   GetMessagesModuleget_managed_folder_iam_policybucket_nameresource_name
api_errorsNotFoundErrorcreate_managed_folderPolicyr   add_iam_binding_to_resourcer   SetManagedFolderIamPolicyTask)selfargsr   
api_clientmessagespolicys         r   RunAddIamPolicyBinding.Run@   s    

-
-dhh
7C2243D3DcJ$$SZZ0J%%i6H!77
//3,,f 7799 	 ## !&&s8I8IJ f!s   :&C A
DD N)
__name__
__module____qualname____firstlineno____doc__detailed_helpstaticmethodr   r6   __static_attributes__r8   r   r   r   r       s1    6


-* G Gr   r   N)r=   
__future__r   r   r   googlecloudsdk.api_lib.storager   r   r+   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper	   googlecloudsdk.command_lib.iamr
   "googlecloudsdk.command_lib.storager   r   r   (googlecloudsdk.command_lib.storage.tasksr   UniverseCompatibleCommandr   r8   r   r   <module>rJ      sT    H &  ' 6 ? , ( 3 : ? : H 4$,, 4 4r   