
    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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\RH                  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      r0 " S( S)\.5      r1 " S* S+\.5      r2 " S, S-\.5      r3 " S. S/\.5      r4 " S0 S1\.5      r5 " S2 S3\.5      r6 " S4 S5\.5      r7 " S6 S7\.5      r8 " S8 S9\.5      r9 " S: S;\.5      r: " S< S=\.5      r;g)>z6Shared utilities for access the CloudAsset API client.    )absolute_import)division)unicode_literals)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)MessageDecodeError4   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   4   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(   8        
		'	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,   D   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"   ContentTypeTranslationr8   P   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>   h   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   ChoiceToEnumr7   &CloudassetBatchGetAssetsHistoryRequestContentTypeValueValuesEnumasset_utilsGetParentNameForGetHistoryorganizationprojectr   FormatDateTime
start_timeIsSpecifiedr@   BatchGetAssetsHistoryasset_namesrelationship_typesassets)
argsserviceapi_versionmessagesr7   rD   rO   r@   responseassets
             r"    MakeGetAssetsHistoryHttpRequestsr[   p   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identityListra   rb   rc   DEFAULT_API_VERSIONconditionEvaluationevaluationValueappenddenyAnalysisResultsaccessTupler.   re   rf   denyDetailsdenyRuleexceptionIdentities)analysisrW   analysis_resultentryr_   aclaclsdeny_analysis_resultrg   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mainAnalysisrk   #serviceAccountImpersonationAnalysisr   analysisQueryr   statusPrint)	rY   %analyze_service_account_impersonationrW   msghas_resultssa_impersonation_analysisr{   ry   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_nameNrf   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)rJ    GetParentNameForAnalyzeIamPolicyrL   rM   folderrP   r   rf   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   rN   r   AnalyzeIamPolicy!CloudassetAnalyzeIamPolicyRequestr   )rU   rV   rX   rW   rD   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   rY   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)AnalyzeIamPolicyClienti<  zClient for IAM policy analysis.c                 f    Xl         [        U5      U l        U R                  R                  U l        g NrW   r,   clientr   rV   selfrW   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(   rW   r   rV   )r   rU   rX   s      r"   AnalyzeAnalyzeIamPolicyClient.AnalyzeE  s0    4++,H+D,,,0,<,<> >r!   rW   r   rV   N	r   r   r   r   r   rp   r   r   r    r   r!   r"   r   r   <  s    '!4 ">r!   r   c                   (    \ rS rSrSrSS jrS rSrg)AssetExportClientiL  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   )rD   rp   rW   r(   message_moduler   r,   rV   )r   rD   r   s      r"   r   AssetExportClient.__init__O  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)
assetTypesrC   outputConfigreadTimerB   )rD   exportAssetsRequestz{error_info})error_format)%r8   r7   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   rN   ExportAssetsRequestrI   asset_typesrS   CloudassetExportAssetsRequestrD   rV   ExportAssetsapitools_exceptionsHttpBadRequestErrorr   HttpExceptionHttpForbiddenError)r   rU   r7   r=   output_config
source_refr   export_assets_requestrequest_message	operationbad_requestpermission_denys               r"   ExportAssetExportClient.ExportU  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)rW   r   rD   rV   r   )r   r   r   r   r   r   r   r    r   r!   r"   r   r   L  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)rD   r(   r   r,   savedQueriesrV   r  r  r   rD   rW   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)rD   
savedQuerysavedQueryId)r  query_file_pathr   QueryContentr   ParseCreateArgs
SavedQueryLabelsValuer"  #CloudassetSavedQueriesCreateRequestrD   query_idrV   Create)r   rU   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  rD   r,  rV   Getr   rU   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.r3  r4  N)r   #CloudassetSavedQueriesDeleteRequestr  rD   r,  rV   Deleter8  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.rD   )r   !CloudassetSavedQueriesListRequestrD   rV   Listr   r   s     r"   rB  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*  MayHaveUpdatesr9  Applyr#  needs_update)r   rU   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   r3  )r5  r$  
updateMask)r&  r  r   r'  r"  rN  r)  "CloudassetSavedQueriesPatchRequestr  rD   r,  rV   Patch)
r   rU   update_maskr.  r  updated_descriptionupdated_labels
has_updater0  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   rD   rV   r  N)r   r   r   r   r   r  r  rp   r   r-  r9  r=  rB  rN  rY  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   )rD   r(   r   r,   feedsrV   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"  rA   r   rC   feedOutputConfig	conditionrB   )feedfeedId)rD   createFeedRequest)r8   r7   r   r   FeedrI   FeedOutputConfigPubsubDestinationpubsub_topicExprcondition_expressioncondition_titlecondition_descriptionrR   r   rS   CreateFeedRequestrj  CloudassetFeedsCreateRequestrD   rV   r-  )r   rU   r7   feed_output_configfeed_conditionrj  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/{}r4  )r   CloudassetFeedsGetRequestr  rD   rj  rV   r7  r8  s      r"   r9  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.r|  r4  N)r   CloudassetFeedsDeleteRequestr  rD   rj  rV   r=  r8  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   CloudassetFeedsListRequestrD   rV   rB  rC  s     r"   rB  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.r|  r7   z+feed_output_config.pubsub_destination.topiczcondition.expressionzcondition.titlezcondition.description,ra  rc  re  rg  )rj  rR  )r5  updateFeedRequest)r8   r7   r   r   rm  rI   r  rD   rj  clear_content_typers   rp  rr  clear_condition_expressionrs  clear_condition_titlert  clear_condition_description%UpdateAssetNamesTypesAndRelationshipsr  rn  ro  rq  UpdateFeedRequestCloudassetFeedsPatchRequestrV   rT  )r   rU   update_masksr7   	feed_namerR   r   rS   rU  rw  rx  rj  update_feed_requestr   s                 r"   rY  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.r4  rR   c                     > T R                   $ r   )rA   rj  s   r"   <lambda>GAssetFeedClient.UpdateAssetNamesTypesAndRelationships.<locals>.<lambda>]  	    door!   r   c                     > T R                   $ r   )r   r  s   r"   r  r  c  r  r!   rS   c                     > T R                   $ r   )rB   r  s   r"   r  r  i  s    D,B,Br!   )rV   r7  r   r}  r   ParsePrimitiveArgsrs   )r   rU   r  r  rR   r   rS   rj  s          @r"   r  5AssetFeedClient.UpdateAssetNamesTypesAndRelationshipsW  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   rD   rV   N)r   r   r   r   r   rp   r   r-  r9  r=  rB  rY  r  r    r   r!   r"   r\  r\    s,    )< 0
02-).&/P8r!   r\  c                   .    \ rS rSrSrSrS rS rS rSr	g)	AssetSearchClientiq  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   rW   V1P1BETA1_API_VERSIONr,   rc   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__v  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   )rW   r  	read_maskr  rJ   GetDefaultScopeIfEmptyr  r   order_byr   YieldFromListr  r  	page_size_DEFAULT_PAGE_SIZE)r   rU   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  )rW   r  r  rJ   r  r  r   r  r   r  r  r  r  r  r   rU   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!   )rW   r   r  r  r  r  r  r  N)
r   r   r   r   r   r  r   r  r  r    r   r!   r"   r  r  q  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   )rD   r(   r   r,   rT   rV   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)rD   rC   r   r   rB   rT   r  r  r  )r  limitr  r  r  r  	predicate)r   r   rN   r8   r7   r   CloudassetAssetsListRequestrD   r   rI   r   rS   r   r  rV   r  r  filter_func)r   rU   	do_filterr   r7   list_assets_requests         r"   rB  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   rp   r   rB  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,   
operationsrV   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      $ )Nr4  )r  rV   r7  )r   r5  r  s      r"   r7  AssetOperationClient.Get  s'    lll%G<<G$$r!   )r  rV   N)	r   r   r   r   r   rp   r   r7  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   )r[   rV   rW   )r   rU   s     r"   
GetHistoryGetHistoryClient.GetHistory  s    +D,,,0,<,<> >r!   r   N)	r   r   r   r   r   rp   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   rV   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   )fullResourceNamerf   )rf   r   r   N)r   r   )r   tablePrefixr   bigquery_partition_keybigquery_write_dispositionr   r   )
accessTime)r   r   )r   "analyzeIamPolicyLongrunningRequest)6r   r  r   rP   ResourceSelectorr   resourceSelectorIdentitySelectorrf   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   rN   r   conditionContext"AnalyzeIamPolicyLongrunningRequest,CloudassetAnalyzeIamPolicyLongrunningRequestrV   AnalyzeIamPolicyLongrunning)	r   r   rU   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   rV   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)AnalyzeMoveClienti7  z#Client for analyzing resource move.c                 d    Xl         [        U5      U l        [        U5      R                  U l        g r   )rW   r(   r   r,   r   rV   r   s     r"   r   AnalyzeMoveClient.__init__:  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)rM   rP   r  destination_organizationr   CloudassetAnalyzeMoveRequestViewValueValuesEnumFULLblockers_onlyBASICrV   AnalyzeMove)r   rU   rM   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!   )rW   r   rV   N)	r   r   r   r   r   rp   r   r$  r    r   r!   r"   r  r  7  s    +!4 -
5r!   r  c                   *    \ rS rSrSr\4S jrS rSrg)AssetQueryClientiR  zClient for QueryAsset API.c                 d    Xl         [        U5      U l        [        U5      R                  U l        g r   )rD   r(   r   r,   r   rV   r  s      r"   r   AssetQueryClient.__init__U  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@   rO   )endTime	startTimer   )jobReferencer  r  	statementr,  r   readTimeWindowr   )rD   queryAssetsRequest) rP   six	text_typer,  r   r   r   r   r   r-  replacer   QueryAssetsOutputConfig<GoogleCloudAssetV1QueryAssetsOutputConfigBigQueryDestinationr   r   r   r   rN   r@   rO   
TimeWindowr   CloudassetQueryAssetsRequestrD   QueryAssetsRequestjob_referencer  
page_tokenr3  rV   QueryAssets)r   rU   r,  r   r   r-  r@   readtime_windowrO   	read_timequery_assets_requests              r"   QueryAssetQueryClient.QueryZ  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   rp   r   rD  r    r   r!   r"   r(  r(  R  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   rM  r   r  rV   r  r  r  s      r"   rN  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.rL  "AnalyzeOrgPolicyGovernedContainersgovernedContainersr  r  r  r  )	r   3CloudassetAnalyzeOrgPolicyGovernedContainersRequestr   rM  r   r  rV   r  r  r  s      r"   rS  :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.rL  AnalyzeOrgPoliciesorgPolicyResultsr  r  r  r  )	r   #CloudassetAnalyzeOrgPoliciesRequestr   rM  r   r  rV   r  r  r  s      r"   rX  *OrgPolicyAnalyzerClient.AnalyzeOrgPolicies  si    !!EEjjT__ F 6G### >><T%<%<' +,. .r!   r  N)r   r   r   r   r   r  rp   r   rN  rS  rX  r    r   r!   r"   rG  rG    s"    '!4 -...r!   rG  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,   effectiveIamPoliciesrV   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   -CloudassetEffectiveIamPoliciesBatchGetRequestrb  r   rV   BatchGetr  s      r"   BatchGetEffectiveIAMPolicies5EffectiveIAMPolicyClient.BatchGetEffectiveIAMPolicies  s@    !!OOjj

 P ,G<<  ))r!   r  N)	r   r   r   r   r   rp   r   re  r    r   r!   r"   r]  r]    s    1!4 ?*r!   r]  )<r   
__future__r   r   r   apitools.base.pyr   r   r   r   googlecloudsdk.api_lib.utilr	   googlecloudsdk.callioper    googlecloudsdk.command_lib.assetr
   rJ   $googlecloudsdk.command_lib.util.apisr   $googlecloudsdk.command_lib.util.argsr   r   googlecloudsdk.corecore_exceptionsr   r   googlecloudsdk.core.utilr   r6  r%   rp   r  V1P5BETA1_API_VERSIONV1P7BETA1_API_VERSION_HEADERS_HTTP_ERROR_FORMATErrorr   r(   r,   r8   r>   r[   r   r   r   objectr   r   r  r\  r  r  r  r  r  r  r(  rG  r]  r   r!   r"   <module>rw     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!   