
                            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lmZ dddZdZdZej0                   ej2                  ej4                  j6                         G d dej8                                      Zej0                   ej2                  ej4                  j<                         G d de                    Zy)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                   \    e Zd ZdZeZej                  j                  Z	e
d        Zd Zd Zy)GenerateGenerate Audit Scope.c                    t        j                  | d       t        j                  | d       t        j                  |        t        j                  |        t        j
                  |        t        j                  |        y )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ArgszGenerate.Args6   s\    	!!&*MN	&"AB	$$V,	""6*	&&v.	%%f-    c                 ^   |j                   du}|rdj                  |j                         ndj                  |j                        }|dj                  |j                        z  }t	        j
                  | j                        }	 |j                  ||j                  |j                  |	      }| j                  ||j                  |j                         |S # t        j                  $ r}t        j                   |      }|j#                  t        j$                        rkd
}t&        j(                  j*                  j,                  j/                         }	d|_        |rdnd}
|
 d|r|j                   n|j                   d|	 d| |_        t5        j6                  |       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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   RunzGenerate.Run?   s   {{$.  	!!!5!(((> 

 
$++T]]+CCE++8H8HIF #


#
#**+	 ! h oo







 o(( #--e4c			OJJ	K+  %%--113(:%   E9 	 /T\\BdV8D63 	 c""%#s   	AC F,.B4F''F,c                     |dk(  }|rdn|dz   }||z   t         z   }|j                  }t        j                  ||d       y)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*   zGenerate.SaveReportn   sI    ."42R8H38NN!11OCI00M	!!)]eLr   N)__name__
__module____qualname____doc___DETAILED_HELPdetailed_helpr   
ApiVersionV1r#   staticmethodr   rD   r*    r   r   r   r   .   s;      -$$''+. .,#^Mr   r   c                   <    e Zd ZdZej
                  j                  Zy)GenerateAlphar   N)rO   rP   rQ   rR   r   rU   V1_ALPHAr#   rX   r   r   rZ   rZ   w   s     $$--+r   rZ   N) rR   
__future__r   r   r   apitools.base.pyr   r-   $googlecloudsdk.api_lib.audit_managerr   r   googlecloudsdk.callioper	   (googlecloudsdk.command_lib.audit_managerr
   r   googlecloudsdk.corer8   r   googlecloudsdk.core.utilr   rS   _SCOPE_REPORT_CONTENTSrI   DefaultUniverseOnlyReleaseTracksReleaseTrackGACreateCommandr   ALPHArZ   rX   r   r   <module>rj      s    - &  ' > = : ( D : = * * 1 /  D%%(()DMt!! DM * DMN D%%++,.H . - .r   