
    v;                     L   S r SSKJr  SSKJr  SSKJr  SSK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rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S  r)S! r*S" r+S# r,S$ r-S% r.S& r/S' r0S( r1S) r2S* r3S+ r4g),z;Client for interaction with DataTaxonomy API CRUD DATAPLEX.    )absolute_import)division)unicode_literalsN)encoding)util)
exceptions)iam_util)yaml)filesc                     [         R                  " 5       nUR                  U R                  U R                  U R
                  S9nU$ )z-Generate Resource Access Spec From Arguments.)ownersreaderswriters)dataplex_apiGetMessageModule'GoogleCloudDataplexV1ResourceAccessSpecresource_ownersresource_readersresource_writers)argsmoduleresource_access_specs      4lib/googlecloudsdk/api_lib/dataplex/data_taxonomy.pyGenerateResourceAccessSpecr   !   sJ    ((*&GG!!#### H % 
    c                 b    [         R                  " 5       nUR                  U R                  S9nU$ )z)Generate Data Access Spec From Arguments.)r   )r   r   #GoogleCloudDataplexV1DataAccessSpecdata_readers)r   r   data_access_specs      r   GenerateDataAccessSpecr    +   s6    ((*&?? @ !	r   c                     [         R                  " 5       nUR                  U R                  U R                  [         R
                  " UR                  U 5      S9nU$ )zCreate Data Taxonomy Requests.)descriptiondisplayNamelabels)r   r   !GoogleCloudDataplexV1DataTaxonomyr"   display_nameCreateLabelsr   r   requests      r   $GenerateDataTaxonomyForCreateRequestr*   3   sW    ((*&44""##&&v'O'O'+- 5 .'
 
.r   c           	          [         R                  " 5       nUR                  U R                  U R                  U R
                  [         R                  " UR                  U 5      S9$ )zUpdate Data Taxonomy Requests.)r"   r#   etagr$   )r   r   r%   r"   r&   r,   r'   )r   r   s     r   $GenerateDataTaxonomyForUpdateRequestr-   >   sZ    ((*&		1	1""##99&&v'O'O'+-	 
2 
. .r   c                     / nU R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U$ )$Create Update Mask for DataTaxonomy.r"   r&   r#   r$   IsSpecifiedappendr   update_masks     r   GenerateUpdateMaskr5   I   sj    +	m$$}%	n%%}%	hx 	r   c                 z   / nU R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S	5      (       a  UR                  S
5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U$ )r/   r"   r&   r#   r$   parentparentIdr   zresourceAccessSpec.readersr   zresourceAccessSpec.writersr   zresourceAccessSpec.ownersr   zdataAccessSpec.readersr0   r3   s     r   GenerateAttributeUpdateMaskr9   U   s   +	m$$}%	n%%}%	hx 	hz"	())34	())34	'((23	n%%/0	r   c                 ,   / nU R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S5      (       a  UR                  S5        U R                  S	5      (       a  UR                  S	5        U$ )
z,Create Update Mask for DataAttributeBinding.r"   r&   r#   r$   resource_attributes
attributespathspath_file_namer,   r0   r3   s     r   "GenerateAttributeBindingUpdateMaskr?   k   s    +	m$$}%	n%%}%	hx 	+,,|$	gw	&''w	fv	r   c                     [         R                  " 5       nUR                  UR                  UR                  [        X5      [        U5      [        U5      [         R                  " UR                  U5      S9nU$ )zCreate Data Attribute Requests.)r"   r#   r8   resourceAccessSpecdataAccessSpecr$   )	r   r   "GoogleCloudDataplexV1DataAttributer"   r&   ResolveParentIdr   r    r'   data_attribute_refr   r   r)   s       r   %GenerateDataAttributeForCreateRequestrG      sr    ((*&55""## 183D9+D1&&

3
3T; 6 	<' 
.r   c                     UR                  S5      (       aR  UR                  R                  S5      S:X  a3  U R                  5       R	                  SS5      S   S-   UR                  -   $ UR                  $ )Nr7   /   r   )r1   r7   findRelativeNamersplit)rF   r   s     r   rD   rD      sn    
x  T[[%5%5c%:b%@** 

&a.!"$(KK0 0 ;;r   c                 
   [         R                  " 5       nUR                  UR                  UR                  [        X5      [        U5      [        U5      UR                  [         R                  " UR                  U5      S9nU$ )z7Generate attributes for Update Data Attribute Requests.)r"   r#   r8   rA   rB   r,   r$   )
r   r   rC   r"   r&   rD   r   r    r,   r'   rE   s       r   %GenerateDataAttributeForUpdateRequestrP      sw    ((*&55""##183D9+D199&&

3
3T; 6 <' 
.r   c                     U R                  S5      (       a   [        U R                  U R                  5      $ [	        U 5      $ )z%Generate Data Attribute Binding Path.r>   )r1   $GenerateAttributeBindingPathFromFiler>   path_file_format%GenerateAttributeBindingPathFromParam)r   s    r   GenerateAttributeBindingPathrU      s?    	&''/T224 4 166r   c           	          [         R                  " 5       n/ nU R                  bP  U R                   H@  nUR                  UR	                  UR                  S5      UR                  S5      S95        MB     U$ )z*Create Path from specified path parameter.namer<   )rW   r<   )r   r   r=   r2   -GoogleCloudDataplexV1DataAttributeBindingPathget)r   r   attribute_binding_pathpaths       r   rT   rT      so    ((*&	ZZ

##

>
>88F#,/ ?   
 r   c                 T   [         R                  R                  U 5      (       d%  [        R                  " SR                  U 5      5      e[         R                  R                  U 5      (       a%  [        R                  " SR                  U 5      5      e [        R                  " U 5       n[        X!5      sSSS5        $ ! , (       d  f       g= f! [         aM  n[        US[        R                  " U5      5      nSR                  X5      n[        R                  " U5      eSnAff = f)z Create Path from specified file.zNo such file [{0}]z[{0}] is a directoryNmessagezBUnable to read Path config from specified file [{0}] because [{1}])osr[   existsr   BadFileExceptionformatisdirr   
FileReaderConvertPathFileToProto	Exceptiongetattrsix	text_type)r>   rS   import_fileexpexp_msgmsgs         r   rR   rR      s    		'	'

%
%&:&A&A'  WW]]>""

%
%&<&C&C'  +			.	)[#KB 
*	)	)	 +c9cmmC&89G!!'!@ 

%
%c
**	+s7   C *B?5	C ?
C	C C 
D'AD""D'c                    US:X  a  [         R                  " U 5      nO [        R                  " U 5      n[        R                  " 5       R                  n/ nUS    H(  nUR                  [        R                  " XF5      5        M*     U$ ! [         a>  n[        R
                  " SR                  [        R                  " U5      5      5      eSnAff = f)a  Construct a DataAttributeBindingPath from a JSON/YAML formatted file.

Args:
  path_file_path: Path to the JSON or YAML file.
  path_file_format: Format for the file provided.
  If file format will not be provided by default it will be json.

Returns:
  a protorpc.Message of type GoogleCloudDataplexV1DataAttributeBindingPath
  filled in from the JSON or YAML path file.

Raises:
  BadFileException if the JSON or YAML file is malformed.
r
   zError parsing JSON: {0}Nr=   )r
   loadjson
ValueErrorr   r`   ra   rg   rh   r   r   rX   r2   r   PyValueToMessage)path_file_pathrS   parsed_pathepath_messagerZ   r[   s          r   rd   rd      s     ))N+KIIn-k
 .. 55 '"d!!(";";L"OP #	  ''(A(H(H
--
)  s   B	 	
C9CCc                     [         R                  " 5       nUR                  U R                  U R                  U R
                  U R                  [        U 5      [         R                  " UR                  U 5      S9nU$ )z'Create Data Attribute Binding Requests.)r"   r#   resourcer<   r=   r$   )	r   r   )GoogleCloudDataplexV1DataAttributeBindingr"   r&   rw   r;   rU   r'   r(   s      r   ,GenerateDataAttributeBindingForCreateRequestry      sq    ((*&<<""##}}))(.&&

:
:DB = C' 
.r   c                     [         R                  " 5       nUR                  U R                  U R                  U R
                  U R                  [        U 5      [         R                  " UR                  U 5      S9nU$ )z'Update Data Attribute Binding Requests.)r"   r#   r,   r<   r=   r$   )	r   r   rx   r"   r&   r,   r;   rU   r'   r(   s      r   ,GenerateDataAttributeBindingForUpdateRequestr{      sq    ((*&<<""##99))(.&&

:
:DB = C' 
.r   c                 j    [         R                  " U [         R                  " 5       R                  5      $ )z=Waits for the given google.longrunning.Operation to complete.)r   WaitForOperationGetClientInstance!projects_locations_dataTaxonomies)	operations    r   r}   r}     s,    		&	&$$&HH
J Jr   c                     [         R                  " 5       R                  U R                  5       [         R                  " 5       R	                  US9S9n[         R
                  " 5       R                  R                  U5      $ zSet Iam Policy request.)policy)rw   googleIamV1SetIamPolicyRequest)r   r   :DataplexProjectsLocationsDataTaxonomiesSetIamPolicyRequestrM   GoogleIamV1SetIamPolicyRequestr~   r   SetIamPolicy)taxonomy_refr   set_iam_policy_reqs      r   DataTaxonomySetIamPolicyr     sq    #44 >>((*%1%B%B%D%%V%4 ? 6 
 
	'	' 
%%ll3E&FGr   c                     [         R                  " 5       R                  U R                  5       S9n[         R                  " 5       R
                  R                  U5      $ zGet Iam Policy request.)rw   )r   r   :DataplexProjectsLocationsDataTaxonomiesGetIamPolicyRequestrM   r~   r   GetIamPolicy)r   get_iam_policy_reqs     r   DataTaxonomyGetIamPolicyr     sW    #44 >>((* ? ,  
	'	' 
%%ll3E&FGr   c                     [        U 5      n[        R                  " [        R                  " 5       R
                  X1U5        [        X5      $ zAdd IAM policy binding request.)r   r	   AddBindingToIamPolicyr   r   GoogleIamV1Bindingr   r   memberroler   s       r   DataTaxonomyAddIamPolicyBindingr   '  s<    #L1&
  ##%88&$P	!,	77r   c                 \    [        U 5      n[        R                  " X1U5        [        X5      $ z"Remove IAM policy binding request.)r   r	   RemoveBindingFromIamPolicyr   r   s       r   "DataTaxonomyRemoveIamPolicyBindingr   /  s'    #L1&
%%fd;	!,	77r   c                     [         R                  " U[        R                  " 5       R                  5      n[        X5      $ z)Set IAM policy binding request from file.)r	   ParsePolicyFiler   r   GoogleIamV1Policyr   )r   policy_filer   s      r    DataTaxonomySetIamPolicyFromFiler   6  s4    ####%779& 
",	77r   c                     [         R                  " 5       R                  U R                  5       [         R                  " 5       R	                  US9S9n[         R
                  " 5       R                  R                  U5      $ r   )r   r   DDataplexProjectsLocationsDataTaxonomiesAttributesSetIamPolicyRequestrM   r   r~   ,projects_locations_dataTaxonomies_attributesr   )rF   r   r   s      r   DataAttributeSetIamPolicyr   >  ss    #44 HH!..0%1%B%B%D%%V%4 I 6 
 
	'	' 
002r   c                     [         R                  " 5       R                  U R                  5       S9n[         R                  " 5       R
                  R                  U5      $ r   )r   r   DDataplexProjectsLocationsDataTaxonomiesAttributesGetIamPolicyRequestrM   r~   r   r   )rF   r   s     r   DataAttributeGetIamPolicyr   J  sY    #44 HH!..0 I 2  
	'	' 
002r   c                     [        U 5      n[        R                  " [        R                  " 5       R
                  X1U5        [        X5      $ r   r   r	   r   r   r   r   r   rF   r   r   r   s       r    DataAttributeAddIamPolicyBindingr   T  s>    $%78&
  ##%88&$P	"#5	>>r   c                 \    [        U 5      n[        R                  " X1U5        [        X5      $ r   r   r	   r   r   r   s       r   #DataAttributeRemoveIamPolicyBindingr   \  s)    $%78&
%%fd;	"#5	>>r   c                     [         R                  " U[        R                  " 5       R                  5      n[        X5      $ r   r	   r   r   r   r   r   )rF   r   r   s      r   !DataAttributeSetIamPolicyFromFiler   c  s5    ####%779& 
##5	>>r   c                     [         R                  " 5       R                  U R                  5       [         R                  " 5       R	                  US9S9n[         R
                  " 5       R                  R                  U5      $ r   )r   r   ADataplexProjectsLocationsDataAttributeBindingsSetIamPolicyRequestrM   r   r~   (projects_locations_dataAttributeBindingsr   )attribute_binding_refr   r   s      r    DataAttributeBindingSetIamPolicyr   k  sr    #44 EE$113%1%B%B%D%%V%4 F 6 
 
	'	' 
,,\\:L-MNr   c                     [         R                  " 5       R                  U R                  5       S9n[         R                  " 5       R
                  R                  U5      $ r   )r   r   ADataplexProjectsLocationsDataAttributeBindingsGetIamPolicyRequestrM   r~   r   r   )r   r   s     r    DataAttributeBindingGetIamPolicyr   v  sX    #44 EE$113 F 5  
	'	' 
,,\\:L-MNr   c                     [        U 5      n[        R                  " [        R                  " 5       R
                  X1U5        [        X5      $ r   r   r   r   r   r   s       r   'DataAttributeBindingAddIamPolicyBindingr     s@     %%:;&
  ##%88&$P	"#8	AAr   c                 \    [        U 5      n[        R                  " X1U5        [        X5      $ r   r   r   s       r   *DataAttributeBindingRemoveIamPolicyBindingr     s+     %%:;&
%%fd;	"#8	AAr   c                     [         R                  " U[        R                  " 5       R                  5      n[        X5      $ r   r   )r   r   r   s      r   (DataAttributeBindingSetIamPolicyFromFiler     s7     ####%779& 
##8	AAr   )5__doc__
__future__r   r   r   ro   r^   apitools.base.pyr   googlecloudsdk.api_lib.dataplexr   r   googlecloudsdk.callioper   googlecloudsdk.command_lib.iamr	   googlecloudsdk.corer
   googlecloudsdk.core.utilr   rg   r   r    r*   r-   r5   r9   r?   rG   rD   rP   rU   rT   rR   rd   ry   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   <module>r      s    B &  '  	 % @ . 3 $ * 
.	,( 7 +$ @JGG888	???NNBBBr   