
    D(                     >   S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSK
Jr  SS	K
Jr  S
SSS.rS
SSS.rS rS rS r\R$                  " \R&                  R(                  5      \R*                   " S S\R,                  5      5       5       r\R$                  " \R&                  R0                  5      \R*                   " S S\R,                  5      5       5       r\R$                  " \R&                  R4                  5       " S S\R,                  5      5       rg)zCommand to query activities.    )absolute_import)division)unicode_literalsN)
list_pager)policy_analyzer)arg_parsers)basez,Query activities on cloud resource.
        z     Query activities with certain types of specific container resource. For --activity-type, supported values are:
     - serviceAccountLastAuthentication
     - serviceAccountKeyLastAuthentication
        aU      To query serviceAccountKeyLastAuthentication activities of a project, run:

    $ {command} --activity-type=serviceAccountKeyLastAuthentication --project=project-id

    To query serviceAccountLastAuthentication activities of a project with no limit, run:

    $ {command} --activity-type=serviceAccountLastAuthentication --project=project-id --limit=unlimited

    To query serviceAccountLastAuthentication with filtering on certain service account, run:

    $ {command} --activity-type=serviceAccountLastAuthentication --project=project-id --query-filter='activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name@project-id.iam.gserviceaccount.com"'

    To query serviceAccountLastAuthentication with filtering on multiple service accounts, run:

    $ {command} --activity-type=serviceAccountLastAuthentication --project=project-id --query-filter='activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-1@project-id.iam.gserviceaccount.com" OR activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-2@project-id.iam.gserviceaccount.com" OR activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-3@project-id.iam.gserviceaccount.com"'
        )briefDESCRIPTIONEXAMPLESz     Query activities with certain types of specific container resource. For --activity-type, supported values are:
     - serviceAccountLastAuthentication
     - serviceAccountKeyLastAuthentication
     - dailyAuthorization
        a      To query serviceAccountKeyLastAuthentication activities of a project, run:

    $ {command} --activity-type=serviceAccountKeyLastAuthentication --project=project-id

    To query serviceAccountLastAuthentication activities of a project with no limit, run:

    $ {command} --activity-type=serviceAccountLastAuthentication --project=project-id --limit=unlimited

    To query serviceAccountLastAuthentication with filtering on certain service account, run:

    $ {command} --activity-type=serviceAccountLastAuthentication --project=project-id --query-filter='activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name@project-id.iam.gserviceaccount.com"'

    To query serviceAccountLastAuthentication with filtering on multiple service accounts, run:

    $ {command} --activity-type=serviceAccountLastAuthentication --project=project-id --query-filter='activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-1@project-id.iam.gserviceaccount.com" OR activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-2@project-id.iam.gserviceaccount.com" OR activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-3@project-id.iam.gserviceaccount.com"'

    To query dailyAuthorization activities of a project, run:

    $ {command} --activity-type=dailyAuthorization --project=project-id

    To query dailyAuthorization of a project with filtering on certain resource, permission, principal and date, run:

    $ {command} --activity-type=dailyAuthorization --project=project-id --query-filter='activities.activity.full_resource_name="<full_resource_name>" AND activities.activity.permission="<permission_name>" AND activities.activity.principal="<principal_email>" AND activities.activity.date="<YYYY-MM-DD>"'
    c           	      \   U R                  SS[        SS/SS9  U R                  SS9R                  S[        S	S
9  U R                  S[        SSS9  U R                  S[        R                  " S[
        R                  SS9SSS9  U R                  S[        R                  " SS5      SSS9  g)"Parses arguments for the commands.--activity-typeT serviceAccountLastAuthentication#serviceAccountKeyLastAuthenticationType of the activities.
      requiredtypechoiceshelpr   	--project8The project ID or number to query the activities.
      r   r   --query-filter a  Filter on activities, separated by "OR" if multiple filters are specified. At most 10 filter restrictions are supported in the query-filter. e.g. --query-filter='activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-1@project-id.iam.gserviceaccount.com" OR activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-2@project-id.iam.gserviceaccount.com"'r   defaultr   --limit   	unlimited  `Max number of query result. Default to be 1000 and max to be unlimited, i.e., --limit=unlimited.--page-size  KMax page size for each http response. Default to be 500 and max to be 1000.Nadd_argumentstradd_mutually_exclusive_groupr   
BoundedIntsysmaxsizeparsers    1lib/surface/policy_intelligence/query_activity.py_Argsr3   c   s    
,
/
  	 	%%t%4AA
 B 
 	 [	   	!!!S[[DAm	   	!!!T*X	      c           	      \   U R                  SS[        / SQSS9  U R                  SS9R                  S[        SS	9  U R                  S
[        SSS9  U R                  S[        R                  " S[
        R                  SS9SSS9  U R                  S[        R                  " SS5      SSS9  g)r   r   T)r   r   dailyAuthorizationr   r   r   r   r   r   r   r   a  Filter on activities. 

      For last authentication activities, this field is separated by "OR" if multiple filters are specified. At most 10 filter restrictions are supported in the query-filter. 

        e.g. --query-filter='activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-1@project-id.iam.gserviceaccount.com" OR activities.full_resource_name="//iam.googleapis.com/projects/project-id/serviceAccounts/service-account-name-2@project-id.iam.gserviceaccount.com"'

      For daily authorization activities, this field is separated by "OR" and "AND". At most 10 filter restrictions per layer and at most 2 layers are supported in the query-filter. 

        e.g. --query-filter='activities.activity.date="2022-01-01" AND activities.activity.permission="spanner.databases.list" AND (activities.activity.principal="principal_1@your-organization.com" OR activities.activity.principal="principal_2@your-organization.com")'r   r    r!   r"   r$   r%   r&   r'   r(   Nr)   r0   s    r2   
_ArgsAlphar7      s    
  	 	%%t%4AA
 B 
 	Q	  	 	!!!S[[DAm	   	!!!T*X	  r4   c           
      ,   [         R                  " 5       u  pSR                  U R                  U R                  5      nUR                  X0R                  S9nUR                  U5      n[        R                  " UUSU R                  SU R                  SS9$ )Nz/projects/{0}/locations/global/activityTypes/{1})parentfilterQuery
activitiespageSize)method
batch_sizefieldlimitbatch_size_attribute)r   GetClientAndMessagesformatprojectactivity_typeBPolicyanalyzerProjectsLocationsActivityTypesActivitiesQueryRequestquery_filter/ProjectsLocationsActivityTypesActivitiesServicer   YieldFromList	page_sizerA   )argspolicy_analyzer_clientmessagesquery_activity_parentquery_activity_requestpolicy_analyzer_services         r2   _RunrR      s    %4%I%I%K"KRR
llD&&(#ff"+<+< g >2bb		!	!JJ%
' 'r4   c                   2    \ rS rSrSr\r\S 5       rS r	Sr
g)QueryActivityAlpha   #Query activities on cloud resource.c                     [        U 5        gr   N)r7   r0   s    r2   ArgsQueryActivityAlpha.Args   s     vr4   c                     [        U5      $ NrR   selfrL   s     r2   RunQueryActivityAlpha.Run       :r4    N)__name__
__module____qualname____firstlineno____doc___DETAILED_HELP_ALPHAdetailed_helpstaticmethodrY   r`   __static_attributes__rc   r4   r2   rT   rT      s#     ,&- r4   rT   c                   2    \ rS rSrSr\r\S 5       rS r	Sr
g)QueryActivityBeta   rV   c                     [        U 5        grX   r3   r0   s    r2   rY   QueryActivityBeta.Args        
&Mr4   c                     [        U5      $ r\   r]   r^   s     r2   r`   QueryActivityBeta.Run   rb   r4   rc   Nrd   re   rf   rg   rh   _DETAILED_HELPrj   rk   rY   r`   rl   rc   r4   r2   rn   rn      s#     , - r4   rn   c                   2    \ rS rSrSr\r\S 5       rS r	Sr
g)QueryActivityGA   rV   c                     [        U 5        grX   rq   r0   s    r2   rY   QueryActivityGA.Args   rs   r4   c                     [        U5      $ r\   r]   r^   s     r2   r`   QueryActivityGA.Run   rb   r4   rc   Nrv   rc   r4   r2   ry   ry      s!    + - r4   ry   )rh   
__future__r   r   r   r.   apitools.base.pyr   *googlecloudsdk.api_lib.policy_intelligencer   googlecloudsdk.callioper   r	   rw   ri   r3   r7   rR   ReleaseTracksReleaseTrackALPHAHiddenCommandrT   BETArn   GAry   rc   r4   r2   <module>r      s   # &  ' 
 ' F / (			@			% P"J&R'$ D%%++,   - D%%**+   , D%%(()dll  *r4   