
                             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 ddlmZ ej*                   G d dej,                               Zy)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                   0    e Zd ZdZdddZed        Zd Zy)AddIamPolicyBindingz.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                 X    | j                  dd       t        j                  | d       y )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ArgszAddIamPolicyBinding.Args9   s-    
M   **6F    c                 $   t        j                  |j                        }t        j                  |j
                  |       t        j                  |j                        }t        j                  dd      }	 |j                  |j                  |j                        }t%        j&                  ||||t(        j*                        S # t        j                  $ r9 |j!                  |j                  |j                         |j#                         }Y rw xY w)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   Runz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   6&C A	DDN)__name__
__module____qualname____doc__detailed_helpstaticmethodr   r4    r   r   r   r       s1    6


-* G Gr   r   N)r8   
__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   r;   r   r   <module>rE      sT    H &  ' 6 ? , ( 3 : ? : H 4$,, 4 4r   