
                            S r SSKJr  SSKJr  SSKJr  SSK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  SSKJr  S r\R6                   " S S\R8                  5      5       rg)z9Implementation of managed-folders set-iam-policy command.    )absolute_import)division)unicode_literalsN)api_factory)metadata_field_converters)base)iam_util)errors_util)flags)folder_util)iam_command_util)name_expansion)storage_url)wildcard_iterator)set_iam_policy_task)logc              #     #    [         R                  " 5       n[        R                  " U [        R
                  R                  SUS9 H0  n[        R                  " UR                  R                  U5      v   M2     UR                  5        H  u  pEU(       a  M  [        R                  " U5      (       a  [        R                  " SU-   5        MD  [        R                   " U5      n["        R$                  " UR&                  5      R)                  UR*                  UR,                  5        [        R                  " Xa5      v   M     g7f)z+Generates SetIamPolicyTask's for execution.F)managed_folder_settingraise_error_for_unmatched_urlsurl_found_match_trackerz`Not creating managed folder for URL containing wildcard that did not match any managed folders: N)collectionsOrderedDictr   NameExpansionIteratorr   ManagedFolderSettingLIST_WITHOUT_OBJECTSr   SetManagedFolderIamPolicyTaskresourcer   itemsr   contains_wildcardr   warningstorage_url_from_stringr   get_apischemecreate_managed_folderbucket_nameresource_name)url_stringspolicyr   name_expansion_result
url_stringfound_matchurls          5lib/surface/storage/managed_folders/set_iam_policy.py_set_iam_policy_task_iteratorr.   &   s    '335-CC(==RR%*5	  
;
;&&22   "9!>!>!@j**:66	kk)
 

-
-j
9C

#99** 
;
;C
HH "As   EEc                   8    \ rS rSrSrSSS.r\S 5       rS rSr	g	)
SetIamPolicyE   z(Set the IAM policy for a managed folder.z
      Set the IAM policy for a managed folder. For more information, see [Cloud
      Identity and Access
      Management](https://cloud.google.com/storage/docs/access-control/iam).
      z
      To set the IAM policy in POLICY-FILE on a managed folder `managed-folder` in a bucket `bucket`:

        $ {command} gs://bucket/managed-folder POLICY-FILE
      )DESCRIPTIONEXAMPLESc                     U R                  SSSS9  U R                  SSSS9  [        R                  " U 5        [        R                  " U 5        g )	Nurls+z4URLs for managed folders to apply the IAM policy to.)nargshelpz-ez--etagzCustom etag to set on IAM policy. API will reject etags that do not match this value, making it useful as a precondition during concurrent operations.)r8   )add_argumentr	   AddArgForPolicyFiler   add_continue_on_error_flag)parsers    r-   ArgsSetIamPolicy.ArgsV   s\    
C  
 &	     (	$$V,    c                 f   UR                    H:  n[        R                  " U5      n[        R                  " UR
                  U5        M<     [        R                  " UR                  UR                  S9n[        R                  " [        UR                   U5      UR                  5      u  pVXPl        U$ )N)custom_etag)r5   r   r!   r
   "raise_error_if_not_gcs_folder_typecommand_pathr   process_iam_filepolicy_fileetagr   execute_set_iam_task_iteratorr.   continue_on_error	exit_code)selfargsr*   r,   r(   rI   outputs          r-   RunSetIamPolicy.Runi   s    ii
//
;c44T5F5FL   '77diiF )FF%dii8$:P:PI NMr?   )rI   N)
__name__
__module____qualname____firstlineno____doc__detailed_helpstaticmethodr=   rM   __static_attributes__ r?   r-   r0   r0   E   s/    0


- - -$r?   r0   )rS   
__future__r   r   r   r   googlecloudsdk.api_lib.storager   'googlecloudsdk.api_lib.storage.gcs_jsonr   googlecloudsdk.callioper   googlecloudsdk.command_lib.iamr	   "googlecloudsdk.command_lib.storager
   r   r   r   r   r   r   (googlecloudsdk.command_lib.storage.tasksr   googlecloudsdk.corer   r.   UniverseCompatibleCommandr0   rW   r?   r-   <module>rb      si    @ &  '  6 M ( 3 : 4 : ? = : @ H #I> /4<< / /r?   