
                             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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.    )
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%   0   s    	S_%	&&r   c                 $    SR                  U 5      $ )Nzfolders/{0})format	folder_ids    r   FolderIdToNamer*   4   s    			i	((r   c                 ^    [        5       R                  [        5       R                  U S95      $ )N)	foldersId)r   Getr!   %CloudresourcemanagerFoldersGetRequestr(   s    r   	GetFolderr/   8   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   r8   r8   >   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_maskr9   set_iam_policy_requestr:   s         r   rA   rA   H   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   GetUrirL   S   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)r/   rG   splitappendr8   policies_apiListDenyPoliciesparent
startswithr   Clientapi_exceptionsHttpForbiddenErrorr   #AncestorsIamPolicyAccessDeniedError)	r)   include_denyrelease_trackr   rJ   resource_iddeny_policiesdeny_policy	parent_ids	            r   GetAncestorsIamPolicyrd   ]   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__apitools.base.pyr   r[   +googlecloudsdk.api_lib.cloudresourcemanagerr   googlecloudsdk.api_lib.iamr   rV   googlecloudsdk.api_lib.utilr   googlecloudsdk.command_lib.iamr   +googlecloudsdk.command_lib.resource_managergooglecloudsdk.corer   r   r   r   r   r!   r%   r*   r/   r8   rA   rL   rd    r   r   <module>rn      so    ! : E ? , 3 B )  2 E  3 , !4 E') 001r   