
    )                         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r\4S jrS r\4S jr\4S jrS rS rS rS rSS jrS rS rg)zCRM API Folders utilities.    )absolute_import)division)unicode_literals)
exceptions)organizations)policies)apis)iam_util)	resourcesv2c                 0    [         R                  " SU 5      $ Ncloudresourcemanager)r	   GetClientInstanceapi_versions    6lib/googlecloudsdk/api_lib/resource_manager/folders.pyFoldersClientr   !       			 6	DD    c                  n    [         R                  R                  5       n U R                  S[        5        U $ r   )r   REGISTRYCloneRegisterApiByNameFOLDERS_API_VERSION)registrys    r   FoldersRegistryr   %   s-    %%'(
35HI	/r   c                 ,    [        U 5      R                  $ N)r   foldersr   s    r   FoldersServicer!   +   s    	{	#	+	++r   c                 0    [         R                  " SU 5      $ r   )r	   GetMessagesModuler   s    r   FoldersMessagesr$   /   r   r   c                     U [        S5      S  $ )Nzfolders/)len)folder_names    r   FolderNameToIdr(   3   s    	S_%	&&r   c                 $    SR                  U 5      $ )Nzfolders/{0})format	folder_ids    r   FolderIdToNamer-   7   s    			i	((r   c                 ^    [        5       R                  [        5       R                  U S95      $ )N)	foldersId)r!   Getr$   %CloudresourcemanagerFoldersGetRequestr+   s    r   	GetFolderr2   ;   s1    				== > 
   r   c           	          [        5       nUR                  U UR                  UR                  [        R
                  S9S9S9n[        5       R                  U5      $ )N)requestedPolicyVersion)options)r/   getIamPolicyRequest)r$   .CloudresourcemanagerFoldersGetIamPolicyRequestGetIamPolicyRequestGetPolicyOptionsr
   !MAX_LIBRARY_IAM_SUPPORTED_VERSIONr!   GetIamPolicy)r,   messagesrequests      r   r;   r;   A   sj    (CC"66++8,M,M , O 7 P D Q'
 
		&	&w	//r   Nc                     [        5       nUR                  XS9nUR                  XS9n[        5       R	                  U5      $ )z<Calls /google.cloud.resourcemanager.v2.Folders.SetIamPolicy.)policy
updateMask)r/   setIamPolicyRequest)r$   SetIamPolicyRequest.CloudresourcemanagerFoldersSetIamPolicyRequestr!   SetIamPolicy)r,   r?   update_maskr<   set_iam_policy_requestr=   s         r   rD   rD   K   sS    (#77 8 -CC D G' 
		&	&w	//r   c                     [        U R                  5      n[        5       R                  SSU0SS9nUR	                  5       $ )zReturns the uri for resource.Nr/   zcloudresourcemanager.folders)params
collection)r(   namer   ParseSelfLink)resourcer,   
folder_refs      r   GetUrirO   V   sG    X]]+) &&
9%/ ' 1* 
			r   c                    / n[        U 5      n UGb?  UR                  R                  S5      S   nUR                  SU[	        U5      S.5        U(       a6  [
        R                  " USU5      nU H  nUR                  SUUS.5        M     UR                  R                  S5      S   nUR                  R                  S5      (       a  [        U5      nOvUR                  SU[        R                  " 5       R	                  U5      S.5        U(       a6  [
        R                  " USU5      nU H  nUR                  SUUS.5        M     SnUb  GM?  U$ ! [        R                   a    [        R                  " S5      ef = f)z5Gets IAM policies for given folder and its ancestors.N/   folder)typeidr?   organizationzKUser is not permitted to access IAM policy for one or more of the ancestors)r2   rJ   splitappendr;   policies_apiListDenyPoliciesparent
startswithr   Clientapi_exceptionsHttpForbiddenErrorr   #AncestorsIamPolicyAccessDeniedError)	r,   include_denyrelease_trackr   rM   resource_iddeny_policiesdeny_policy	parent_ids	            r   GetAncestorsIamPolicyrg   `   s   (y!(*

MM'',Q/koo - 	 
$55k86CE(K
//#  ) //'',Q/i		#	#H	-	-Y'"#**,99)D
 	
 &77	8F8EG- +kOO&!%  + K 
V 
/ 
	*	* 

8
8	 s   E E +E?r   ) __doc__
__future__r   r   r   apitools.base.pyr   r^   +googlecloudsdk.api_lib.cloudresourcemanagerr   googlecloudsdk.api_lib.iamr   rY   googlecloudsdk.api_lib.utilr	   googlecloudsdk.command_lib.iamr
   +googlecloudsdk.command_lib.resource_managergooglecloudsdk.corer   r   r   r   r!   r$   r(   r-   r2   r;   rD   rO   rg    r   r   <module>rr      sv    ! &  ' 9 E ? , 3 B )  2 E  3 , !4 E') 001r   