
                         v   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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SS.rSr " S S\R@                  5      r!\4S jr"\4S jr#S r$S r%\4S jr&\4S jr'\4S jr(\4S  jr) " S! S"\*5      r+ " S# S$\*5      r, " S% S&\*5      r- " S' S(\*5      r. " S) S*\*5      r/ " S+ S,\*5      r0 " S- S.\*5      r1 " S/ S0\*5      r2 " S1 S2\*5      r3 " S3 S4\*5      r4 " S5 S6\*5      r5 " S7 S8\*5      r6 " S9 S:\*5      r7g);z6Shared utilities for access the CloudAsset API client.    )encoding)
exceptions)
list_pager)apis)utils)	arg_utils)labels_util)repeated)log)yaml)timesN
cloudassetv1	v1p1beta1	v1p5beta1	v1p7beta1z!application/x-www-form-urlencodedGET)zContent-TypezX-HTTP-Method-Overridez=HTTP request failed with status code {}. Response content: {}c                       \ rS rSrSrSrg)MessageDecodeError1   z7Error raised when a failure to decode a message occurs. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       /lib/googlecloudsdk/api_lib/asset/client_util.pyr   r   1   s    ?r   r   c                 8    [         R                  " [        U 5      $ )z{Import and return the cloudasset messages module.

Args:
  version: the API version

Returns:
  cloudasset message module.
)r   GetMessagesModuleAPI_NAMEversions    r   GetMessagesr%   5        
		'	22r   c                 8    [         R                  " [        U 5      $ )z|Import and return the cloudasset client module.

Args:
  version: the API version

Returns:
  cloudasset API client module.
)r   GetClientInstancer"   r#   s    r   	GetClientr)   A   r&   r   c                 X    U S:X  a  gU S:X  a  gU S:X  a  gU S:X  a  gU S	:X  a  g
U S:X  a  gg)zTranslate content type from gcloud format to API format.

Args:
  content_type: the gcloud format of content_type

Returns:
  cloudasset API format of content_type.
resourceRESOURCEz
iam-policy
IAM_POLICYz
org-policy
ORG_POLICYzaccess-policyACCESS_POLICYzos-inventoryOS_INVENTORYrelationshipRELATIONSHIPCONTENT_TYPE_UNSPECIFIEDr   )content_types    r   ContentTypeTranslationr5   M   sI     Z\!\!_$^#^#	#r   c                      U S:X  a  gU S:X  a  gg)Nz	read-time	READ_TIMEzrequest-timeREQUEST_TIMEPARTITION_KEY_UNSPECIFIEDr   )partition_keys    r   PartitionKeyTranslationr;   e   s    k!n$	$r   c              #   .  #    [        U5      n[        R                  " U R                  UR                  R
                  5      n[        R                  " U R                  U R                  5      n[        R                  " U R                  5      nSnU R                  S5      (       a   [        R                  " U R                  5      nUR                  UR	                  U R                   U R"                  UUUUS95      nUR$                   H  n	U	v   M	     g7f)z-Manually make the get assets history request.Nend_time)
assetNamesrelationshipTypescontentTypeparentreadTimeWindow_endTimereadTimeWindow_startTime)r%   r   ChoiceToEnumr4   &CloudassetBatchGetAssetsHistoryRequestContentTypeValueValuesEnumasset_utilsGetParentNameForGetHistoryorganizationprojectr   FormatDateTime
start_timeIsSpecifiedr=   BatchGetAssetsHistoryasset_namesrelationship_typesassets)
argsserviceapi_versionmessagesr4   rA   rL   r=   responseassets
             r    MakeGetAssetsHistoryHttpRequestsrX   m   s      %(''
HH!!#, 11$2C2C26,,@&##DOO4*(	j!!##DMM2H**55%% 33"!)#- 6 	( e
K s   DDc              #   Z  #    U R                    H  n0 nUR                  UR                  S.nXCS'   / US'   UR                   H  n0 nUR                  R
                  US'   UR                  US'   UR                  US'   U[        :X  a*  UR                  (       a  UR                  R                  US'   US   R                  U5        M     Uv   M     U R                   H  n0 nUR                  R                  UR                  R                  UR                  R                   S.nXS	'   / US
'   UR"                   Hd  n	0 n
U	R$                  U
S'   U	R                  U
S'   U	R
                  U
S'   U	R                  U
S'   U	R&                  U
S'   US
   R                  U
5        Mf     Uv   M     g7f)zGRenders the analysis query and results of the AnalyzeIamPolicy request.)attachedResourcebindingpolicyACLs
identitiesaccesses	resourcesconditionEvaluationValue)r+   accessidentityaccess_tupledeny_details	deny_ruleexception_identitiesN)analysisResultsattachedResourceFullName
iamBindingaccessControlListsidentityListr^   r_   r`   DEFAULT_API_VERSIONconditionEvaluationevaluationValueappenddenyAnalysisResultsaccessTupler+   rb   rc   denyDetailsdenyRuleexceptionIdentities)analysisrT   analysis_resultentryr\   aclaclsdeny_analysis_resultrd   detaildeny_details              r   "_RenderAnalysisforAnalyzeIamPolicyr~      s     "11oE ,DD"--F (OE&M11d*77BBd<d:--d;	+	+0G0G*-*A*A*Q*Q 	&	(Fm4  2 K) 2, '::E )44==&2299(44==L
 ).E.&22k!'k+!'!1!1k+"("3"3k, &k*,2,F,Fk()N"";/ 3 K) ;s   F)F+c              #   
  #    U R                   (       a  SnOSnSnU R                  R                  (       a  SnU(       d/  U(       a(  U R                   H  nUR                  (       d  M  Sn  O   U(       d  US-  nOUS-  n[	        U R                  U5       H  nUv   M	     U(       a;  U R                   H+  nSUR
                  0nUv   [	        Xr5       H  nUv   M	     M-     [        R                  R                  U5        g7f)	z5Renders the response of the AnalyzeIamPolicy request.z)Your analysis request is fully explored. zpYour analysis request is NOT fully explored. You can use the --show-response option to see the unexplored part. FTzNo matching ACL is found.zbThe ACLs matching your requests are listed per IAM policy binding, so there could be duplications.z,Service Account Impersonation Analysis QueryN)	fullyExploredmainAnalysisrh   #serviceAccountImpersonationAnalysisr~   analysisQueryr   statusPrint)	rV   %analyze_service_account_impersonationrT   msghas_resultssa_impersonation_analysisrx   rv   titles	            r   "_RenderResponseforAnalyzeIamPolicyr      s     
 
5CAC +**K
@%-%Q%Q!	"	2	2	2 &R
 
&&C 0 1C 2(2G2G2=?e
K? +@@
8(:P:Pe k5hL% M A **3s   A"D(BDc                    [         R                  " U R                  U R                  U R                  5      nU R                  S5      (       a  U R                  OSnU R                  S5      (       a  U R                  OSnU R                  S5      (       a  U R                  O/ nU R                  S5      (       a  U R                  O/ nU R                  (       a  U R                  OSn	U R                  (       a  U R                  OSn
U R                  (       a  U R                  OSnU R                  (       a  U R                  OSnU R                  (       a  U R                  OSnU R                  S5      (       a  U R                   OSnSnU R"                  (       a4  U R$                  (       d  [&        R(                  " SS5      eU R"                  nSnU R*                  (       a4  U R$                  (       d  [&        R(                  " S	S5      eU R*                  nSnU R                  S
5      (       a  [-        U R.                  5      S-   nSnU R                  S5      (       a   [0        R2                  " U R4                  5      nUR7                  UR9                  UUUUU	U
UUUUUUUUUS95      nU R$                  (       d  [;        UX5      $ U$ )z-Manually make the analyze IAM policy request.full_resource_nameNrc   rolespermissionsinclude_deny_policy_analysisz--output-resource-edgesz9Must be set together with --show-response to take effect.z--output-group-edgesexecution_timeoutsaccess_time)(analysisQuery_accessSelector_permissions"analysisQuery_accessSelector_roles'analysisQuery_identitySelector_identity8analysisQuery_options_analyzeServiceAccountImpersonation"analysisQuery_options_expandGroups%analysisQuery_options_expandResources!analysisQuery_options_expandRoles/analysisQuery_options_includeDenyPolicyAnalysis&analysisQuery_options_outputGroupEdges)analysisQuery_options_outputResourceEdges/analysisQuery_resourceSelector_fullResourceName)analysisQuery_conditionContext_accessTimeexecutionTimeoutscopesavedAnalysisQuery)rG    GetParentNameForAnalyzeIamPolicyrI   rJ   folderrM   r   rc   r   r   expand_groupsexpand_resourcesexpand_rolessaved_analysis_queryr   IsKnownAndSpecifiedr   output_resource_edgesshow_responsegcloud_exceptionsInvalidArgumentExceptionoutput_group_edgesstrr   r   rK   r   AnalyzeIamPolicy!CloudassetAnalyzeIamPolicyRequestr   )rR   rS   rU   rT   rA   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   rV   s                       r    MakeAnalyzeIamPolicyHttpRequestsr      s   
 778I8I8<8<E& 372B2B3 3t..!%  #..z::T]](((11$**r%$($4$4]$C$C  +(,(:(:$$$-.2.C.CT**&*&7&7""T,6:6O6O22UYX\  YC  YC$*T*T  IM' 
	!	!"@	A	A ''  	66
#
EG G !66	66
 
EG G 00	)**D223c9+	m,,&&t'7'78K%%003>-22:Ch-:0@,8:V1C4I:L4?,1 1 (& 
		-7F F	/r   c                   *    \ rS rSrSr\4S jrS rSrg)AnalyzeIamPolicyClienti9  zClient for IAM policy analysis.c                 f    Xl         [        U5      U l        U R                  R                  U l        g NrT   r)   clientr   rS   selfrT   s     r   __init__AnalyzeIamPolicyClient.__init__<  s#    "K(DK;;>>DLr   c                 n    [        U R                  5      n[        XR                  UU R                  5      $ )z"Calls MakeAnalyzeIamPolicy method.)r%   rT   r   rS   )r   rR   rU   s      r   AnalyzeAnalyzeIamPolicyClient.AnalyzeB  s0    4++,H+D,,,0,<,<> >r   rT   r   rS   N	r   r   r   r   r   rm   r   r   r   r   r   r   r   r   9  s    '!4 ">r   r   c                   (    \ rS rSrSrSS jrS rSrg)AssetExportClientiI  zClient for export asset.Nc                     Xl         [        U l        [        U R                  5      U l        U(       a  UR
                  U l        g [        U R                  5      R
                  U l        g r   )rA   rm   rT   r%   message_moduler   r)   rS   )r   rA   r   s      r   r   AssetExportClient.__init__L  sF    K*D%d&6&67D &699DLId6F6F,G,J,JDLr   c                 (   [        UR                  5      n[        UR                  5      n[	        U R
                  R                  R                  U5      nUR                  (       d  UR                  (       aF  U R
                  R                  U R
                  R                  UR                  UR                  S9S9nOUR                  R                  R                  5       nU R
                  R                  U R
                  R                  SUR                   -   S-   UR"                  -   UR$                  UR&                  U R
                  R                  US9UR(                  S9S9nSnUR*                  (       a   [,        R.                  " UR*                  5      n[	        U R
                  R0                  R2                  U5      nU R
                  R1                  UR4                  UUUUR6                  S	9nU R
                  R9                  U R:                  US
9n U R<                  R?                  U5      n	U	$ ! [@        RB                   a  n
[D        RF                  " U
SS9eSn
A
f[@        RH                   a  n[D        RF                  " USS9eSnAff = f)z+Export assets with the asset export method.)uri	uriPrefixgcsDestination	projects/
/datasets/)partitionKey)datasettableforcepartitionSpecseparateTablesPerAssetTypebigqueryDestinationN)
assetTypesr@   outputConfigreadTimer?   )rA   exportAssetsRequestz{error_info})error_format)%r5   r4   r;   r:   getattrr   PartitionSpecPartitionKeyValueValuesEnumoutput_pathoutput_path_prefixOutputConfigGcsDestinationCONCEPTSbigquery_tableParseBigQueryDestination	projectId	datasetIdtableIdforce_	per_type_snapshot_timer   rK   ExportAssetsRequestrF   asset_typesrP   CloudassetExportAssetsRequestrA   rS   ExportAssetsapitools_exceptionsHttpBadRequestErrorr   HttpExceptionHttpForbiddenError)r   rR   r4   r:   output_config
source_refr   export_assets_requestrequest_message	operationbad_requestpermission_denys               r   ExportAssetExportClient.ExportR  s`   )$*;*;<L+D,>,>?M))EEM 422))66,,;;""d.E.E < G 7 Hm ==//557j))66"11EE!J$8$88<G""#&&KK //==, > .)- F 9 7 :m M**4+=+=>m//JJL !//CC## "11 D 3 ))GG{{0E H GO8,,++O<i  22 O$$[~NN11 8$$
8 88s$   H7 7JI  J7JJ)rT   r   rA   rS   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   I  s     K+r   r   c                   T    \ rS rSrSrS rS r\4S jrS r	S r
S rS	 rS
 rS rSrg)AssetSavedQueriesClienti  zClient for asset saved queries.c                 6    SR                  [        U5      5      $ )Nz, )joinlist)r   keyss     r   DictKeysToString(AssetSavedQueriesClient.DictKeysToString  s    99T$Z  r   c           
         [         R                  " U5      n [        [        UR	                  5       5      5      nX0R                  R	                  5       ;  aB  [        SR                  UU R                  U R                  R	                  5       5      5      5      eX#   n [        R                  " U R                  U   U5      nU$ !   [
        R                  " SR                  UU R                  U R                  R	                  5       5      5      5      e= f!   [
        R                  " SR                  U5      5      e= f)zQReturns a message populated from the JSON or YAML file on the specified filepath.z`Query file [{0}] is not a properly formatted YAML or JSON query file. Supported query type: {1}.z7query type {0} not supported. supported query type: {1}zEQuery file [{0}] is not a properly formatted YAML or JSON query file.)r   	load_pathnextiterr  r   BadFileExceptionformatr  supported_query_types	Exceptionr   PyValueToMessage)r   	file_pathfile_contentquery_type_strquery_content	query_objs         r   GetQueryContentFromFile/AssetSavedQueriesClient.GetQueryContentFromFile  s0   >>),LID!2!2!456n 77<<>>
C
J
J##D$>$>$C$C$EFHI I !0M+++

$
$^
4mEi +I..3396##D$>$>$C$C$EF4HI I+..y)+ +s   "C $D AD'D=c                     Xl         [        U5      U l        [        U5      R                  U l        SU R                  R                  0U l        g )NIamPolicyAnalysisQuery)rA   r%   r   r)   savedQueriesrS   r  r  r   rA   rT   s      r   r    AssetSavedQueriesClient.__init__  sA    K%k2D[)66DL $"5"5"L"L"Dr   c                    U R                  UR                  5      nU R                  R                  US9n[        R
                  " XR                  R                  R                  5      nU R                  R                  UUR                  US9nU R                  R                  U R                  XQR                  S9nU R                  R                  U5      $ )zCreate a SavedQuery.iamPolicyAnalysisQuerycontentdescriptionlabels)rA   
savedQuerysavedQueryId)r  query_file_pathr   QueryContentr	   ParseCreateArgs
SavedQueryLabelsValuer  #CloudassetSavedQueriesCreateRequestrA   query_idrS   Create)r   rR   r  saved_query_content
arg_labelssaved_queryr   s          r   r*  AssetSavedQueriesClient.Create  s    ,,I--::( ; *,,!!,,88:J%%00#$$ 1 K
 ))MM{{{ N PO<<//r   c                     U R                   R                  SR                  U R                  UR                  5      S9nU R
                  R                  U5      $ )zDescribe a saved query.{}/savedQueries/{}name)r    CloudassetSavedQueriesGetRequestr
  rA   r)  rS   Getr   rR   r   s      r   Describe AssetSavedQueriesClient.Describe  sL    ))JJ!((dmmD K FO<<O,,r   c                     U R                   R                  SR                  U R                  UR                  5      S9nU R
                  R                  U5        g)zDelete a saved query.r0  r1  N)r   #CloudassetSavedQueriesDeleteRequestr
  rA   r)  rS   Deleter5  s      r   r:  AssetSavedQueriesClient.Delete  sI    ))MM!((dmmD N FOLL(r   c                 ~    U R                   R                  U R                  S9nU R                  R	                  U5      $ )z"List saved queries under a parent.rA   )r   !CloudassetSavedQueriesListRequestrA   rS   Listr   r   s     r   r?  AssetSavedQueriesClient.List  s:    ))KK{{ L O<<_--r   c                    [         R                  R                  U5      nU R                  R                  R                  5       nUR                  5       (       al  U R                  U5      nUR                  U R                  R                  R
                  UR                  5      nUR                  (       a  UR                  nUS4$ US4$ )z!Get the updated labels from args.TF)r	   DiffFromUpdateArgsr   r&  r'  MayHaveUpdatesr6  Applyr   needs_update)r   rR   labels_diffr   orig_resourcelabels_updates         r   GetUpdatedLabels(AssetSavedQueriesClient.GetUpdatedLabels  s    ""11$7K  ++779F!!##mmD)m!''



(
(
4
4m6J6JLm		#	#%%t|5=r   c                    SnSnUR                   (       a9  U R                  UR                   5      nUS-  nU R                  R                  US9nSnUR                  (       a  UR                  nUS-  nU R                  U5      u  pgU(       a  US-  nU R                  R                  UUUS9nU R                  R                  SR                  U R                  UR                  5      UUS	9n	U R                  R                  U	5      $ )
zUpdate a saved query. Nr  r  z,descriptionz,labelsr  r0  )r2  r!  
updateMask)r#  r  r   r$  r  rK  r&  "CloudassetSavedQueriesPatchRequestr
  rA   r)  rS   Patch)
r   rR   update_maskr+  r  updated_descriptionupdated_labels
has_updater-  r   s
             r   UpdateAssetSavedQueriesClient.Update  s   K..


 iYk //<<!* = , ,,^#k!%!6!6t!<NYk%%00#' 1 K
 ))LL!((dmmD M  O <<o..r   )r   rA   rS   r  N)r   r   r   r   r   r  r  rm   r   r*  r6  r:  r?  rK  rV  r   r   r   r   r   r     s7    '!8 *= 0"-)./r   r   c                   H    \ rS rSrSr\4S jrS rS rS r	S r
S rS	 rS
rg)AssetFeedClienti  zClient for asset feed.c                 d    Xl         [        U5      U l        [        U5      R                  U l        g r   )rA   r%   r   r)   feedsrS   r  s      r   r   AssetFeedClient.__init__  s&    K%k2D[)//DLr   c           	         [        UR                  5      n[        U R                  R                  R
                  U5      nU R                  R                  U R                  R                  UR                  S9S9nU R                  R                  UR                  UR                  UR                  S9nU R                  R	                  UR                  UR                  UUUUR                  S9nU R                  R!                  XQR"                  S9nU R                  R%                  U R&                  US9nU R(                  R+                  U5      $ )zCreate a feed.topicpubsubDestination
expressionr   r  r>   r   r@   feedOutputConfig	conditionr?   )feedfeedId)rA   createFeedRequest)r5   r4   r   r   FeedrF   FeedOutputConfigPubsubDestinationpubsub_topicExprcondition_expressioncondition_titlecondition_descriptionrO   r   rP   CreateFeedRequestrg  CloudassetFeedsCreateRequestrA   rS   r*  )r   rR   r4   feed_output_configfeed_conditionrg  create_feed_requestr   s           r   r*  AssetFeedClient.Create  sM   )$*;*;<L4..33NN')L,,==--??## @ % > & ((--,,"".. . 0N ###### + 11 $ 3D --??)) @ %))FF{{.A G CO<<//r   c                     U R                   R                  SR                  U R                  UR                  5      S9nU R
                  R                  U5      $ )zDescribe a feed.{}/feeds/{}r1  )r   CloudassetFeedsGetRequestr
  rA   rg  rS   r4  r5  s      r   r6  AssetFeedClient.Describe  sK    ))CC!!$++tyy9 D ;O<<O,,r   c                     U R                   R                  SR                  U R                  UR                  5      S9nU R
                  R                  U5        g)zDelete a feed.ry  r1  N)r   CloudassetFeedsDeleteRequestr
  rA   rg  rS   r:  r5  s      r   r:  AssetFeedClient.Delete   sH    ))FF!!$++tyy9 G ;OLL(r   c                 ~    U R                   R                  U R                  S9nU R                  R	                  U5      $ )zList feeds under a parent.r=  )r   CloudassetFeedsListRequestrA   rS   r?  r@  s     r   r?  AssetFeedClient.List&  s:    ))DD{{ E O<<_--r   c           	         / n[        UR                  5      n[        U R                  R                  R
                  U5      nSR                  U R                  UR                  5      nUR                  (       d  UR                  (       a  UR                  S5        UR                  (       a  UR                  S5        UR                  (       d  UR                  (       a  UR                  S5        UR                  (       d  UR                  (       a  UR                  S5        UR                   (       d  UR"                  (       a  UR                  S5        U R%                  XU5      u  pVnSR'                  U5      nU R                  R)                  U R                  R+                  UR                  S9S	9n	U R                  R-                  UR                  UR                  UR                   S
9n
U R                  R	                  UUUU	U
US9nU R                  R/                  XS9nU R                  R1                  XLS9nU R2                  R5                  U5      $ )zUpdate a feed.ry  r4   z+feed_output_config.pubsub_destination.topiczcondition.expressionzcondition.titlezcondition.description,r^  r`  rb  rd  )rg  rO  )r2  updateFeedRequest)r5   r4   r   r   rj  rF   r
  rA   rg  clear_content_typerp   rm  ro  clear_condition_expressionrp  clear_condition_titlerq  clear_condition_description%UpdateAssetNamesTypesAndRelationshipsr   rk  rl  rn  UpdateFeedRequestCloudassetFeedsPatchRequestrS   rQ  )r   rR   update_masksr4   	feed_namerO   r   rP   rR  rt  ru  rg  update_feed_requestr   s                 r   rV  AssetFeedClient.Update,  s   L)$*;*;<L4..33NN')L$$T[[$))<ID33.)GH  D$C$C01t99+,!!T%E%E12373]3]4'0K0((<(K,,==--??## @ % > & ((--,,"".. . 0N ## + , $ .D --?? @ +))EE F ?O<<o..r   c                   ^ U R                   R                  U R                  R                  US95      m[        R
                  " USU4S j5      nUb  UR                  S5        O/ n[        R
                  " USU4S j5      nUb  UR                  S5        O/ n[        R
                  " USU4S j5      nUb  UR                  S5        O/ nXEU4$ )z9Get Updated assetNames, assetTypes and relationshipTypes.r1  rO   c                     > T R                   $ r   )r>   rg  s   r   <lambda>GAssetFeedClient.UpdateAssetNamesTypesAndRelationships.<locals>.<lambda>Z  	    door   r   c                     > T R                   $ r   )r   r  s   r   r  r  `  r  r   rP   c                     > T R                   $ r   )r?   r  s   r   r  r  f  s    D,B,Br   )rS   r4  r   rz  r
   ParsePrimitiveArgsrp   )r   rR   r  r  rO   r   rP   rg  s          @r   r  5AssetFeedClient.UpdateAssetNamesTypesAndRelationshipsT  s     <<5595EGD--dM.EGK-(k--dM.EGK-(k!44"$BD%./%777r   r   rA   rS   N)r   r   r   r   r   rm   r   r*  r6  r:  r?  rV  r  r   r   r   r   rY  rY    s,    )< 0
02-).&/P8r   rY  c                   .    \ rS rSrSrSrS rS rS rSr	g)	AssetSearchClientin  zClient for search assets.   c                 &   [        U5      U l        Xl        U[        :X  ay  [	        U5      R
                  U l        SU l        U R                  R                  U l	        [	        U5      R                  U l        SU l        U R                  R                  U l        g [	        U5      R                  U l        SU l        U R                  R                   U l	        [	        U5      R                  U l        SU l        U R                  R"                  U l        g )N	SearchAllSearchAllResourcesSearchAllIamPolicies)r%   r   rT   V1P1BETA1_API_VERSIONr)   r`   resource_servicesearch_all_resources_method#CloudassetResourcesSearchAllRequestsearch_all_resources_requestiamPoliciespolicy_servicesearch_all_iam_policies_method%CloudassetIamPoliciesSearchAllRequestsearch_all_iam_policies_requestr   #CloudassetSearchAllResourcesRequest%CloudassetSearchAllIamPoliciesRequestr   s     r   r   AssetSearchClient.__init__s  s    %k2D"++'4>>d)4d&*.*=*=*a*ad'%k2>>d,7d)-1-@-@-f-fd*'477d)=d&*.*=*=*a*ad'%k255d,Bd)-1-@-@-f-fd*r   c                 v   U R                   [        :X  a  0 nOSUR                  0nU R                  " S[        R
                  " U5      UR                  UR                  UR                  S.UD6n[        R                  " U R                  UU R                  SUR                  =(       d    U R                  SSSS9$ )	z Calls SearchAllResources method.readMaskr   queryr   orderByresultspageSize	pageTokennextPageTokenmethodfield
batch_sizebatch_size_attributecurrent_token_attributenext_token_attributer   )rT   r  	read_maskr  rG   GetDefaultScopeIfEmptyr  r   order_byr   YieldFromListr  r  	page_size_DEFAULT_PAGE_SIZE)r   rR   optional_extra_argsrequests       r   r  $AssetSearchClient.SearchAllResources  s    00'8// 006jj##	
 G ##//>><T%<%<' +,. .r   c                    U R                   [        :X  a/  U R                  [        R                  " U5      UR
                  S9nODU R                  [        R                  " U5      UR
                  UR                  UR                  S9n[        R                  " U R                  UU R                  SUR                  =(       d    U R                  SSSS9$ )z"Calls SearchAllIamPolicies method.)r   r  r  r  r  r  r  r  )rT   r  r  rG   r  r  r   r  r   r  r  r  r  r  r   rR   r  s      r   r  &AssetSearchClient.SearchAllIamPolicies  s    00442248

 5 Lg 442248

%%--	 5 !g
 ##22>><T%<%<' +,. .r   )rT   r   r  r  r  r  r  r  N)
r   r   r   r   r   r  r   r  r  r   r   r   r   r  r  n  s    !g$.,.r   r  c                   .    \ rS rSrSr\4S jrSS jrSrg)AssetListClienti  zClient for list assets.c                 d    Xl         [        U5      U l        [        U5      R                  U l        g r   )rA   r%   r   r)   rQ   rS   r  s      r   r   AssetListClient.__init__  s&    K%k2D[)00DLr   c                    SnUR                   (       a   [        R                  " UR                   5      n[        UR                  5      nU R
                  R                  U R                  [        U R
                  R                  R                  U5      UR                  UUR                  S9n[        R                  " U R                  USUR                  UR                   SSSU(       a  UR"                  S9	$ SS9	$ )z'List assets with the asset list method.N)rA   r@   r   r   r?   rQ   r  r  r  )r  limitr  r  r  r  	predicate)r   r   rK   r5   r4   r   CloudassetAssetsListRequestrA   r   rF   r   rP   r   r  rS   r  r  filter_func)r   rR   	do_filterr   r4   list_assets_requests         r   r?  AssetListClient.List  s    M**4+=+=>m)$*;*;<L--II{{;;''7 ##11 J 3 ##jj>>' +,&/$""	; 	; 6:	; 	;r   r  N)F)	r   r   r   r   r   rm   r   r?  r   r   r   r   r  r    s    )< 1
;r   r  c                   *    \ rS rSrSr\4S jrS rSrg)AssetOperationClienti  zClient for operations.c                 l    [        U5      R                  U l        [        U5      R                  U l        g r   )r)   
operationsrS   r%   CloudassetOperationsGetRequestmessager   s     r   r   AssetOperationClient.__init__  s&    [)44DL{+JJDLr   c                 V    U R                  US9nU R                  R                  U5      $ )Nr1  )r  rS   r4  )r   r2  r  s      r   r4  AssetOperationClient.Get  s'    lll%G<<G$$r   )r  rS   N)	r   r   r   r   r   rm   r   r4  r   r   r   r   r  r    s    !4 K%r   r  c                   *    \ rS rSrSr\4S jrS rSrg)GetHistoryClienti  zClient for get history assets.c                 f    Xl         [        U5      U l        U R                  R                  U l        g r   r   r   s     r   r   GetHistoryClient.__init__  s#    "K(DK;;>>DLr   c                 B    [        XR                  U R                  5      $ r   )rX   rS   rT   )r   rR   s     r   
GetHistoryGetHistoryClient.GetHistory  s    +D,,,0,<,<> >r   r   N)	r   r   r   r   r   rm   r   r  r   r   r   r   r  r    s    &!4 "
>r   r  c                   *    \ rS rSrSr\4S jrS rSrg)"IamPolicyAnalysisLongrunningClienti  z-Client for analyze IAM policy asynchronously.c                 X    [        U5      U l        [        U5      R                  U l        g r   r%   r   r)   r   rS   r   s     r   r   +IamPolicyAnalysisLongrunningClient.__init__  !    %k2D[),,DLr   c                    U R                   R                  5       nXl        UR                  S5      (       a(  U R                   R	                  UR
                  S9Ul        UR                  S5      (       a(  U R                   R                  UR                  S9Ul	        UR                  S5      (       d  UR                  S5      (       a  U R                   R                  5       Ul        UR                  S5      (       a/  UR                  R                  R                  UR                  5        UR                  S5      (       a/  UR                  R                  R                  UR                  5        SnUR                  (       a;  U R                   R!                  U R                   R#                  UR                  S9S	9nOU R                   R!                  U R                   R%                  UR&                  UR(                  S
9S9nUR                  S5      (       aC  [+        U R                   R$                  R,                  UR.                  5      UR0                  l        UR                  S5      (       a  UR4                  UR0                  l        U R                   R9                  5       nUR:                  (       a  UR:                  Ul        UR>                  (       a  UR>                  Ul         URB                  (       a  URB                  Ul"        URF                  (       a  URF                  Ul$        URJ                  (       a  URJ                  Ul&        URN                  (       a  URN                  Ul(        URS                  S5      (       a  URT                  Ul+        SnXSl,        URS                  S5      (       a<  U R                   R[                  [\        R^                  " UR`                  5      S9Ul1        U R                   Re                  X4S9nU R                   Rg                  XS9nU Rh                  Rk                  U5      nU$ )z"Analyze IAM Policy asynchronously.r   )fullResourceNamerc   )rc   r   r   N)r   r   )r   tablePrefixr   bigquery_partition_keybigquery_write_dispositionr   r   )
accessTime)r   r   )r   "analyzeIamPolicyLongrunningRequest)6r   r  r   rM   ResourceSelectorr   resourceSelectorIdentitySelectorrc   identitySelectorAccessSelectoraccessSelectorr   extendr   gcs_output_pathIamPolicyAnalysisOutputConfig GoogleCloudAssetV1GcsDestination%GoogleCloudAssetV1BigQueryDestinationbigquery_datasetbigquery_table_prefixr   r   r  r   r   r  writeDispositionOptionsr   expandGroupsr   expandResourcesr   expandRolesr   outputResourceEdgesr   outputGroupEdgesr   "analyzeServiceAccountImpersonationr   r   includeDenyPolicyAnalysisoptionsConditionContextr   rK   r   conditionContext"AnalyzeIamPolicyLongrunningRequest,CloudassetAnalyzeIamPolicyLongrunningRequestrS   AnalyzeIamPolicyLongrunning)	r   r   rR   analysis_queryr   r
  r   r  r   s	            r   r   *IamPolicyAnalysisLongrunningClient.Analyze  s   ((??AN ,--(,(;(;(L(L22 )M )4n%
##(,(;(;(L(L== )M )"n%  D$4$4]$C$C&*&9&9&H&H&Jn#			'	"	"%%++224::>			-	(	(%%11889I9IJM))GG,,MM&& N ( H )m ))GG"1100++44 1 6 H 7m
 
		2	3	39@EE(($*E*E:G))6 
		6	7	7=A=\=\)):!!))+G!//g $ 5 5g --g!!$($>$>g!!%!8!8g11373]3]g0 >??*.*K*Kg'I$..(,(;(;(L(L))$*:*:; )M )=n%!!DD$ E BG))VV W AO88IIr   r   rS   Nr   r   r   r   r  r    s    5!4 ->r   r  c                   *    \ rS rSrSr\4S jrS rSrg)AnalyzeMoveClienti4  z#Client for analyzing resource move.c                 d    Xl         [        U5      U l        [        U5      R                  U l        g r   )rT   r%   r   r)   r   rS   r   s     r   r   AnalyzeMoveClient.__init__7  s'    "%k2D[),,DLr   c                    SUR                   -   nUR                  S5      (       a  SUR                  -   nOSUR                  -   nU R                  R
                  R                  R                  nUR                  (       a*  U R                  R
                  R                  R                  nU R                  R                  X2US9nU R                  R                  U5      $ )zAnalyze resource move.r   destination_folderzfolders/zorganizations/)destinationParentr+   view)rJ   rM   r  destination_organizationr   CloudassetAnalyzeMoveRequestViewValueValuesEnumFULLblockers_onlyBASICrS   AnalyzeMove)r   rR   rJ   destinationr   r   s         r   r!  AnalyzeMoveClient.AnalyzeMove<  s    DLL(G,--!8!88k$t'D'DDk<<PPUUE!!>>RRXXe))FF%e G EO <<##O44r   )rT   r   rS   N)	r   r   r   r   r   rm   r   r!  r   r   r   r   r  r  4  s    +!4 -
5r   r  c                   *    \ rS rSrSr\4S jrS rSrg)AssetQueryClientiO  zClient for QueryAsset API.c                 d    Xl         [        U5      U l        [        U5      R                  U l        g r   )rA   r%   r   r)   r   rS   r  s      r   r   AssetQueryClient.__init__R  s&    K%k2D[),,DLr   c                 2   SnUR                  S5      (       a#  [        R                  " UR                  5      S-   nSnUR                  S5      (       a  UR                  R
                  R                  5       nU(       d  [        R                  " SS5      eSnUR                  S5      (       a  UR                  R                  SS	5      nU R                  R                  U R                  R                  S
UR                  -   S-   UR                  -   UR                   US9S9nO-UR                  S5      (       a  [        R                  " SS5      eSnSnUR                  S5      (       a   ["        R$                  " UR&                  5      nSnUR                  S5      (       a9  ["        R$                  " UR(                  5      nU R                  R+                  XhS9nSn	UR                  S5      (       a   ["        R$                  " UR,                  5      n	U R                  R/                  U R0                  U R                  R3                  UR4                  UR6                  UR8                  UR:                  UU	UUS9S9n
U R<                  R?                  U
5      $ )zMake QueryAssets request.Ntimeoutr   r   z--bigquery-tablezg--bigquery-table should have the format of `projects/<ProjectId>/datasets/<DatasetId>/tables/<TableId>`write_disposition-_r   r   )r   r   r  r   z--write_dispositionz:Must be set together with --bigquery-table to take effect.r=   rL   )endTime	startTimer   )jobReferencer  r  	statementr)  r   readTimeWindowr   )rA   queryAssetsRequest) rM   six	text_typer)  r   r   r   r   r   r*  replacer   QueryAssetsOutputConfig<GoogleCloudAssetV1QueryAssetsOutputConfigBigQueryDestinationr   r   r   r   rK   r=   rL   
TimeWindowr   CloudassetQueryAssetsRequestrA   QueryAssetsRequestjob_referencer  
page_tokenr0  rS   QueryAssets)r   rR   r)  r   r   r*  r=   readtime_windowrL   	read_timequery_assets_requests              r   QueryAssetQueryClient.QueryW  sd   G	""dll+c1gM())}}3399;n88u
 	

 			-	.	. 22::3D))AA"11GG!N$<$<<|K&&'"**0	 H 2 B 3m 
		-	.	.66

FH H HO
##%%dmm4hJ%%''8j++66 7 2oI((&&t'9'9:i..KK{{..AA++^^oonn*& B ( L 
) <<##$899r   r  N)	r   r   r   r   r   rm   r   rA  r   r   r   r   r%  r%  O  s    ")< -
4:r   r%  c                   :    \ rS rSrSrSr\4S jrS rS r	S r
Srg	)
OrgPolicyAnalyzerClienti  zClient for org policy analysis.d   c                 X    [        U5      U l        [        U5      R                  U l        g r   r  r   s     r   r    OrgPolicyAnalyzerClient.__init__  r  r   c                     U R                   R                  UR                  UR                  S9n[        R
                  " U R                  USSUR                  =(       d    U R                  SSSS9$ )z,Calls AnalyzeOrgPolicyGovernedAssets method.r   
constraintAnalyzeOrgPolicyGovernedAssetsgovernedAssetsr  r  r  r  )	r   /CloudassetAnalyzeOrgPolicyGovernedAssetsRequestr   rJ  r   r  rS   r  r  r  s      r   rK  6OrgPolicyAnalyzerClient.AnalyzeOrgPolicyGovernedAssets  si    !!QQjjT__ R 6G##/>><T%<%<' +,. .r   c                     U R                   R                  UR                  UR                  S9n[        R
                  " U R                  USSUR                  =(       d    U R                  SSSS9$ )z0Calls AnalyzeOrgPolicyGovernedContainers method.rI  "AnalyzeOrgPolicyGovernedContainersgovernedContainersr  r  r  r  )	r   3CloudassetAnalyzeOrgPolicyGovernedContainersRequestr   rJ  r   r  rS   r  r  r  s      r   rP  :OrgPolicyAnalyzerClient.AnalyzeOrgPolicyGovernedContainers  si    !!UUjjT__ V 6G##3">><T%<%<' +,. .r   c                     U R                   R                  UR                  UR                  S9n[        R
                  " U R                  USSUR                  =(       d    U R                  SSSS9$ )z Calls AnalyzeOrgPolicies method.rI  AnalyzeOrgPoliciesorgPolicyResultsr  r  r  r  )	r   #CloudassetAnalyzeOrgPoliciesRequestr   rJ  r   r  rS   r  r  r  s      r   rU  *OrgPolicyAnalyzerClient.AnalyzeOrgPolicies  si    !!EEjjT__ F 6G### >><T%<%<' +,. .r   r  N)r   r   r   r   r   r  rm   r   rK  rP  rU  r   r   r   r   rD  rD    s"    '!4 -...r   rD  c                   *    \ rS rSrSr\4S jrS rSrg)EffectiveIAMPolicyClienti  z)Client for Effective IAM Policy analysis.c                 X    [        U5      U l        [        U5      R                  U l        g r   )r%   r   r)   effectiveIamPoliciesrS   r   s     r   r   !EffectiveIAMPolicyClient.__init__  s!    %k2D[)>>DLr   c                     U R                   R                  UR                  UR                  S9nU R                  R                  U5      $ )z*Calls BatchGetEffectiveIAMPolicies method.)namesr   )r   -CloudassetEffectiveIamPoliciesBatchGetRequestr_  r   rS   BatchGetr  s      r   BatchGetEffectiveIAMPolicies5EffectiveIAMPolicyClient.BatchGetEffectiveIAMPolicies  s@    !!OOjj

 P ,G<<  ))r   r  N)	r   r   r   r   r   rm   r   rb  r   r   r   r   rZ  rZ    s    1!4 ?*r   rZ  )8r   apitools.base.pyr   r   r   r   googlecloudsdk.api_lib.utilr   googlecloudsdk.callioper    googlecloudsdk.command_lib.assetr   rG   $googlecloudsdk.command_lib.util.apisr   $googlecloudsdk.command_lib.util.argsr	   r
   googlecloudsdk.corecore_exceptionsr   r   googlecloudsdk.core.utilr   r3  r"   rm   r  V1P5BETA1_API_VERSIONV1P7BETA1_API_VERSION_HEADERS_HTTP_ERROR_FORMATErrorr   r%   r)   r5   r;   rX   r~   r   r   objectr   r   r   rY  r  r  r  r  r  r  r%  rD  rZ  r   r   r   <module>rs     s{   = & > ' , 2 C A : < 9 = # $ * 
  # # # 7#- @.. @ , 	3 * 	3$0% 2E> 4G.f 4G'Z 2EPf>V > 4 4nv/f v/rr8f r8j@. @.F;f ;D	%6 	%
>v 
>E EP5 56<:v <:~1.f 1.h*v *r   