
    )                         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ZefdZd ZefdZefdZd Zd Zd Zd ZddZd Zd Zy)zCRM API Folders utilities.    )absolute_import)division)unicode_literals)
exceptions)organizations)policies)apis)iam_util)	resourcesv2c                 .    t        j                  d|       S Ncloudresourcemanager)r	   GetClientInstanceapi_versions    6lib/googlecloudsdk/api_lib/resource_manager/folders.pyFoldersClientr   !       			 6	DD    c                  n    t         j                  j                         } | j                  dt               | S r   )r   REGISTRYCloneRegisterApiByNameFOLDERS_API_VERSION)registrys    r   FoldersRegistryr   %   s-    %%'(
35HI	/r   c                 ,    t        |       j                  S N)r   foldersr   s    r   FoldersServicer!   +   s    	{	#	+	++r   c                 .    t        j                  d|       S r   )r	   GetMessagesModuler   s    r   FoldersMessagesr$   /   r   r   c                     | t        d      d  S )Nzfolders/)len)folder_names    r   FolderNameToIdr(   3   s    	S_%	&&r   c                 $    dj                  |       S )Nzfolders/{0})format	folder_ids    r   FolderIdToNamer-   7   s    			i	((r   c                 d    t               j                  t               j                  |             S )N)	foldersId)r!   Getr$   %CloudresourcemanagerFoldersGetRequestr+   s    r   	GetFolderr2   ;   s1    				== > 
   r   c                     t               }|j                  | |j                  |j                  t        j
                                    }t               j                  |      S )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                     t               }|j                  ||      }|j                  | |      }t               j	                  |      S )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   sX    (#77 8 -CC/E D G' 
		&	&w	//r   c                     t        | j                        }t               j                  dd|id      }|j	                         S )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                    g }t        |       }	 |'|j                  j                  d      d   }|j                  d|t	        |      d       |r3t        j                  |d|      }|D ]  }|j                  d||d        |j                  j                  d      d   }|j                  j                  d      rt        |      }nm|j                  d|t        j                         j	                  |      d       |r3t        j                  |d|      }|D ]  }|j                  d||d        d}|'|S # t        j                  $ r t        j                  d      w xY w)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   D(D; ;)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   