o
                         @   sh   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Zd	ZG d
d deZdS )zCrash Reporting for Cloud SDK.    )absolute_import)division)unicode_literals)apis)
properties)	resourcesv1beta1clouderrorreportingc                   @   sF   e Zd ZdZdddZ		dddZ		dddZd	d
 Zdd ZdS )ErrorReportingz Report errors to errorreporting.Nc                 C   s,   || _ | j d u rttt| _ | j j| _d S N)
api_client	core_apisGetClientInstanceAPI_NAMEAPI_VERSIONMESSAGES_MODULEapi_messages)selfr    r   H/tmp/google-cloud-sdk/lib/googlecloudsdk/api_lib/error_reporting/util.py__init__"   s   
zErrorReporting.__init__c              
   C   s$   | j j| j||||||d dS )a  Creates a new error event and sends to StackDriver Reporting API.

    Args:
      error_message: str, Crash details including stacktrace
      service: str, Name of service
      version: str, Service version, defaults to None
      project: str, Project to report errors to, defaults to current
      request_url: str, The request url that led to the error
      user: str, The user affected by the error
    )versionprojectrequest_urluserN)r   projects_eventsReportGenerateReportRequest)r   error_messageservicer   r   r   r   r   r   r   ReportEvent(   s   zErrorReporting.ReportEventc                 C   s   | j j||d}| j j||d}|s|r+| j  }	|r#| j j|d|	_|r(||	_|	|_|du r3|  }| 	|}
| j j
|
|dS )a  Creates a new error event request.

    Args:
      error_message: str, Crash details including stacktrace
      service: str, Name of service
      version: str, Service version, defaults to None
      project: str, Project to report errors to, defaults to current
      request_url: str, The request url that led to the error
      user: str, The user affected by the error

    Returns:
      The request to send.
    )r   r   )serviceContextmessage)urlN)projectNamereportedErrorEvent)r   ServiceContextReportedErrorEventErrorContextHttpRequestContexthttpRequestr   context_GetGcloudProject_MakeProjectName.ClouderrorreportingProjectsEventsReportRequest)r   r   r   r   r   r   r   service_contexterror_eventerror_contextproject_namer   r   r   r   8   s*   

z$ErrorReporting.GenerateReportRequestc                 C   s   t jjjjddS )z5Gets the current project if project is not specified.T)required)r   VALUEScorer   Get)r   r   r   r   r,   ]   s   z ErrorReporting._GetGcloudProjectc                 C   s   t jjtd |d}| S )Nz	.projects)	projectId)r   REGISTRYCreater   RelativeName)r   r   project_refr   r   r   r-   a   s   zErrorReporting._MakeProjectNamer   )NNNN)	__name__
__module____qualname____doc__r   r    r   r,   r-   r   r   r   r   r
      s    


%r
   N)r?   
__future__r   r   r   googlecloudsdk.api_lib.utilr   r   googlecloudsdk.corer   r   r   r   objectr
   r   r   r   r   <module>   s   