
                            d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ dddZej(                   ej*                  ej,                  j.                         G d dej0                                      Zej(                   ej*                  ej,                  j4                         G d de                    Zy)z'Command to generate a new Audit Report.    )absolute_import)division)unicode_literals)
exceptions)audit_reports)	constants)base)exception_utils)flags)
propertieszGenerate a new Audit Report.a           To generate an Audit Report in the `us-central1` region,
        for a project with ID `123` for compliance framework `fedramp_moderate` in `odf` format and store it in `gs://testbucketauditmanager` bucket, run:

          $ {command} --project=123 --location=us-central1 --compliance-framework=fedramp_moderate --report-format=odf --gcs-uri=gs://testbucketauditmanager
        )DESCRIPTIONEXAMPLESc                   V    e Zd ZdZeZej                  j                  Z	e
d        Zd Zy)GenerateGenerate Audit Report.c                 p   t        j                  | d       t        j                  | d       t        j                  |        t        j                  |        t        j
                  |        | j                  j                  t        j                  j                  j                  j                                y )Nz"for which to generate audit reportzthe report should be generated)r   AddProjectOrFolderFlagsAddLocationFlagAddComplianceFrameworkFlagAddReportFormatFlagAddDestinationFlagsdisplay_info	AddFormatr   VALUEScoredefault_formatGet)parsers    3lib/surface/audit_manager/audit_reports/generate.pyArgszGenerate.Args2   s}    	!!&*NO	&"BC	$$V,	f%	f%
!!*"3"3"8"8"G"G"K"K"MN    c           
      B   |j                   du}|rdj                  |j                         ndj                  |j                        }|dj                  |j                        z  }t	        j
                  | j                        }	 |j                  ||j                  |j                  |j                  |	      S # t        j                  $ rM}t        j                  |      }|j                  t        j                         rpd
|_        t%        j&                  |j(                         dt%        j*                  |       dt%        j,                  |       dt%        j.                  |       |_        n|j                  t        j2                        rkd}t4        j6                  j8                  j:                  j=                         }d|_        |rdnd}	|	 d|r|j                   n|j                   d| d| |_        t?        j@                  |       Y d}~yd}~ww xY w)zRun the generate command.Nzfolders/{folder})folderzprojects/{project})projectz/locations/{location})location)api_version)report_formatgcs_uriis_parent_folderzenroll the resourcez enrollments add  zroles/auditmanager.auditorzgrant permissionz6gcloud resource-manager folders add-iam-policy-bindingz&gcloud projects add-iam-policy-bindingz --member=user:z --role )!r#   formatr$   r%   r   AuditReportsClientr&   r   compliance_frameworkr'   r(   apitools_exceptions	HttpErrorr
   AuditManagerErrorhas_error_infoERROR_REASON_NOT_ENROLLEDsuggested_command_purposer   GetCommandPrefixcommand_pathGetProjectOrFolderParamGetLocationParamGetEligibleGcsBucketParamsuggested_commandERROR_REASON_PERMISSION_DENIEDr   r   r   accountr   core_exceptionsreraise)
selfargsr)   scopeclienterrorexcroleusercommand_prefixs
             r   RunzGenerate.Run;   s   {{$.  	!!!5!(((> 
 
$++T]]+CCE--$:J:JKF"#__


#
#**,,+    (( #--e4c			OEE	F(=%%%d&7&789 :--d34Ae6L6LT6R5S//568 	
 oLLM+  %%--113(:%   E9 	 /T\\BdV8D63 	 c""3#s   	3B= =HEHHN)__name__
__module____qualname____doc___DETAILED_HELPdetailed_helpr   
ApiVersionV1r&   staticmethodr    rG    r!   r   r   r   *   s6      -$$''+O O0#r!   r   c                   <    e Zd ZdZej
                  j                  Zy)GenerateAlphar   N)rH   rI   rJ   rK   r   rN   V1_ALPHAr&   rQ   r!   r   rS   rS   n   s     $$--+r!   rS   N)rK   
__future__r   r   r   apitools.base.pyr   r.   $googlecloudsdk.api_lib.audit_managerr   r   googlecloudsdk.callioper	   (googlecloudsdk.command_lib.audit_managerr
   r   googlecloudsdk.corer<   r   rL   DefaultUniverseOnlyReleaseTracksReleaseTrackGACreateCommandr   ALPHArS   rQ   r!   r   <module>ra      s    . &  ' > > : ( D : = * 2 D%%(()?#t!! ?# * ?#D D%%++,.H . - .r!   