
                            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S.rSrSr\R0                  \R2                  " \R4                  R6                  5       " S S\R8                  5      5       5       r\R0                  \R2                  " \R4                  R<                  5       " S S\5      5       5       rg)z&Command to generate a new Audit Scope.    )absolute_import)division)unicode_literals)
exceptions)audit_scopes)	constants)base)exception_utils)flags)
properties)fileszGenerate a new Audit Scope.ax           To generate an Audit Scope in the `us-central1` region,
        for a project with ID `123` for compliance framework `fedramp_moderate` in `odf` format, run:

          $ {command} --project="123" --location="us-central1" --compliance-framework="fedramp_moderate" --report-format="odf" --output-directory="scopes/currentyear" --output-file-name="auditreport"
        )DESCRIPTIONEXAMPLESscopeReportContentsz.odsc                   d    \ rS rSrSr\r\R                  R                  r
\S 5       rS rS rSrg)Generate.   Generate Audit Scope.c                    [         R                  " U S5        [         R                  " U S5        [         R                  " U 5        [         R                  " U 5        [         R
                  " U 5        [         R                  " U 5        g )Nz!for which to generate audit scopezthe scope should be generated)r   AddProjectOrFolderFlagsAddLocationFlagAddComplianceFrameworkFlagAddScopeReportFormatFlagAddOutputDirectoryFormatFlagAddOutputFileNameFormatFlag)parsers    2lib/surface/audit_manager/audit_scopes/generate.pyArgsGenerate.Args6   s\    	!!&*MN	&"AB	$$V,	""6*	&&v.	%%f-    c                 p   UR                   SLnU(       a  SR                  UR                   S9OSR                  UR                  S9nUSR                  UR                  S9-  n[        R
                  " U R                  S9n UR                  UUR                  UR                  US	9nU R                  UUR                  UR                  5        U$ ! [        R                   a  n[        R                   " U5      nUR#                  [        R$                  5      (       au  S
n[&        R(                  R*                  R,                  R/                  5       n	SUl        U(       a  SOSn
U
 SU(       a  UR                   OUR                   SU	 SU 3Ul        [4        R6                  " U5         SnAgSnAff = f)zRun the generate command.Nzfolders/{folder})folderzprojects/{project})projectz/locations/{location})location)api_version)report_formatis_parent_folderzroles/auditmanager.auditorzgrant permissionz6gcloud resource-manager folders add-iam-policy-bindingz&gcloud projects add-iam-policy-binding z --member=user:z --role )r"   formatr#   r$   r   AuditScopesClientr%   r   compliance_frameworkr&   
SaveReportoutput_directoryoutput_file_nameapitools_exceptions	HttpErrorr
   AuditManagerErrorhas_error_infoERROR_REASON_PERMISSION_DENIEDr   VALUEScoreaccountGetsuggested_command_purposesuggested_commandcore_exceptionsreraise)selfargsr'   scopeclientresponseerrorexcroleusercommand_prefixs              r   RunGenerate.Run?   s   {{$.  	!!!5!(((> 

 
$++T]]+CCE++8H8HIF #


#
#**+	 ! h oo







 o(( #--e4c			OJJ	K	K+  %%--113(:%   E9 	 /T\\BdV8D63 	 c""%#s   AC F5&CF00F5c                     US:H  nU(       a  SOUS-   nXS-   [         -   nUR                  n[        R                  " XgSS9  g)zSave the generated scope. /F)	overwriteN)_FILE_EXTENSIONr   r   WriteBinaryFileContents)r<   r@   r-   r.   is_empty_directory_pathdirectory_path	file_pathcontent_bytess           r   r,   Generate.SaveReportn   sD    ."42R8H38NN1OCI00M	!!)eLr     N)__name__
__module____qualname____firstlineno____doc___DETAILED_HELPdetailed_helpr   
ApiVersionV1r%   staticmethodr   rF   r,   __static_attributes__rS   r    r   r   r   .   s;      -$$''+. .,#^Mr    r   c                   D    \ rS rSrSr\R                  R                  rSr	g)GenerateAlphaw   r   rS   N)
rT   rU   rV   rW   rX   r   r[   V1_ALPHAr%   r^   rS   r    r   r`   r`   w   s     $$--+r    r`   N) rX   
__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   googlecloudsdk.core.utilr   rY   _SCOPE_REPORT_CONTENTSrL   DefaultUniverseOnlyReleaseTracksReleaseTrackGACreateCommandr   ALPHAr`   rS   r    r   <module>rq      s    - &  ' > = : ( D : = * * 1 /  D%%(()DMt!! DM * DMN D%%++,.H . - .r    