From d975c5dc3529aab2f79d5a034caf1b67ed72e10a Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Thu, 11 Jan 2018 13:48:44 -0800 Subject: [PATCH 1/3] Import error_reporting gapic generated from artman Command log: ``` set DEST ~/workspace/google-cloud-python/error_reporting set GOOGLEAPIS_REV = 9370390e321dae510e7092d05d9f583076d3977b cd /tmp git clone https://github.com/googleapis/googleapis.git cd googleapis git reset hard $GOOGLEAPIS_REV artman --config google/devtools/clouderrorreporting/artman_errorreporting.yaml generate python_gapic set SRC ./artman-genfiles/python/error-reporting-v1beta1/ cp -r $SRC/docs $DEST mkdir -p $DEST/google/cloud/errorreporting_v1beta1 cp -r $SRC/google/cloud/errorreporting_v1beta1/gapic $DEST/google/cloud/errorreporting_v1beta1 cp -r $SRC/google/cloud/errorreporting_v1beta1/proto $DEST/google/cloud/errorreporting_v1beta1 cp -r $SRC/google/cloud/errorreporting_v1beta1/{__init__.py,types.py} $DEST/google/cloud/errorreporting_v1beta1 mkdir -p $DEST/tests/unit/gapic cp -r $SRC/tests/unit/gapic $DEST/tests/unit mkdir -p $DEST/tests/system/gapic cp -r $SRC/tests/system/gapic $DEST/tests/system ``` --- error_reporting/docs/conf.py | 311 +++++ error_reporting/docs/gapic/v1beta1/api.rst | 6 + error_reporting/docs/gapic/v1beta1/types.rst | 5 + error_reporting/docs/index.rst | 101 ++ .../cloud/errorreporting_v1beta1/__init__.py | 48 + .../errorreporting_v1beta1/gapic/__init__.py | 0 .../errorreporting_v1beta1/gapic/enums.py | 83 ++ .../gapic/error_group_service_client.py | 228 ++++ .../error_group_service_client_config.py | 33 + .../gapic/error_stats_service_client.py | 415 ++++++ .../error_stats_service_client_config.py | 38 + .../gapic/report_errors_service_client.py | 187 +++ .../report_errors_service_client_config.py | 28 + .../errorreporting_v1beta1/proto/__init__.py | 0 .../proto/common_pb2.py | 570 ++++++++ .../proto/common_pb2_grpc.py | 3 + .../proto/error_group_service_pb2.py | 288 ++++ .../proto/error_group_service_pb2_grpc.py | 65 + .../proto/error_stats_service_pb2.py | 1165 +++++++++++++++++ .../proto/error_stats_service_pb2_grpc.py | 82 ++ .../proto/report_errors_service_pb2.py | 358 +++++ .../proto/report_errors_service_pb2_grpc.py | 53 + .../cloud/errorreporting_v1beta1/types.py | 49 + ...st_system_report_errors_service_v1beta1.py | 46 + ...test_error_group_service_client_v1beta1.py | 133 ++ ...test_error_stats_service_client_v1beta1.py | 188 +++ ...st_report_errors_service_client_v1beta1.py | 97 ++ 27 files changed, 4580 insertions(+) create mode 100644 error_reporting/docs/conf.py create mode 100644 error_reporting/docs/gapic/v1beta1/api.rst create mode 100644 error_reporting/docs/gapic/v1beta1/types.rst create mode 100644 error_reporting/docs/index.rst create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/__init__.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/__init__.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/enums.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client_config.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client_config.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client_config.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/__init__.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2_grpc.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py create mode 100644 error_reporting/google/cloud/errorreporting_v1beta1/types.py create mode 100644 error_reporting/tests/system/gapic/v1beta1/test_system_report_errors_service_v1beta1.py create mode 100644 error_reporting/tests/unit/gapic/v1beta1/test_error_group_service_client_v1beta1.py create mode 100644 error_reporting/tests/unit/gapic/v1beta1/test_error_stats_service_client_v1beta1.py create mode 100644 error_reporting/tests/unit/gapic/v1beta1/test_report_errors_service_client_v1beta1.py diff --git a/error_reporting/docs/conf.py b/error_reporting/docs/conf.py new file mode 100644 index 000000000000..5c67ea1badda --- /dev/null +++ b/error_reporting/docs/conf.py @@ -0,0 +1,311 @@ +# -*- coding: utf-8 -*- +# +# google-cloud-error-reporting documentation build configuration file +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import os +import shlex + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('..')) + +__version__ = '0.1.0' + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.intersphinx', + 'sphinx.ext.coverage', + 'sphinx.ext.napoleon', + 'sphinx.ext.viewcode', +] + +# autodoc/autosummary flags +autoclass_content = 'both' +autodoc_default_flags = ['members'] +autosummary_generate = True + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'google-cloud-error-reporting' +copyright = u'2017, Google' +author = u'Google APIs' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The full version, including alpha/beta/rc tags. +release = __version__ +# The short X.Y version. +version = '.'.join(release.split('.')[0:2]) + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'sphinx_rtd_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = [] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +#html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' +#html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# Now only 'ja' uses this config value +#html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +#html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'google-cloud-error-reporting-doc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + #'preamble': '', + + # Latex figure (float) alignment + #'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'google-cloud-error-reporting.tex', + u'google-cloud-error-reporting Documentation', author, 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [(master_doc, 'google-cloud-error-reporting', + u'google-cloud-error-reporting Documentation', [author], 1)] + +# If true, show URL addresses after external links. +#man_show_urls = False + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'google-cloud-error-reporting', + u'google-cloud-error-reporting Documentation', author, + 'google-cloud-error-reporting', + 'GAPIC library for the {metadata.shortName} v1beta1 service', 'APIs'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = { + 'python': ('http://python.readthedocs.org/en/latest/', None), + 'gax': ('https://gax-python.readthedocs.org/en/latest/', None), +} + +# Napoleon settings +napoleon_google_docstring = True +napoleon_numpy_docstring = True +napoleon_include_private_with_doc = False +napoleon_include_special_with_doc = True +napoleon_use_admonition_for_examples = False +napoleon_use_admonition_for_notes = False +napoleon_use_admonition_for_references = False +napoleon_use_ivar = False +napoleon_use_param = True +napoleon_use_rtype = True diff --git a/error_reporting/docs/gapic/v1beta1/api.rst b/error_reporting/docs/gapic/v1beta1/api.rst new file mode 100644 index 000000000000..37ead7d3d055 --- /dev/null +++ b/error_reporting/docs/gapic/v1beta1/api.rst @@ -0,0 +1,6 @@ +Client for Stackdriver Error Reporting API +========================================== + +.. automodule:: google.cloud.errorreporting_v1beta1 + :members: + :inherited-members: \ No newline at end of file diff --git a/error_reporting/docs/gapic/v1beta1/types.rst b/error_reporting/docs/gapic/v1beta1/types.rst new file mode 100644 index 000000000000..989f48a7d15e --- /dev/null +++ b/error_reporting/docs/gapic/v1beta1/types.rst @@ -0,0 +1,5 @@ +Types for Stackdriver Error Reporting API Client +================================================ + +.. automodule:: google.cloud.errorreporting_v1beta1.types + :members: \ No newline at end of file diff --git a/error_reporting/docs/index.rst b/error_reporting/docs/index.rst new file mode 100644 index 000000000000..56a8a6cc6f81 --- /dev/null +++ b/error_reporting/docs/index.rst @@ -0,0 +1,101 @@ +Python Client for Stackdriver Error Reporting API (`Alpha`_) +============================================================ + +`Stackdriver Error Reporting API`_: +Stackdriver Error Reporting groups and counts similar errors from cloud services. The Stackdriver Error Reporting API provides a way to report new errors and read access to error groups and their associated errors. + +- `Client Library Documentation`_ +- `Product Documentation`_ + +.. _Alpha: https://github.com/GoogleCloudPlatform/google-cloud-python/blob/master/README.rst +.. _Stackdriver Error Reporting API: https://cloud.google.com/error-reporting +.. _Client Library Documentation: https://googlecloudplatform.github.io/google-cloud-python/stable/error-reporting/usage.html +.. _Product Documentation: https://cloud.google.com/error-reporting + +Quick Start +----------- + +In order to use this library, you first need to go through the following steps: + +1. `Select or create a Cloud Platform project.`_ +2. `Enable billing for your project.`_ +3. `Enable the Stackdriver Error Reporting API.`_ +4. `Setup Authentication.`_ + +.. _Select or create a Cloud Platform project.: https://console.cloud.google.com/project +.. _Enable billing for your project.: https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project +.. _Enable the Stackdriver Error Reporting API.: https://cloud.google.com/error-reporting +.. _Setup Authentication.: https://googlecloudplatform.github.io/google-cloud-python/stable/core/auth.html + +Installation +~~~~~~~~~~~~ + +Install this library in a `virtualenv`_ using pip. `virtualenv`_ is a tool to +create isolated Python environments. The basic problem it addresses is one of +dependencies and versions, and indirectly permissions. + +With `virtualenv`_, it's possible to install this library without needing system +install permissions, and without clashing with the installed system +dependencies. + +.. _`virtualenv`: https://virtualenv.pypa.io/en/latest/ + + +Mac/Linux +^^^^^^^^^ + +.. code-block:: console + + pip install virtualenv + virtualenv + source /bin/activate + /bin/pip install google-cloud-error-reporting + + +Windows +^^^^^^^ + +.. code-block:: console + + pip install virtualenv + virtualenv + \Scripts\activate + \Scripts\pip.exe install google-cloud-error-reporting + +Preview +~~~~~~~ + +ReportErrorsServiceClient +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: py + + from google.cloud import errorreporting_v1beta1 + + client = errorreporting_v1beta1.ReportErrorsServiceClient() + + project_name = client.project_path('[PROJECT]') + event = {} + + response = client.report_error_event(project_name, event) + +Next Steps +~~~~~~~~~~ + +- Read the `Client Library Documentation`_ for Stackdriver Error Reporting API + API to see other available methods on the client. +- Read the `Stackdriver Error Reporting API Product documentation`_ to learn + more about the product and see How-to Guides. +- View this `repository’s main README`_ to see the full list of Cloud + APIs that we cover. + +.. _Stackdriver Error Reporting API Product documentation: https://cloud.google.com/error-reporting +.. _repository’s main README: https://github.com/GoogleCloudPlatform/google-cloud-python/blob/master/README.rst + +Api Reference +------------- +.. toctree:: + :maxdepth: 2 + + gapic/v1beta1/api + gapic/v1beta1/types \ No newline at end of file diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/__init__.py b/error_reporting/google/cloud/errorreporting_v1beta1/__init__.py new file mode 100644 index 000000000000..9b87d8f5e2ca --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/__init__.py @@ -0,0 +1,48 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import + +from google.cloud.errorreporting_v1beta1 import types +from google.cloud.errorreporting_v1beta1.gapic import enums +from google.cloud.errorreporting_v1beta1.gapic import error_group_service_client +from google.cloud.errorreporting_v1beta1.gapic import error_stats_service_client +from google.cloud.errorreporting_v1beta1.gapic import report_errors_service_client + + +class ErrorGroupServiceClient( + error_group_service_client.ErrorGroupServiceClient): + __doc__ = error_group_service_client.ErrorGroupServiceClient.__doc__ + enums = enums + + +class ErrorStatsServiceClient( + error_stats_service_client.ErrorStatsServiceClient): + __doc__ = error_stats_service_client.ErrorStatsServiceClient.__doc__ + enums = enums + + +class ReportErrorsServiceClient( + report_errors_service_client.ReportErrorsServiceClient): + __doc__ = report_errors_service_client.ReportErrorsServiceClient.__doc__ + enums = enums + + +__all__ = ( + 'enums', + 'types', + 'ErrorGroupServiceClient', + 'ErrorStatsServiceClient', + 'ReportErrorsServiceClient', +) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/__init__.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/enums.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/enums.py new file mode 100644 index 000000000000..17cab7fbb541 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/enums.py @@ -0,0 +1,83 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Wrappers for protocol buffer enum types.""" + + +class TimedCountAlignment(object): + """ + Specifies how the time periods of error group counts are aligned. + + Attributes: + ERROR_COUNT_ALIGNMENT_UNSPECIFIED (int): No alignment specified. + ALIGNMENT_EQUAL_ROUNDED (int): The time periods shall be consecutive, have width equal to the + requested duration, and be aligned at the ``alignment_time`` provided in + the request. + The ``alignment_time`` does not have to be inside the query period but + even if it is outside, only time periods are returned which overlap + with the query period. + A rounded alignment will typically result in a + different size of the first or the last time period. + ALIGNMENT_EQUAL_AT_END (int): The time periods shall be consecutive, have width equal to the + requested duration, and be aligned at the end of the requested time + period. This can result in a different size of the + first time period. + """ + ERROR_COUNT_ALIGNMENT_UNSPECIFIED = 0 + ALIGNMENT_EQUAL_ROUNDED = 1 + ALIGNMENT_EQUAL_AT_END = 2 + + +class ErrorGroupOrder(object): + """ + A sorting order of error groups. + + Attributes: + GROUP_ORDER_UNSPECIFIED (int): No group order specified. + COUNT_DESC (int): Total count of errors in the given time window in descending order. + LAST_SEEN_DESC (int): Timestamp when the group was last seen in the given time window + in descending order. + CREATED_DESC (int): Timestamp when the group was created in descending order. + AFFECTED_USERS_DESC (int): Number of affected users in the given time window in descending order. + """ + GROUP_ORDER_UNSPECIFIED = 0 + COUNT_DESC = 1 + LAST_SEEN_DESC = 2 + CREATED_DESC = 3 + AFFECTED_USERS_DESC = 4 + + +class QueryTimeRange(object): + class Period(object): + """ + The supported time ranges. + + Attributes: + PERIOD_UNSPECIFIED (int): Do not use. + PERIOD_1_HOUR (int): Retrieve data for the last hour. + Recommended minimum timed count duration: 1 min. + PERIOD_6_HOURS (int): Retrieve data for the last 6 hours. + Recommended minimum timed count duration: 10 min. + PERIOD_1_DAY (int): Retrieve data for the last day. + Recommended minimum timed count duration: 1 hour. + PERIOD_1_WEEK (int): Retrieve data for the last week. + Recommended minimum timed count duration: 6 hours. + PERIOD_30_DAYS (int): Retrieve data for the last 30 days. + Recommended minimum timed count duration: 1 day. + """ + PERIOD_UNSPECIFIED = 0 + PERIOD_1_HOUR = 1 + PERIOD_6_HOURS = 2 + PERIOD_1_DAY = 3 + PERIOD_1_WEEK = 4 + PERIOD_30_DAYS = 5 diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client.py new file mode 100644 index 000000000000..d82d1d1a6a0b --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client.py @@ -0,0 +1,228 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Accesses the google.devtools.clouderrorreporting.v1beta1 ErrorGroupService API.""" + +import pkg_resources + +import google.api_core.gapic_v1.client_info +import google.api_core.gapic_v1.config +import google.api_core.gapic_v1.method +import google.api_core.grpc_helpers +import google.api_core.path_template + +from google.cloud.errorreporting_v1beta1.gapic import enums +from google.cloud.errorreporting_v1beta1.gapic import error_group_service_client_config +from google.cloud.errorreporting_v1beta1.proto import common_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_group_service_pb2 + +_GAPIC_LIBRARY_VERSION = pkg_resources.get_distribution( + 'google-cloud-error-reporting', ).version + + +class ErrorGroupServiceClient(object): + """Service for retrieving and updating individual error groups.""" + + SERVICE_ADDRESS = 'clouderrorreporting.googleapis.com:443' + """The default address of the service.""" + + # The scopes needed to make gRPC calls to all of the methods defined in + # this service + _DEFAULT_SCOPES = ('https://www.googleapis.com/auth/cloud-platform', ) + + # The name of the interface for this client. This is the key used to find + # method configuration in the client_config dictionary. + _INTERFACE_NAME = 'google.devtools.clouderrorreporting.v1beta1.ErrorGroupService' + + @classmethod + def group_path(cls, project, group): + """Return a fully-qualified group string.""" + return google.api_core.path_template.expand( + 'projects/{project}/groups/{group}', + project=project, + group=group, + ) + + def __init__(self, + channel=None, + credentials=None, + client_config=error_group_service_client_config.config, + client_info=None): + """Constructor. + + Args: + channel (grpc.Channel): A ``Channel`` instance through + which to make calls. This argument is mutually exclusive + with ``credentials``; providing both will raise an exception. + credentials (google.auth.credentials.Credentials): The + authorization credentials to attach to requests. These + credentials identify this application to the service. If none + are specified, the client will attempt to ascertain the + credentials from the environment. + client_config (dict): A dictionary of call options for each + method. If not specified, the default configuration is used. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + """ + # If both `channel` and `credentials` are specified, raise an + # exception (channels come with credentials baked in already). + if channel is not None and credentials is not None: + raise ValueError( + 'The `channel` and `credentials` arguments to {} are mutually ' + 'exclusive.'.format(self.__class__.__name__), ) + + # Create the channel. + if channel is None: + channel = google.api_core.grpc_helpers.create_channel( + self.SERVICE_ADDRESS, + credentials=credentials, + scopes=self._DEFAULT_SCOPES, + ) + + # Create the gRPC stubs. + self.error_group_service_stub = ( + error_group_service_pb2.ErrorGroupServiceStub(channel)) + + if client_info is None: + client_info = ( + google.api_core.gapic_v1.client_info.DEFAULT_CLIENT_INFO) + client_info.gapic_version = _GAPIC_LIBRARY_VERSION + + # Parse out the default settings for retry and timeout for each RPC + # from the client configuration. + # (Ordinarily, these are the defaults specified in the `*_config.py` + # file next to this one.) + method_configs = google.api_core.gapic_v1.config.parse_method_configs( + client_config['interfaces'][self._INTERFACE_NAME], ) + + # Write the "inner API call" methods to the class. + # These are wrapped versions of the gRPC stub methods, with retry and + # timeout configuration applied, called by the public methods on + # this class. + self._get_group = google.api_core.gapic_v1.method.wrap_method( + self.error_group_service_stub.GetGroup, + default_retry=method_configs['GetGroup'].retry, + default_timeout=method_configs['GetGroup'].timeout, + client_info=client_info, + ) + self._update_group = google.api_core.gapic_v1.method.wrap_method( + self.error_group_service_stub.UpdateGroup, + default_retry=method_configs['UpdateGroup'].retry, + default_timeout=method_configs['UpdateGroup'].timeout, + client_info=client_info, + ) + + # Service calls + def get_group(self, + group_name, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None): + """ + Get the specified group. + + Example: + >>> from google.cloud import errorreporting_v1beta1 + >>> + >>> client = errorreporting_v1beta1.ErrorGroupServiceClient() + >>> + >>> group_name = client.group_path('[PROJECT]', '[GROUP]') + >>> + >>> response = client.get_group(group_name) + + Args: + group_name (str): [Required] The group resource name. Written as + projects/projectID/groups/group_name. + Call + + groupStats.list to return a list of groups belonging to + this project. + + Example: projects/my-project-123/groups/my-group + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will not + be retried. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.cloud.errorreporting_v1beta1.types.ErrorGroup` instance. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + if metadata is None: + metadata = [] + metadata = list(metadata) + request = error_group_service_pb2.GetGroupRequest( + group_name=group_name, ) + return self._get_group( + request, retry=retry, timeout=timeout, metadata=metadata) + + def update_group(self, + group, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None): + """ + Replace the data for the specified group. + Fails if the group does not exist. + + Example: + >>> from google.cloud import errorreporting_v1beta1 + >>> + >>> client = errorreporting_v1beta1.ErrorGroupServiceClient() + >>> + >>> group = {} + >>> + >>> response = client.update_group(group) + + Args: + group (Union[dict, ~google.cloud.errorreporting_v1beta1.types.ErrorGroup]): [Required] The group which replaces the resource on the server. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.ErrorGroup` + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will not + be retried. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.cloud.errorreporting_v1beta1.types.ErrorGroup` instance. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + if metadata is None: + metadata = [] + metadata = list(metadata) + request = error_group_service_pb2.UpdateGroupRequest(group=group, ) + return self._update_group( + request, retry=retry, timeout=timeout, metadata=metadata) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client_config.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client_config.py new file mode 100644 index 000000000000..cff4fca5a4c5 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_group_service_client_config.py @@ -0,0 +1,33 @@ +config = { + "interfaces": { + "google.devtools.clouderrorreporting.v1beta1.ErrorGroupService": { + "retry_codes": { + "idempotent": ["DEADLINE_EXCEEDED", "UNAVAILABLE"], + "non_idempotent": [] + }, + "retry_params": { + "default": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 1.3, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 20000, + "rpc_timeout_multiplier": 1.0, + "max_rpc_timeout_millis": 20000, + "total_timeout_millis": 600000 + } + }, + "methods": { + "GetGroup": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + }, + "UpdateGroup": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + } + } + } + } +} diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client.py new file mode 100644 index 000000000000..23015b86391f --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client.py @@ -0,0 +1,415 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Accesses the google.devtools.clouderrorreporting.v1beta1 ErrorStatsService API.""" + +import functools +import pkg_resources + +import google.api_core.gapic_v1.client_info +import google.api_core.gapic_v1.config +import google.api_core.gapic_v1.method +import google.api_core.grpc_helpers +import google.api_core.page_iterator +import google.api_core.path_template + +from google.cloud.errorreporting_v1beta1.gapic import enums +from google.cloud.errorreporting_v1beta1.gapic import error_stats_service_client_config +from google.cloud.errorreporting_v1beta1.proto import common_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_group_service_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_stats_service_pb2 +from google.protobuf import duration_pb2 +from google.protobuf import timestamp_pb2 + +_GAPIC_LIBRARY_VERSION = pkg_resources.get_distribution( + 'google-cloud-error-reporting', ).version + + +class ErrorStatsServiceClient(object): + """ + An API for retrieving and managing error statistics as well as data for + individual events. + """ + + SERVICE_ADDRESS = 'clouderrorreporting.googleapis.com:443' + """The default address of the service.""" + + # The scopes needed to make gRPC calls to all of the methods defined in + # this service + _DEFAULT_SCOPES = ('https://www.googleapis.com/auth/cloud-platform', ) + + # The name of the interface for this client. This is the key used to find + # method configuration in the client_config dictionary. + _INTERFACE_NAME = 'google.devtools.clouderrorreporting.v1beta1.ErrorStatsService' + + @classmethod + def project_path(cls, project): + """Return a fully-qualified project string.""" + return google.api_core.path_template.expand( + 'projects/{project}', + project=project, + ) + + def __init__(self, + channel=None, + credentials=None, + client_config=error_stats_service_client_config.config, + client_info=None): + """Constructor. + + Args: + channel (grpc.Channel): A ``Channel`` instance through + which to make calls. This argument is mutually exclusive + with ``credentials``; providing both will raise an exception. + credentials (google.auth.credentials.Credentials): The + authorization credentials to attach to requests. These + credentials identify this application to the service. If none + are specified, the client will attempt to ascertain the + credentials from the environment. + client_config (dict): A dictionary of call options for each + method. If not specified, the default configuration is used. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + """ + # If both `channel` and `credentials` are specified, raise an + # exception (channels come with credentials baked in already). + if channel is not None and credentials is not None: + raise ValueError( + 'The `channel` and `credentials` arguments to {} are mutually ' + 'exclusive.'.format(self.__class__.__name__), ) + + # Create the channel. + if channel is None: + channel = google.api_core.grpc_helpers.create_channel( + self.SERVICE_ADDRESS, + credentials=credentials, + scopes=self._DEFAULT_SCOPES, + ) + + # Create the gRPC stubs. + self.error_stats_service_stub = ( + error_stats_service_pb2.ErrorStatsServiceStub(channel)) + + if client_info is None: + client_info = ( + google.api_core.gapic_v1.client_info.DEFAULT_CLIENT_INFO) + client_info.gapic_version = _GAPIC_LIBRARY_VERSION + + # Parse out the default settings for retry and timeout for each RPC + # from the client configuration. + # (Ordinarily, these are the defaults specified in the `*_config.py` + # file next to this one.) + method_configs = google.api_core.gapic_v1.config.parse_method_configs( + client_config['interfaces'][self._INTERFACE_NAME], ) + + # Write the "inner API call" methods to the class. + # These are wrapped versions of the gRPC stub methods, with retry and + # timeout configuration applied, called by the public methods on + # this class. + self._list_group_stats = google.api_core.gapic_v1.method.wrap_method( + self.error_stats_service_stub.ListGroupStats, + default_retry=method_configs['ListGroupStats'].retry, + default_timeout=method_configs['ListGroupStats'].timeout, + client_info=client_info, + ) + self._list_events = google.api_core.gapic_v1.method.wrap_method( + self.error_stats_service_stub.ListEvents, + default_retry=method_configs['ListEvents'].retry, + default_timeout=method_configs['ListEvents'].timeout, + client_info=client_info, + ) + self._delete_events = google.api_core.gapic_v1.method.wrap_method( + self.error_stats_service_stub.DeleteEvents, + default_retry=method_configs['DeleteEvents'].retry, + default_timeout=method_configs['DeleteEvents'].timeout, + client_info=client_info, + ) + + # Service calls + def list_group_stats(self, + project_name, + time_range, + group_id=None, + service_filter=None, + timed_count_duration=None, + alignment=None, + alignment_time=None, + order=None, + page_size=None, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None): + """ + Lists the specified groups. + + Example: + >>> from google.cloud import errorreporting_v1beta1 + >>> + >>> client = errorreporting_v1beta1.ErrorStatsServiceClient() + >>> + >>> project_name = client.project_path('[PROJECT]') + >>> time_range = {} + >>> + >>> + >>> # Iterate over all results + >>> for element in client.list_group_stats(project_name, time_range): + ... # process element + ... pass + >>> + >>> # Or iterate over results one page at a time + >>> for page in client.list_group_stats(project_name, time_range, options=CallOptions(page_token=INITIAL_PAGE)): + ... for element in page: + ... # process element + ... pass + + Args: + project_name (str): [Required] The resource name of the Google Cloud Platform project. Written + as projects/ plus the + Google Cloud + Platform project ID. + + Example: projects/my-project-123. + time_range (Union[dict, ~google.cloud.errorreporting_v1beta1.types.QueryTimeRange]): [Optional] List data for the given time range. + If not set a default time range is used. The field time_range_begin + in the response will specify the beginning of this time range. + Only ErrorGroupStats with a non-zero count in the given time + range are returned, unless the request contains an explicit group_id list. + If a group_id list is given, also ErrorGroupStats with zero + occurrences are returned. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.QueryTimeRange` + group_id (list[str]): [Optional] List all ErrorGroupStats with these IDs. + service_filter (Union[dict, ~google.cloud.errorreporting_v1beta1.types.ServiceContextFilter]): [Optional] List only ErrorGroupStats which belong to a service + context that matches the filter. + Data for all service contexts is returned if this field is not specified. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.ServiceContextFilter` + timed_count_duration (Union[dict, ~google.cloud.errorreporting_v1beta1.types.Duration]): [Optional] The preferred duration for a single returned ``TimedCount``. + If not set, no timed counts are returned. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.Duration` + alignment (~google.cloud.errorreporting_v1beta1.types.TimedCountAlignment): [Optional] The alignment of the timed counts to be returned. + Default is ``ALIGNMENT_EQUAL_AT_END``. + alignment_time (Union[dict, ~google.cloud.errorreporting_v1beta1.types.Timestamp]): [Optional] Time where the timed counts shall be aligned if rounded + alignment is chosen. Default is 00:00 UTC. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.Timestamp` + order (~google.cloud.errorreporting_v1beta1.types.ErrorGroupOrder): [Optional] The sort order in which the results are returned. + Default is ``COUNT_DESC``. + page_size (int): The maximum number of resources contained in the + underlying API response. If page streaming is performed per- + resource, this parameter does not affect the return value. If page + streaming is performed per-page, this determines the maximum number + of resources in a page. + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will not + be retried. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.gax.PageIterator` instance. By default, this + is an iterable of :class:`~google.cloud.errorreporting_v1beta1.types.ErrorGroupStats` instances. + This object can also be configured to iterate over the pages + of the response through the `options` parameter. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + if metadata is None: + metadata = [] + metadata = list(metadata) + request = error_stats_service_pb2.ListGroupStatsRequest( + project_name=project_name, + time_range=time_range, + group_id=group_id, + service_filter=service_filter, + timed_count_duration=timed_count_duration, + alignment=alignment, + alignment_time=alignment_time, + order=order, + page_size=page_size, + ) + iterator = google.api_core.page_iterator.GRPCIterator( + client=None, + method=functools.partial( + self._list_group_stats, + retry=retry, + timeout=timeout, + metadata=metadata), + request=request, + items_field='error_group_stats', + request_token_field='page_token', + response_token_field='next_page_token', + ) + return iterator + + def list_events(self, + project_name, + group_id, + service_filter=None, + time_range=None, + page_size=None, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None): + """ + Lists the specified events. + + Example: + >>> from google.cloud import errorreporting_v1beta1 + >>> + >>> client = errorreporting_v1beta1.ErrorStatsServiceClient() + >>> + >>> project_name = client.project_path('[PROJECT]') + >>> group_id = '' + >>> + >>> + >>> # Iterate over all results + >>> for element in client.list_events(project_name, group_id): + ... # process element + ... pass + >>> + >>> # Or iterate over results one page at a time + >>> for page in client.list_events(project_name, group_id, options=CallOptions(page_token=INITIAL_PAGE)): + ... for element in page: + ... # process element + ... pass + + Args: + project_name (str): [Required] The resource name of the Google Cloud Platform project. Written + as ``projects/`` plus the + [Google Cloud Platform project + ID](https://support.google.com/cloud/answer/6158840). + Example: ``projects/my-project-123``. + group_id (str): [Required] The group for which events shall be returned. + service_filter (Union[dict, ~google.cloud.errorreporting_v1beta1.types.ServiceContextFilter]): [Optional] List only ErrorGroups which belong to a service context that + matches the filter. + Data for all service contexts is returned if this field is not specified. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.ServiceContextFilter` + time_range (Union[dict, ~google.cloud.errorreporting_v1beta1.types.QueryTimeRange]): [Optional] List only data for the given time range. + If not set a default time range is used. The field time_range_begin + in the response will specify the beginning of this time range. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.QueryTimeRange` + page_size (int): The maximum number of resources contained in the + underlying API response. If page streaming is performed per- + resource, this parameter does not affect the return value. If page + streaming is performed per-page, this determines the maximum number + of resources in a page. + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will not + be retried. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.gax.PageIterator` instance. By default, this + is an iterable of :class:`~google.cloud.errorreporting_v1beta1.types.ErrorEvent` instances. + This object can also be configured to iterate over the pages + of the response through the `options` parameter. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + if metadata is None: + metadata = [] + metadata = list(metadata) + request = error_stats_service_pb2.ListEventsRequest( + project_name=project_name, + group_id=group_id, + service_filter=service_filter, + time_range=time_range, + page_size=page_size, + ) + iterator = google.api_core.page_iterator.GRPCIterator( + client=None, + method=functools.partial( + self._list_events, + retry=retry, + timeout=timeout, + metadata=metadata), + request=request, + items_field='error_events', + request_token_field='page_token', + response_token_field='next_page_token', + ) + return iterator + + def delete_events(self, + project_name, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None): + """ + Deletes all error events of a given project. + + Example: + >>> from google.cloud import errorreporting_v1beta1 + >>> + >>> client = errorreporting_v1beta1.ErrorStatsServiceClient() + >>> + >>> project_name = client.project_path('[PROJECT]') + >>> + >>> response = client.delete_events(project_name) + + Args: + project_name (str): [Required] The resource name of the Google Cloud Platform project. Written + as ``projects/`` plus the + [Google Cloud Platform project + ID](https://support.google.com/cloud/answer/6158840). + Example: ``projects/my-project-123``. + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will not + be retried. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.cloud.errorreporting_v1beta1.types.DeleteEventsResponse` instance. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + if metadata is None: + metadata = [] + metadata = list(metadata) + request = error_stats_service_pb2.DeleteEventsRequest( + project_name=project_name, ) + return self._delete_events( + request, retry=retry, timeout=timeout, metadata=metadata) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client_config.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client_config.py new file mode 100644 index 000000000000..72c655421477 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/error_stats_service_client_config.py @@ -0,0 +1,38 @@ +config = { + "interfaces": { + "google.devtools.clouderrorreporting.v1beta1.ErrorStatsService": { + "retry_codes": { + "idempotent": ["DEADLINE_EXCEEDED", "UNAVAILABLE"], + "non_idempotent": [] + }, + "retry_params": { + "default": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 1.3, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 20000, + "rpc_timeout_multiplier": 1.0, + "max_rpc_timeout_millis": 20000, + "total_timeout_millis": 600000 + } + }, + "methods": { + "ListGroupStats": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + }, + "ListEvents": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + }, + "DeleteEvents": { + "timeout_millis": 60000, + "retry_codes_name": "idempotent", + "retry_params_name": "default" + } + } + } + } +} diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client.py new file mode 100644 index 000000000000..04e787c81c25 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client.py @@ -0,0 +1,187 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Accesses the google.devtools.clouderrorreporting.v1beta1 ReportErrorsService API.""" + +import pkg_resources + +import google.api_core.gapic_v1.client_info +import google.api_core.gapic_v1.config +import google.api_core.gapic_v1.method +import google.api_core.grpc_helpers +import google.api_core.path_template + +from google.cloud.errorreporting_v1beta1.gapic import enums +from google.cloud.errorreporting_v1beta1.gapic import report_errors_service_client_config +from google.cloud.errorreporting_v1beta1.proto import common_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_group_service_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_stats_service_pb2 +from google.cloud.errorreporting_v1beta1.proto import report_errors_service_pb2 +from google.protobuf import duration_pb2 +from google.protobuf import timestamp_pb2 + +_GAPIC_LIBRARY_VERSION = pkg_resources.get_distribution( + 'google-cloud-error-reporting', ).version + + +class ReportErrorsServiceClient(object): + """An API for reporting error events.""" + + SERVICE_ADDRESS = 'clouderrorreporting.googleapis.com:443' + """The default address of the service.""" + + # The scopes needed to make gRPC calls to all of the methods defined in + # this service + _DEFAULT_SCOPES = ('https://www.googleapis.com/auth/cloud-platform', ) + + # The name of the interface for this client. This is the key used to find + # method configuration in the client_config dictionary. + _INTERFACE_NAME = 'google.devtools.clouderrorreporting.v1beta1.ReportErrorsService' + + @classmethod + def project_path(cls, project): + """Return a fully-qualified project string.""" + return google.api_core.path_template.expand( + 'projects/{project}', + project=project, + ) + + def __init__(self, + channel=None, + credentials=None, + client_config=report_errors_service_client_config.config, + client_info=None): + """Constructor. + + Args: + channel (grpc.Channel): A ``Channel`` instance through + which to make calls. This argument is mutually exclusive + with ``credentials``; providing both will raise an exception. + credentials (google.auth.credentials.Credentials): The + authorization credentials to attach to requests. These + credentials identify this application to the service. If none + are specified, the client will attempt to ascertain the + credentials from the environment. + client_config (dict): A dictionary of call options for each + method. If not specified, the default configuration is used. + client_info (google.api_core.gapic_v1.client_info.ClientInfo): + The client info used to send a user-agent string along with + API requests. If ``None``, then default info will be used. + Generally, you only need to set this if you're developing + your own client library. + """ + # If both `channel` and `credentials` are specified, raise an + # exception (channels come with credentials baked in already). + if channel is not None and credentials is not None: + raise ValueError( + 'The `channel` and `credentials` arguments to {} are mutually ' + 'exclusive.'.format(self.__class__.__name__), ) + + # Create the channel. + if channel is None: + channel = google.api_core.grpc_helpers.create_channel( + self.SERVICE_ADDRESS, + credentials=credentials, + scopes=self._DEFAULT_SCOPES, + ) + + # Create the gRPC stubs. + self.report_errors_service_stub = ( + report_errors_service_pb2.ReportErrorsServiceStub(channel)) + + if client_info is None: + client_info = ( + google.api_core.gapic_v1.client_info.DEFAULT_CLIENT_INFO) + client_info.gapic_version = _GAPIC_LIBRARY_VERSION + + # Parse out the default settings for retry and timeout for each RPC + # from the client configuration. + # (Ordinarily, these are the defaults specified in the `*_config.py` + # file next to this one.) + method_configs = google.api_core.gapic_v1.config.parse_method_configs( + client_config['interfaces'][self._INTERFACE_NAME], ) + + # Write the "inner API call" methods to the class. + # These are wrapped versions of the gRPC stub methods, with retry and + # timeout configuration applied, called by the public methods on + # this class. + self._report_error_event = google.api_core.gapic_v1.method.wrap_method( + self.report_errors_service_stub.ReportErrorEvent, + default_retry=method_configs['ReportErrorEvent'].retry, + default_timeout=method_configs['ReportErrorEvent'].timeout, + client_info=client_info, + ) + + # Service calls + def report_error_event(self, + project_name, + event, + retry=google.api_core.gapic_v1.method.DEFAULT, + timeout=google.api_core.gapic_v1.method.DEFAULT, + metadata=None): + """ + Report an individual error event. + + This endpoint accepts either an OAuth token, + or an + API key + for authentication. To use an API key, append it to the URL as the value of + a ``key`` parameter. For example: +
POST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456
+ + Example: + >>> from google.cloud import errorreporting_v1beta1 + >>> + >>> client = errorreporting_v1beta1.ReportErrorsServiceClient() + >>> + >>> project_name = client.project_path('[PROJECT]') + >>> event = {} + >>> + >>> response = client.report_error_event(project_name, event) + + Args: + project_name (str): [Required] The resource name of the Google Cloud Platform project. Written + as ``projects/`` plus the + `Google Cloud Platform project ID `_. + Example: ``projects/my-project-123``. + event (Union[dict, ~google.cloud.errorreporting_v1beta1.types.ReportedErrorEvent]): [Required] The error event to be reported. + If a dict is provided, it must be of the same form as the protobuf + message :class:`~google.cloud.errorreporting_v1beta1.types.ReportedErrorEvent` + retry (Optional[google.api_core.retry.Retry]): A retry object used + to retry requests. If ``None`` is specified, requests will not + be retried. + timeout (Optional[float]): The amount of time, in seconds, to wait + for the request to complete. Note that if ``retry`` is + specified, the timeout applies to each individual attempt. + metadata (Optional[Sequence[Tuple[str, str]]]): Additional metadata + that is provided to the method. + + Returns: + A :class:`~google.cloud.errorreporting_v1beta1.types.ReportErrorEventResponse` instance. + + Raises: + google.api_core.exceptions.GoogleAPICallError: If the request + failed for any reason. + google.api_core.exceptions.RetryError: If the request failed due + to a retryable error and retry attempts failed. + ValueError: If the parameters are invalid. + """ + if metadata is None: + metadata = [] + metadata = list(metadata) + request = report_errors_service_pb2.ReportErrorEventRequest( + project_name=project_name, + event=event, + ) + return self._report_error_event( + request, retry=retry, timeout=timeout, metadata=metadata) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client_config.py b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client_config.py new file mode 100644 index 000000000000..a84dde22b57c --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/gapic/report_errors_service_client_config.py @@ -0,0 +1,28 @@ +config = { + "interfaces": { + "google.devtools.clouderrorreporting.v1beta1.ReportErrorsService": { + "retry_codes": { + "idempotent": ["DEADLINE_EXCEEDED", "UNAVAILABLE"], + "non_idempotent": [] + }, + "retry_params": { + "default": { + "initial_retry_delay_millis": 100, + "retry_delay_multiplier": 1.3, + "max_retry_delay_millis": 60000, + "initial_rpc_timeout_millis": 20000, + "rpc_timeout_multiplier": 1.0, + "max_rpc_timeout_millis": 20000, + "total_timeout_millis": 600000 + } + }, + "methods": { + "ReportErrorEvent": { + "timeout_millis": 60000, + "retry_codes_name": "non_idempotent", + "retry_params_name": "default" + } + } + } + } +} diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/__init__.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2.py new file mode 100644 index 000000000000..8f11310e3141 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2.py @@ -0,0 +1,570 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/devtools/clouderrorreporting_v1beta1/proto/common.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.api import monitored_resource_pb2 as google_dot_api_dot_monitored__resource__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='google/devtools/clouderrorreporting_v1beta1/proto/common.proto', + package='google.devtools.clouderrorreporting.v1beta1', + syntax='proto3', + serialized_pb=_b('\n>google/devtools/clouderrorreporting_v1beta1/proto/common.proto\x12+google.devtools.clouderrorreporting.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a#google/api/monitored_resource.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x81\x01\n\nErrorGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12S\n\x0ftracking_issues\x18\x03 \x03(\x0b\x32:.google.devtools.clouderrorreporting.v1beta1.TrackingIssue\"\x1c\n\rTrackingIssue\x12\x0b\n\x03url\x18\x01 \x01(\t\"\xef\x01\n\nErrorEvent\x12.\n\nevent_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12T\n\x0fservice_context\x18\x02 \x01(\x0b\x32;.google.devtools.clouderrorreporting.v1beta1.ServiceContext\x12\x0f\n\x07message\x18\x03 \x01(\t\x12J\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x39.google.devtools.clouderrorreporting.v1beta1.ErrorContext\"I\n\x0eServiceContext\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x15\n\rresource_type\x18\x04 \x01(\t\"\xc9\x01\n\x0c\x45rrorContext\x12U\n\x0chttp_request\x18\x01 \x01(\x0b\x32?.google.devtools.clouderrorreporting.v1beta1.HttpRequestContext\x12\x0c\n\x04user\x18\x02 \x01(\t\x12T\n\x0freport_location\x18\x03 \x01(\x0b\x32;.google.devtools.clouderrorreporting.v1beta1.SourceLocation\"\x88\x01\n\x12HttpRequestContext\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\x12\x12\n\nuser_agent\x18\x03 \x01(\t\x12\x10\n\x08referrer\x18\x04 \x01(\t\x12\x1c\n\x14response_status_code\x18\x05 \x01(\x05\x12\x11\n\tremote_ip\x18\x06 \x01(\t\"O\n\x0eSourceLocation\x12\x11\n\tfile_path\x18\x01 \x01(\t\x12\x13\n\x0bline_number\x18\x02 \x01(\x05\x12\x15\n\rfunction_name\x18\x04 \x01(\tB\xec\x01\n/com.google.devtools.clouderrorreporting.v1beta1B\x0b\x43ommonProtoP\x01Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\xaa\x02#Google.Cloud.ErrorReporting.V1Beta1\xca\x02#Google\\Cloud\\ErrorReporting\\V1beta1b\x06proto3') + , + dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_api_dot_monitored__resource__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_ERRORGROUP = _descriptor.Descriptor( + name='ErrorGroup', + full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroup', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='name', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroup.name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group_id', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroup.group_id', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='tracking_issues', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroup.tracking_issues', index=2, + number=3, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=212, + serialized_end=341, +) + + +_TRACKINGISSUE = _descriptor.Descriptor( + name='TrackingIssue', + full_name='google.devtools.clouderrorreporting.v1beta1.TrackingIssue', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='url', full_name='google.devtools.clouderrorreporting.v1beta1.TrackingIssue.url', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=343, + serialized_end=371, +) + + +_ERROREVENT = _descriptor.Descriptor( + name='ErrorEvent', + full_name='google.devtools.clouderrorreporting.v1beta1.ErrorEvent', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='event_time', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorEvent.event_time', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='service_context', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorEvent.service_context', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='message', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorEvent.message', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='context', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorEvent.context', index=3, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=374, + serialized_end=613, +) + + +_SERVICECONTEXT = _descriptor.Descriptor( + name='ServiceContext', + full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContext', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='service', full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContext.service', index=0, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='version', full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContext.version', index=1, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='resource_type', full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContext.resource_type', index=2, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=615, + serialized_end=688, +) + + +_ERRORCONTEXT = _descriptor.Descriptor( + name='ErrorContext', + full_name='google.devtools.clouderrorreporting.v1beta1.ErrorContext', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='http_request', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorContext.http_request', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorContext.user', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='report_location', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorContext.report_location', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=691, + serialized_end=892, +) + + +_HTTPREQUESTCONTEXT = _descriptor.Descriptor( + name='HttpRequestContext', + full_name='google.devtools.clouderrorreporting.v1beta1.HttpRequestContext', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='method', full_name='google.devtools.clouderrorreporting.v1beta1.HttpRequestContext.method', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='url', full_name='google.devtools.clouderrorreporting.v1beta1.HttpRequestContext.url', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='user_agent', full_name='google.devtools.clouderrorreporting.v1beta1.HttpRequestContext.user_agent', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='referrer', full_name='google.devtools.clouderrorreporting.v1beta1.HttpRequestContext.referrer', index=3, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='response_status_code', full_name='google.devtools.clouderrorreporting.v1beta1.HttpRequestContext.response_status_code', index=4, + number=5, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='remote_ip', full_name='google.devtools.clouderrorreporting.v1beta1.HttpRequestContext.remote_ip', index=5, + number=6, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=895, + serialized_end=1031, +) + + +_SOURCELOCATION = _descriptor.Descriptor( + name='SourceLocation', + full_name='google.devtools.clouderrorreporting.v1beta1.SourceLocation', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='file_path', full_name='google.devtools.clouderrorreporting.v1beta1.SourceLocation.file_path', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='line_number', full_name='google.devtools.clouderrorreporting.v1beta1.SourceLocation.line_number', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='function_name', full_name='google.devtools.clouderrorreporting.v1beta1.SourceLocation.function_name', index=2, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1033, + serialized_end=1112, +) + +_ERRORGROUP.fields_by_name['tracking_issues'].message_type = _TRACKINGISSUE +_ERROREVENT.fields_by_name['event_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_ERROREVENT.fields_by_name['service_context'].message_type = _SERVICECONTEXT +_ERROREVENT.fields_by_name['context'].message_type = _ERRORCONTEXT +_ERRORCONTEXT.fields_by_name['http_request'].message_type = _HTTPREQUESTCONTEXT +_ERRORCONTEXT.fields_by_name['report_location'].message_type = _SOURCELOCATION +DESCRIPTOR.message_types_by_name['ErrorGroup'] = _ERRORGROUP +DESCRIPTOR.message_types_by_name['TrackingIssue'] = _TRACKINGISSUE +DESCRIPTOR.message_types_by_name['ErrorEvent'] = _ERROREVENT +DESCRIPTOR.message_types_by_name['ServiceContext'] = _SERVICECONTEXT +DESCRIPTOR.message_types_by_name['ErrorContext'] = _ERRORCONTEXT +DESCRIPTOR.message_types_by_name['HttpRequestContext'] = _HTTPREQUESTCONTEXT +DESCRIPTOR.message_types_by_name['SourceLocation'] = _SOURCELOCATION + +ErrorGroup = _reflection.GeneratedProtocolMessageType('ErrorGroup', (_message.Message,), dict( + DESCRIPTOR = _ERRORGROUP, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.common_pb2' + , + __doc__ = """Description of a group of similar error events. + + + Attributes: + name: + The group resource name. Example: projects/my- + project-123/groups/my-groupid + group_id: + Group IDs are unique for a given project. If the same kind of + error occurs in different service contexts, it will receive + the same group ID. + tracking_issues: + Associated tracking issues. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ErrorGroup) + )) +_sym_db.RegisterMessage(ErrorGroup) + +TrackingIssue = _reflection.GeneratedProtocolMessageType('TrackingIssue', (_message.Message,), dict( + DESCRIPTOR = _TRACKINGISSUE, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.common_pb2' + , + __doc__ = """Information related to tracking the progress on resolving the error. + + + Attributes: + url: + A URL pointing to a related entry in an issue tracking system. + Example: https://github.com/user/project/issues/4 + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.TrackingIssue) + )) +_sym_db.RegisterMessage(TrackingIssue) + +ErrorEvent = _reflection.GeneratedProtocolMessageType('ErrorEvent', (_message.Message,), dict( + DESCRIPTOR = _ERROREVENT, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.common_pb2' + , + __doc__ = """An error event which is returned by the Error Reporting system. + + + Attributes: + event_time: + Time when the event occurred as provided in the error report. + If the report did not contain a timestamp, the time the error + was received by the Error Reporting system is used. + service_context: + The ``ServiceContext`` for which this error was reported. + message: + The stack trace that was reported or logged by the service. + context: + Data about the context in which the error occurred. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ErrorEvent) + )) +_sym_db.RegisterMessage(ErrorEvent) + +ServiceContext = _reflection.GeneratedProtocolMessageType('ServiceContext', (_message.Message,), dict( + DESCRIPTOR = _SERVICECONTEXT, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.common_pb2' + , + __doc__ = """Describes a running service that sends errors. Its version changes over + time and multiple versions can run in parallel. + + + Attributes: + service: + An identifier of the service, such as the name of the + executable, job, or Google App Engine service name. This field + is expected to have a low number of values that are relatively + stable over time, as opposed to ``version``, which can be + changed whenever new code is deployed. Contains the service + name for error reports extracted from Google App Engine logs + or ``default`` if the App Engine default service is used. + version: + Represents the source code version that the developer + provided, which could represent a version label or a Git SHA-1 + hash, for example. + resource_type: + Type of the MonitoredResource. List of possible values: + https://cloud.google.com/monitoring/api/resources Value is + set automatically for incoming errors and must not be set when + reporting errors. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ServiceContext) + )) +_sym_db.RegisterMessage(ServiceContext) + +ErrorContext = _reflection.GeneratedProtocolMessageType('ErrorContext', (_message.Message,), dict( + DESCRIPTOR = _ERRORCONTEXT, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.common_pb2' + , + __doc__ = """A description of the context in which an error occurred. This data + should be provided by the application when reporting an error, unless + the error report has been generated automatically from Google App Engine + logs. + + + Attributes: + http_request: + The HTTP request which was processed when the error was + triggered. + user: + The user who caused or was affected by the crash. This can be + a user ID, an email address, or an arbitrary token that + uniquely identifies the user. When sending an error report, + leave this field empty if the user was not logged in. In this + case the Error Reporting system will use other data, such as + remote IP address, to distinguish affected users. See + ``affected_users_count`` in ``ErrorGroupStats``. + report_location: + The location in the source code where the decision was made to + report the error, usually the place where it was logged. For a + logged exception this would be the source line where the + exception is logged, usually close to the place where it was + caught. This value is in contrast to + ``Exception.cause_location``, which describes the source line + where the exception was thrown. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ErrorContext) + )) +_sym_db.RegisterMessage(ErrorContext) + +HttpRequestContext = _reflection.GeneratedProtocolMessageType('HttpRequestContext', (_message.Message,), dict( + DESCRIPTOR = _HTTPREQUESTCONTEXT, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.common_pb2' + , + __doc__ = """HTTP request data that is related to a reported error. This data should + be provided by the application when reporting an error, unless the error + report has been generated automatically from Google App Engine logs. + + + Attributes: + method: + The type of HTTP request, such as ``GET``, ``POST``, etc. + url: + The URL of the request. + user_agent: + The user agent information that is provided with the request. + referrer: + The referrer information that is provided with the request. + response_status_code: + The HTTP response status code for the request. + remote_ip: + The IP address from which the request originated. This can be + IPv4, IPv6, or a token which is derived from the IP address, + depending on the data that has been provided in the error + report. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.HttpRequestContext) + )) +_sym_db.RegisterMessage(HttpRequestContext) + +SourceLocation = _reflection.GeneratedProtocolMessageType('SourceLocation', (_message.Message,), dict( + DESCRIPTOR = _SOURCELOCATION, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.common_pb2' + , + __doc__ = """Indicates a location in the source code of the service for which errors + are reported. This data should be provided by the application when + reporting an error, unless the error report has been generated + automatically from Google App Engine logs. All fields are optional. + + + Attributes: + file_path: + The source code filename, which can include a truncated + relative path, or a full path from a production machine. + line_number: + 1-based. 0 indicates that the line number is unknown. + function_name: + Human-readable name of a function or method. The value can + include optional context like the class or package name. For + example, ``my.package.MyClass.method`` in case of Java. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.SourceLocation) + )) +_sym_db.RegisterMessage(SourceLocation) + + +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n/com.google.devtools.clouderrorreporting.v1beta1B\013CommonProtoP\001Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\252\002#Google.Cloud.ErrorReporting.V1Beta1\312\002#Google\\Cloud\\ErrorReporting\\V1beta1')) +try: + # THESE ELEMENTS WILL BE DEPRECATED. + # Please use the generated *_pb2_grpc.py files instead. + import grpc + from grpc.beta import implementations as beta_implementations + from grpc.beta import interfaces as beta_interfaces + from grpc.framework.common import cardinality + from grpc.framework.interfaces.face import utilities as face_utilities +except ImportError: + pass +# @@protoc_insertion_point(module_scope) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2_grpc.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2_grpc.py new file mode 100644 index 000000000000..a89435267cb2 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/common_pb2_grpc.py @@ -0,0 +1,3 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py new file mode 100644 index 000000000000..652fccda5436 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py @@ -0,0 +1,288 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/devtools/clouderrorreporting_v1beta1/proto/error_group_service.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.devtools.clouderrorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='google/devtools/clouderrorreporting_v1beta1/proto/error_group_service.proto', + package='google.devtools.clouderrorreporting.v1beta1', + syntax='proto3', + serialized_pb=_b('\nKgoogle/devtools/clouderrorreporting_v1beta1/proto/error_group_service.proto\x12+google.devtools.clouderrorreporting.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a>google/devtools/clouderrorreporting_v1beta1/proto/common.proto\"%\n\x0fGetGroupRequest\x12\x12\n\ngroup_name\x18\x01 \x01(\t\"\\\n\x12UpdateGroupRequest\x12\x46\n\x05group\x18\x01 \x01(\x0b\x32\x37.google.devtools.clouderrorreporting.v1beta1.ErrorGroup2\x8e\x03\n\x11\x45rrorGroupService\x12\xb4\x01\n\x08GetGroup\x12<.google.devtools.clouderrorreporting.v1beta1.GetGroupRequest\x1a\x37.google.devtools.clouderrorreporting.v1beta1.ErrorGroup\"1\x82\xd3\xe4\x93\x02+\x12)/v1beta1/{group_name=projects/*/groups/*}\x12\xc1\x01\n\x0bUpdateGroup\x12?.google.devtools.clouderrorreporting.v1beta1.UpdateGroupRequest\x1a\x37.google.devtools.clouderrorreporting.v1beta1.ErrorGroup\"8\x82\xd3\xe4\x93\x02\x32\x1a)/v1beta1/{group.name=projects/*/groups/*}:\x05groupB\xf7\x01\n/com.google.devtools.clouderrorreporting.v1beta1B\x16\x45rrorGroupServiceProtoP\x01Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\xaa\x02#Google.Cloud.ErrorReporting.V1Beta1\xca\x02#Google\\Cloud\\ErrorReporting\\V1beta1b\x06proto3') + , + dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_GETGROUPREQUEST = _descriptor.Descriptor( + name='GetGroupRequest', + full_name='google.devtools.clouderrorreporting.v1beta1.GetGroupRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='group_name', full_name='google.devtools.clouderrorreporting.v1beta1.GetGroupRequest.group_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=218, + serialized_end=255, +) + + +_UPDATEGROUPREQUEST = _descriptor.Descriptor( + name='UpdateGroupRequest', + full_name='google.devtools.clouderrorreporting.v1beta1.UpdateGroupRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='group', full_name='google.devtools.clouderrorreporting.v1beta1.UpdateGroupRequest.group', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=257, + serialized_end=349, +) + +_UPDATEGROUPREQUEST.fields_by_name['group'].message_type = google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2._ERRORGROUP +DESCRIPTOR.message_types_by_name['GetGroupRequest'] = _GETGROUPREQUEST +DESCRIPTOR.message_types_by_name['UpdateGroupRequest'] = _UPDATEGROUPREQUEST + +GetGroupRequest = _reflection.GeneratedProtocolMessageType('GetGroupRequest', (_message.Message,), dict( + DESCRIPTOR = _GETGROUPREQUEST, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_group_service_pb2' + , + __doc__ = """A request to return an individual group. + + + Attributes: + group_name: + [Required] The group resource name. Written as + projects/projectID/groups/group\_name. Call groupStats.list to + return a list of groups belonging to this project. Example: + projects/my-project-123/groups/my-group + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.GetGroupRequest) + )) +_sym_db.RegisterMessage(GetGroupRequest) + +UpdateGroupRequest = _reflection.GeneratedProtocolMessageType('UpdateGroupRequest', (_message.Message,), dict( + DESCRIPTOR = _UPDATEGROUPREQUEST, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_group_service_pb2' + , + __doc__ = """A request to replace the existing data for the given group. + + + Attributes: + group: + [Required] The group which replaces the resource on the + server. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.UpdateGroupRequest) + )) +_sym_db.RegisterMessage(UpdateGroupRequest) + + +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n/com.google.devtools.clouderrorreporting.v1beta1B\026ErrorGroupServiceProtoP\001Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\252\002#Google.Cloud.ErrorReporting.V1Beta1\312\002#Google\\Cloud\\ErrorReporting\\V1beta1')) +try: + # THESE ELEMENTS WILL BE DEPRECATED. + # Please use the generated *_pb2_grpc.py files instead. + import grpc + from grpc.beta import implementations as beta_implementations + from grpc.beta import interfaces as beta_interfaces + from grpc.framework.common import cardinality + from grpc.framework.interfaces.face import utilities as face_utilities + + + class ErrorGroupServiceStub(object): + """Service for retrieving and updating individual error groups. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetGroup = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/GetGroup', + request_serializer=GetGroupRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.FromString, + ) + self.UpdateGroup = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/UpdateGroup', + request_serializer=UpdateGroupRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.FromString, + ) + + + class ErrorGroupServiceServicer(object): + """Service for retrieving and updating individual error groups. + """ + + def GetGroup(self, request, context): + """Get the specified group. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateGroup(self, request, context): + """Replace the data for the specified group. + Fails if the group does not exist. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + + def add_ErrorGroupServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetGroup': grpc.unary_unary_rpc_method_handler( + servicer.GetGroup, + request_deserializer=GetGroupRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.SerializeToString, + ), + 'UpdateGroup': grpc.unary_unary_rpc_method_handler( + servicer.UpdateGroup, + request_deserializer=UpdateGroupRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + class BetaErrorGroupServiceServicer(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + """Service for retrieving and updating individual error groups. + """ + def GetGroup(self, request, context): + """Get the specified group. + """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def UpdateGroup(self, request, context): + """Replace the data for the specified group. + Fails if the group does not exist. + """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + + + class BetaErrorGroupServiceStub(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + """Service for retrieving and updating individual error groups. + """ + def GetGroup(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """Get the specified group. + """ + raise NotImplementedError() + GetGroup.future = None + def UpdateGroup(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """Replace the data for the specified group. + Fails if the group does not exist. + """ + raise NotImplementedError() + UpdateGroup.future = None + + + def beta_create_ErrorGroupService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_deserializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'GetGroup'): GetGroupRequest.FromString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'UpdateGroup'): UpdateGroupRequest.FromString, + } + response_serializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'GetGroup'): google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.SerializeToString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'UpdateGroup'): google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.SerializeToString, + } + method_implementations = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'GetGroup'): face_utilities.unary_unary_inline(servicer.GetGroup), + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'UpdateGroup'): face_utilities.unary_unary_inline(servicer.UpdateGroup), + } + server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout) + return beta_implementations.server(method_implementations, options=server_options) + + + def beta_create_ErrorGroupService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_serializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'GetGroup'): GetGroupRequest.SerializeToString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'UpdateGroup'): UpdateGroupRequest.SerializeToString, + } + response_deserializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'GetGroup'): google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.FromString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', 'UpdateGroup'): google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.FromString, + } + cardinalities = { + 'GetGroup': cardinality.Cardinality.UNARY_UNARY, + 'UpdateGroup': cardinality.Cardinality.UNARY_UNARY, + } + stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size) + return beta_implementations.dynamic_stub(channel, 'google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', cardinalities, options=stub_options) +except ImportError: + pass +# @@protoc_insertion_point(module_scope) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py new file mode 100644 index 000000000000..9a444b2ba024 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py @@ -0,0 +1,65 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import google.devtools.clouderrorreporting_v1beta1.proto.common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 +import google.devtools.clouderrorreporting_v1beta1.proto.error_group_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__group__service__pb2 + + +class ErrorGroupServiceStub(object): + """Service for retrieving and updating individual error groups. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.GetGroup = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/GetGroup', + request_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__group__service__pb2.GetGroupRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.FromString, + ) + self.UpdateGroup = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorGroupService/UpdateGroup', + request_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__group__service__pb2.UpdateGroupRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.FromString, + ) + + +class ErrorGroupServiceServicer(object): + """Service for retrieving and updating individual error groups. + """ + + def GetGroup(self, request, context): + """Get the specified group. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def UpdateGroup(self, request, context): + """Replace the data for the specified group. + Fails if the group does not exist. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ErrorGroupServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'GetGroup': grpc.unary_unary_rpc_method_handler( + servicer.GetGroup, + request_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__group__service__pb2.GetGroupRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.SerializeToString, + ), + 'UpdateGroup': grpc.unary_unary_rpc_method_handler( + servicer.UpdateGroup, + request_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__group__service__pb2.UpdateGroupRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.ErrorGroup.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'google.devtools.clouderrorreporting.v1beta1.ErrorGroupService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py new file mode 100644 index 000000000000..9838a3dc793f --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py @@ -0,0 +1,1165 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/devtools/clouderrorreporting_v1beta1/proto/error_stats_service.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.devtools.clouderrorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='google/devtools/clouderrorreporting_v1beta1/proto/error_stats_service.proto', + package='google.devtools.clouderrorreporting.v1beta1', + syntax='proto3', + serialized_pb=_b('\nKgoogle/devtools/clouderrorreporting_v1beta1/proto/error_stats_service.proto\x12+google.devtools.clouderrorreporting.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a>google/devtools/clouderrorreporting_v1beta1/proto/common.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xa1\x04\n\x15ListGroupStatsRequest\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x03(\t\x12Y\n\x0eservice_filter\x18\x03 \x01(\x0b\x32\x41.google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter\x12O\n\ntime_range\x18\x05 \x01(\x0b\x32;.google.devtools.clouderrorreporting.v1beta1.QueryTimeRange\x12\x37\n\x14timed_count_duration\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12S\n\talignment\x18\x07 \x01(\x0e\x32@.google.devtools.clouderrorreporting.v1beta1.TimedCountAlignment\x12\x32\n\x0e\x61lignment_time\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12K\n\x05order\x18\t \x01(\x0e\x32<.google.devtools.clouderrorreporting.v1beta1.ErrorGroupOrder\x12\x11\n\tpage_size\x18\x0b \x01(\x05\x12\x12\n\npage_token\x18\x0c \x01(\t\"\xc0\x01\n\x16ListGroupStatsResponse\x12W\n\x11\x65rror_group_stats\x18\x01 \x03(\x0b\x32<.google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x34\n\x10time_range_begin\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x86\x04\n\x0f\x45rrorGroupStats\x12\x46\n\x05group\x18\x01 \x01(\x0b\x32\x37.google.devtools.clouderrorreporting.v1beta1.ErrorGroup\x12\r\n\x05\x63ount\x18\x02 \x01(\x03\x12\x1c\n\x14\x61\x66\x66\x65\x63ted_users_count\x18\x03 \x01(\x03\x12M\n\x0ctimed_counts\x18\x04 \x03(\x0b\x32\x37.google.devtools.clouderrorreporting.v1beta1.TimedCount\x12\x33\n\x0f\x66irst_seen_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\x0elast_seen_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12V\n\x11\x61\x66\x66\x65\x63ted_services\x18\x07 \x03(\x0b\x32;.google.devtools.clouderrorreporting.v1beta1.ServiceContext\x12\x1d\n\x15num_affected_services\x18\x08 \x01(\x05\x12O\n\x0erepresentative\x18\t \x01(\x0b\x32\x37.google.devtools.clouderrorreporting.v1beta1.ErrorEvent\"y\n\nTimedCount\x12\r\n\x05\x63ount\x18\x01 \x01(\x03\x12.\n\nstart_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\x08\x65nd_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x8e\x02\n\x11ListEventsRequest\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12\x10\n\x08group_id\x18\x02 \x01(\t\x12Y\n\x0eservice_filter\x18\x03 \x01(\x0b\x32\x41.google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter\x12O\n\ntime_range\x18\x04 \x01(\x0b\x32;.google.devtools.clouderrorreporting.v1beta1.QueryTimeRange\x12\x11\n\tpage_size\x18\x06 \x01(\x05\x12\x12\n\npage_token\x18\x07 \x01(\t\"\xb2\x01\n\x12ListEventsResponse\x12M\n\x0c\x65rror_events\x18\x01 \x03(\x0b\x32\x37.google.devtools.clouderrorreporting.v1beta1.ErrorEvent\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\x12\x34\n\x10time_range_begin\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\xe7\x01\n\x0eQueryTimeRange\x12R\n\x06period\x18\x01 \x01(\x0e\x32\x42.google.devtools.clouderrorreporting.v1beta1.QueryTimeRange.Period\"\x80\x01\n\x06Period\x12\x16\n\x12PERIOD_UNSPECIFIED\x10\x00\x12\x11\n\rPERIOD_1_HOUR\x10\x01\x12\x12\n\x0ePERIOD_6_HOURS\x10\x02\x12\x10\n\x0cPERIOD_1_DAY\x10\x03\x12\x11\n\rPERIOD_1_WEEK\x10\x04\x12\x12\n\x0ePERIOD_30_DAYS\x10\x05\"O\n\x14ServiceContextFilter\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x15\n\rresource_type\x18\x04 \x01(\t\"+\n\x13\x44\x65leteEventsRequest\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\"\x16\n\x14\x44\x65leteEventsResponse*u\n\x13TimedCountAlignment\x12%\n!ERROR_COUNT_ALIGNMENT_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x41LIGNMENT_EQUAL_ROUNDED\x10\x01\x12\x1a\n\x16\x41LIGNMENT_EQUAL_AT_END\x10\x02*}\n\x0f\x45rrorGroupOrder\x12\x1b\n\x17GROUP_ORDER_UNSPECIFIED\x10\x00\x12\x0e\n\nCOUNT_DESC\x10\x01\x12\x12\n\x0eLAST_SEEN_DESC\x10\x02\x12\x10\n\x0c\x43REATED_DESC\x10\x03\x12\x17\n\x13\x41\x46\x46\x45\x43TED_USERS_DESC\x10\x04\x32\xf2\x04\n\x11\x45rrorStatsService\x12\xd0\x01\n\x0eListGroupStats\x12\x42.google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest\x1a\x43.google.devtools.clouderrorreporting.v1beta1.ListGroupStatsResponse\"5\x82\xd3\xe4\x93\x02/\x12-/v1beta1/{project_name=projects/*}/groupStats\x12\xc0\x01\n\nListEvents\x12>.google.devtools.clouderrorreporting.v1beta1.ListEventsRequest\x1a?.google.devtools.clouderrorreporting.v1beta1.ListEventsResponse\"1\x82\xd3\xe4\x93\x02+\x12)/v1beta1/{project_name=projects/*}/events\x12\xc6\x01\n\x0c\x44\x65leteEvents\x12@.google.devtools.clouderrorreporting.v1beta1.DeleteEventsRequest\x1a\x41.google.devtools.clouderrorreporting.v1beta1.DeleteEventsResponse\"1\x82\xd3\xe4\x93\x02+*)/v1beta1/{project_name=projects/*}/eventsB\xf7\x01\n/com.google.devtools.clouderrorreporting.v1beta1B\x16\x45rrorStatsServiceProtoP\x01Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\xaa\x02#Google.Cloud.ErrorReporting.V1Beta1\xca\x02#Google\\Cloud\\ErrorReporting\\V1beta1b\x06proto3') + , + dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.DESCRIPTOR,google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +_TIMEDCOUNTALIGNMENT = _descriptor.EnumDescriptor( + name='TimedCountAlignment', + full_name='google.devtools.clouderrorreporting.v1beta1.TimedCountAlignment', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='ERROR_COUNT_ALIGNMENT_UNSPECIFIED', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ALIGNMENT_EQUAL_ROUNDED', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='ALIGNMENT_EQUAL_AT_END', index=2, number=2, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2508, + serialized_end=2625, +) +_sym_db.RegisterEnumDescriptor(_TIMEDCOUNTALIGNMENT) + +TimedCountAlignment = enum_type_wrapper.EnumTypeWrapper(_TIMEDCOUNTALIGNMENT) +_ERRORGROUPORDER = _descriptor.EnumDescriptor( + name='ErrorGroupOrder', + full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupOrder', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='GROUP_ORDER_UNSPECIFIED', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='COUNT_DESC', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='LAST_SEEN_DESC', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='CREATED_DESC', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='AFFECTED_USERS_DESC', index=4, number=4, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2627, + serialized_end=2752, +) +_sym_db.RegisterEnumDescriptor(_ERRORGROUPORDER) + +ErrorGroupOrder = enum_type_wrapper.EnumTypeWrapper(_ERRORGROUPORDER) +ERROR_COUNT_ALIGNMENT_UNSPECIFIED = 0 +ALIGNMENT_EQUAL_ROUNDED = 1 +ALIGNMENT_EQUAL_AT_END = 2 +GROUP_ORDER_UNSPECIFIED = 0 +COUNT_DESC = 1 +LAST_SEEN_DESC = 2 +CREATED_DESC = 3 +AFFECTED_USERS_DESC = 4 + + +_QUERYTIMERANGE_PERIOD = _descriptor.EnumDescriptor( + name='Period', + full_name='google.devtools.clouderrorreporting.v1beta1.QueryTimeRange.Period', + filename=None, + file=DESCRIPTOR, + values=[ + _descriptor.EnumValueDescriptor( + name='PERIOD_UNSPECIFIED', index=0, number=0, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PERIOD_1_HOUR', index=1, number=1, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PERIOD_6_HOURS', index=2, number=2, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PERIOD_1_DAY', index=3, number=3, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PERIOD_1_WEEK', index=4, number=4, + options=None, + type=None), + _descriptor.EnumValueDescriptor( + name='PERIOD_30_DAYS', index=5, number=5, + options=None, + type=None), + ], + containing_type=None, + options=None, + serialized_start=2228, + serialized_end=2356, +) +_sym_db.RegisterEnumDescriptor(_QUERYTIMERANGE_PERIOD) + + +_LISTGROUPSTATSREQUEST = _descriptor.Descriptor( + name='ListGroupStatsRequest', + full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='project_name', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.project_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group_id', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.group_id', index=1, + number=2, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='service_filter', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.service_filter', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='time_range', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.time_range', index=3, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='timed_count_duration', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.timed_count_duration', index=4, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='alignment', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.alignment', index=5, + number=7, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='alignment_time', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.alignment_time', index=6, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='order', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.order', index=7, + number=9, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='page_size', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.page_size', index=8, + number=11, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='page_token', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest.page_token', index=9, + number=12, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=284, + serialized_end=829, +) + + +_LISTGROUPSTATSRESPONSE = _descriptor.Descriptor( + name='ListGroupStatsResponse', + full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='error_group_stats', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsResponse.error_group_stats', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='next_page_token', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsResponse.next_page_token', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='time_range_begin', full_name='google.devtools.clouderrorreporting.v1beta1.ListGroupStatsResponse.time_range_begin', index=2, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=832, + serialized_end=1024, +) + + +_ERRORGROUPSTATS = _descriptor.Descriptor( + name='ErrorGroupStats', + full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='group', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.group', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='count', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.count', index=1, + number=2, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='affected_users_count', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.affected_users_count', index=2, + number=3, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='timed_counts', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.timed_counts', index=3, + number=4, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='first_seen_time', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.first_seen_time', index=4, + number=5, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='last_seen_time', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.last_seen_time', index=5, + number=6, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='affected_services', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.affected_services', index=6, + number=7, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='num_affected_services', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.num_affected_services', index=7, + number=8, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='representative', full_name='google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats.representative', index=8, + number=9, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1027, + serialized_end=1545, +) + + +_TIMEDCOUNT = _descriptor.Descriptor( + name='TimedCount', + full_name='google.devtools.clouderrorreporting.v1beta1.TimedCount', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='count', full_name='google.devtools.clouderrorreporting.v1beta1.TimedCount.count', index=0, + number=1, type=3, cpp_type=2, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='start_time', full_name='google.devtools.clouderrorreporting.v1beta1.TimedCount.start_time', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='end_time', full_name='google.devtools.clouderrorreporting.v1beta1.TimedCount.end_time', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1547, + serialized_end=1668, +) + + +_LISTEVENTSREQUEST = _descriptor.Descriptor( + name='ListEventsRequest', + full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='project_name', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsRequest.project_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='group_id', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsRequest.group_id', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='service_filter', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsRequest.service_filter', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='time_range', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsRequest.time_range', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='page_size', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsRequest.page_size', index=4, + number=6, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='page_token', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsRequest.page_token', index=5, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1671, + serialized_end=1941, +) + + +_LISTEVENTSRESPONSE = _descriptor.Descriptor( + name='ListEventsResponse', + full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='error_events', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsResponse.error_events', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='next_page_token', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsResponse.next_page_token', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='time_range_begin', full_name='google.devtools.clouderrorreporting.v1beta1.ListEventsResponse.time_range_begin', index=2, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1944, + serialized_end=2122, +) + + +_QUERYTIMERANGE = _descriptor.Descriptor( + name='QueryTimeRange', + full_name='google.devtools.clouderrorreporting.v1beta1.QueryTimeRange', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='period', full_name='google.devtools.clouderrorreporting.v1beta1.QueryTimeRange.period', index=0, + number=1, type=14, cpp_type=8, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + _QUERYTIMERANGE_PERIOD, + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2125, + serialized_end=2356, +) + + +_SERVICECONTEXTFILTER = _descriptor.Descriptor( + name='ServiceContextFilter', + full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='service', full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter.service', index=0, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='version', full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter.version', index=1, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='resource_type', full_name='google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter.resource_type', index=2, + number=4, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2358, + serialized_end=2437, +) + + +_DELETEEVENTSREQUEST = _descriptor.Descriptor( + name='DeleteEventsRequest', + full_name='google.devtools.clouderrorreporting.v1beta1.DeleteEventsRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='project_name', full_name='google.devtools.clouderrorreporting.v1beta1.DeleteEventsRequest.project_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2439, + serialized_end=2482, +) + + +_DELETEEVENTSRESPONSE = _descriptor.Descriptor( + name='DeleteEventsResponse', + full_name='google.devtools.clouderrorreporting.v1beta1.DeleteEventsResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=2484, + serialized_end=2506, +) + +_LISTGROUPSTATSREQUEST.fields_by_name['service_filter'].message_type = _SERVICECONTEXTFILTER +_LISTGROUPSTATSREQUEST.fields_by_name['time_range'].message_type = _QUERYTIMERANGE +_LISTGROUPSTATSREQUEST.fields_by_name['timed_count_duration'].message_type = google_dot_protobuf_dot_duration__pb2._DURATION +_LISTGROUPSTATSREQUEST.fields_by_name['alignment'].enum_type = _TIMEDCOUNTALIGNMENT +_LISTGROUPSTATSREQUEST.fields_by_name['alignment_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_LISTGROUPSTATSREQUEST.fields_by_name['order'].enum_type = _ERRORGROUPORDER +_LISTGROUPSTATSRESPONSE.fields_by_name['error_group_stats'].message_type = _ERRORGROUPSTATS +_LISTGROUPSTATSRESPONSE.fields_by_name['time_range_begin'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_ERRORGROUPSTATS.fields_by_name['group'].message_type = google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2._ERRORGROUP +_ERRORGROUPSTATS.fields_by_name['timed_counts'].message_type = _TIMEDCOUNT +_ERRORGROUPSTATS.fields_by_name['first_seen_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_ERRORGROUPSTATS.fields_by_name['last_seen_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_ERRORGROUPSTATS.fields_by_name['affected_services'].message_type = google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2._SERVICECONTEXT +_ERRORGROUPSTATS.fields_by_name['representative'].message_type = google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2._ERROREVENT +_TIMEDCOUNT.fields_by_name['start_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_TIMEDCOUNT.fields_by_name['end_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_LISTEVENTSREQUEST.fields_by_name['service_filter'].message_type = _SERVICECONTEXTFILTER +_LISTEVENTSREQUEST.fields_by_name['time_range'].message_type = _QUERYTIMERANGE +_LISTEVENTSRESPONSE.fields_by_name['error_events'].message_type = google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2._ERROREVENT +_LISTEVENTSRESPONSE.fields_by_name['time_range_begin'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_QUERYTIMERANGE.fields_by_name['period'].enum_type = _QUERYTIMERANGE_PERIOD +_QUERYTIMERANGE_PERIOD.containing_type = _QUERYTIMERANGE +DESCRIPTOR.message_types_by_name['ListGroupStatsRequest'] = _LISTGROUPSTATSREQUEST +DESCRIPTOR.message_types_by_name['ListGroupStatsResponse'] = _LISTGROUPSTATSRESPONSE +DESCRIPTOR.message_types_by_name['ErrorGroupStats'] = _ERRORGROUPSTATS +DESCRIPTOR.message_types_by_name['TimedCount'] = _TIMEDCOUNT +DESCRIPTOR.message_types_by_name['ListEventsRequest'] = _LISTEVENTSREQUEST +DESCRIPTOR.message_types_by_name['ListEventsResponse'] = _LISTEVENTSRESPONSE +DESCRIPTOR.message_types_by_name['QueryTimeRange'] = _QUERYTIMERANGE +DESCRIPTOR.message_types_by_name['ServiceContextFilter'] = _SERVICECONTEXTFILTER +DESCRIPTOR.message_types_by_name['DeleteEventsRequest'] = _DELETEEVENTSREQUEST +DESCRIPTOR.message_types_by_name['DeleteEventsResponse'] = _DELETEEVENTSRESPONSE +DESCRIPTOR.enum_types_by_name['TimedCountAlignment'] = _TIMEDCOUNTALIGNMENT +DESCRIPTOR.enum_types_by_name['ErrorGroupOrder'] = _ERRORGROUPORDER + +ListGroupStatsRequest = _reflection.GeneratedProtocolMessageType('ListGroupStatsRequest', (_message.Message,), dict( + DESCRIPTOR = _LISTGROUPSTATSREQUEST, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Specifies a set of ``ErrorGroupStats`` to return. + + + Attributes: + project_name: + [Required] The resource name of the Google Cloud Platform + project. Written as projects/ plus the Google Cloud Platform + project ID. Example: projects/my-project-123. + group_id: + [Optional] List all ErrorGroupStats with these IDs. + service_filter: + [Optional] List only ErrorGroupStats which belong to a service + context that matches the filter. Data for all service contexts + is returned if this field is not specified. + time_range: + [Optional] List data for the given time range. If not set a + default time range is used. The field time\_range\_begin in + the response will specify the beginning of this time range. + Only ErrorGroupStats with a non-zero count in the given time + range are returned, unless the request contains an explicit + group\_id list. If a group\_id list is given, also + ErrorGroupStats with zero occurrences are returned. + timed_count_duration: + [Optional] The preferred duration for a single returned + ``TimedCount``. If not set, no timed counts are returned. + alignment: + [Optional] The alignment of the timed counts to be returned. + Default is ``ALIGNMENT_EQUAL_AT_END``. + alignment_time: + [Optional] Time where the timed counts shall be aligned if + rounded alignment is chosen. Default is 00:00 UTC. + order: + [Optional] The sort order in which the results are returned. + Default is ``COUNT_DESC``. + page_size: + [Optional] The maximum number of results to return per + response. Default is 20. + page_token: + [Optional] A ``next_page_token`` provided by a previous + response. To view additional results, pass this token along + with the identical query parameters as the first request. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ListGroupStatsRequest) + )) +_sym_db.RegisterMessage(ListGroupStatsRequest) + +ListGroupStatsResponse = _reflection.GeneratedProtocolMessageType('ListGroupStatsResponse', (_message.Message,), dict( + DESCRIPTOR = _LISTGROUPSTATSRESPONSE, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Contains a set of requested error group stats. + + + Attributes: + error_group_stats: + The error group stats which match the given request. + next_page_token: + If non-empty, more results are available. Pass this token, + along with the same query parameters as the first request, to + view the next page of results. + time_range_begin: + The timestamp specifies the start time to which the request + was restricted. The start time is set based on the requested + time range. It may be adjusted to a later time if a project + has exceeded the storage quota and older data has been + deleted. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ListGroupStatsResponse) + )) +_sym_db.RegisterMessage(ListGroupStatsResponse) + +ErrorGroupStats = _reflection.GeneratedProtocolMessageType('ErrorGroupStats', (_message.Message,), dict( + DESCRIPTOR = _ERRORGROUPSTATS, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Data extracted for a specific group based on certain filter criteria, + such as a given time period and/or service filter. + + + Attributes: + group: + Group data that is independent of the filter criteria. + count: + Approximate total number of events in the given group that + match the filter criteria. + affected_users_count: + Approximate number of affected users in the given group that + match the filter criteria. Users are distinguished by data in + the ``ErrorContext`` of the individual error events, such as + their login name or their remote IP address in case of HTTP + requests. The number of affected users can be zero even if the + number of errors is non-zero if no data was provided from + which the affected user could be deduced. Users are counted + based on data in the request context that was provided in the + error report. If more users are implicitly affected, such as + due to a crash of the whole service, this is not reflected + here. + timed_counts: + Approximate number of occurrences over time. Timed counts + returned by ListGroups are guaranteed to be: - Inside the + requested time interval - Non-overlapping, and - Ordered by + ascending time. + first_seen_time: + Approximate first occurrence that was ever seen for this group + and which matches the given filter criteria, ignoring the + time\_range that was specified in the request. + last_seen_time: + Approximate last occurrence that was ever seen for this group + and which matches the given filter criteria, ignoring the + time\_range that was specified in the request. + affected_services: + Service contexts with a non-zero error count for the given + filter criteria. This list can be truncated if multiple + services are affected. Refer to ``num_affected_services`` for + the total count. + num_affected_services: + The total number of services with a non-zero error count for + the given filter criteria. + representative: + An arbitrary event that is chosen as representative for the + whole group. The representative event is intended to be used + as a quick preview for the whole group. Events in the group + are usually sufficiently similar to each other such that + showing an arbitrary representative provides insight into the + characteristics of the group as a whole. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ErrorGroupStats) + )) +_sym_db.RegisterMessage(ErrorGroupStats) + +TimedCount = _reflection.GeneratedProtocolMessageType('TimedCount', (_message.Message,), dict( + DESCRIPTOR = _TIMEDCOUNT, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """The number of errors in a given time period. All numbers are approximate + since the error events are sampled before counting them. + + + Attributes: + count: + Approximate number of occurrences in the given time period. + start_time: + Start of the time period to which ``count`` refers (included). + end_time: + End of the time period to which ``count`` refers (excluded). + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.TimedCount) + )) +_sym_db.RegisterMessage(TimedCount) + +ListEventsRequest = _reflection.GeneratedProtocolMessageType('ListEventsRequest', (_message.Message,), dict( + DESCRIPTOR = _LISTEVENTSREQUEST, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Specifies a set of error events to return. + + + Attributes: + project_name: + [Required] The resource name of the Google Cloud Platform + project. Written as ``projects/`` plus the `Google Cloud + Platform project ID + `__. Example: + ``projects/my-project-123``. + group_id: + [Required] The group for which events shall be returned. + service_filter: + [Optional] List only ErrorGroups which belong to a service + context that matches the filter. Data for all service contexts + is returned if this field is not specified. + time_range: + [Optional] List only data for the given time range. If not set + a default time range is used. The field time\_range\_begin in + the response will specify the beginning of this time range. + page_size: + [Optional] The maximum number of results to return per + response. + page_token: + [Optional] A ``next_page_token`` provided by a previous + response. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ListEventsRequest) + )) +_sym_db.RegisterMessage(ListEventsRequest) + +ListEventsResponse = _reflection.GeneratedProtocolMessageType('ListEventsResponse', (_message.Message,), dict( + DESCRIPTOR = _LISTEVENTSRESPONSE, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Contains a set of requested error events. + + + Attributes: + error_events: + The error events which match the given request. + next_page_token: + If non-empty, more results are available. Pass this token, + along with the same query parameters as the first request, to + view the next page of results. + time_range_begin: + The timestamp specifies the start time to which the request + was restricted. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ListEventsResponse) + )) +_sym_db.RegisterMessage(ListEventsResponse) + +QueryTimeRange = _reflection.GeneratedProtocolMessageType('QueryTimeRange', (_message.Message,), dict( + DESCRIPTOR = _QUERYTIMERANGE, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Requests might be rejected or the resulting timed count durations might + be adjusted for lower durations. + + + Attributes: + period: + Restricts the query to the specified time range. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.QueryTimeRange) + )) +_sym_db.RegisterMessage(QueryTimeRange) + +ServiceContextFilter = _reflection.GeneratedProtocolMessageType('ServiceContextFilter', (_message.Message,), dict( + DESCRIPTOR = _SERVICECONTEXTFILTER, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Specifies criteria for filtering a subset of service contexts. The + fields in the filter correspond to the fields in ``ServiceContext``. + Only exact, case-sensitive matches are supported. If a field is unset or + empty, it matches arbitrary values. + + + Attributes: + service: + [Optional] The exact value to match against + ```ServiceContext.service`` `__. + version: + [Optional] The exact value to match against + ```ServiceContext.version`` `__. + resource_type: + [Optional] The exact value to match against + ```ServiceContext.resource_type`` `__. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ServiceContextFilter) + )) +_sym_db.RegisterMessage(ServiceContextFilter) + +DeleteEventsRequest = _reflection.GeneratedProtocolMessageType('DeleteEventsRequest', (_message.Message,), dict( + DESCRIPTOR = _DELETEEVENTSREQUEST, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Deletes all events in the project. + + + Attributes: + project_name: + [Required] The resource name of the Google Cloud Platform + project. Written as ``projects/`` plus the `Google Cloud + Platform project ID + `__. Example: + ``projects/my-project-123``. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.DeleteEventsRequest) + )) +_sym_db.RegisterMessage(DeleteEventsRequest) + +DeleteEventsResponse = _reflection.GeneratedProtocolMessageType('DeleteEventsResponse', (_message.Message,), dict( + DESCRIPTOR = _DELETEEVENTSRESPONSE, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2' + , + __doc__ = """Response message for deleting error events. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.DeleteEventsResponse) + )) +_sym_db.RegisterMessage(DeleteEventsResponse) + + +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n/com.google.devtools.clouderrorreporting.v1beta1B\026ErrorStatsServiceProtoP\001Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\252\002#Google.Cloud.ErrorReporting.V1Beta1\312\002#Google\\Cloud\\ErrorReporting\\V1beta1')) +try: + # THESE ELEMENTS WILL BE DEPRECATED. + # Please use the generated *_pb2_grpc.py files instead. + import grpc + from grpc.beta import implementations as beta_implementations + from grpc.beta import interfaces as beta_interfaces + from grpc.framework.common import cardinality + from grpc.framework.interfaces.face import utilities as face_utilities + + + class ErrorStatsServiceStub(object): + """An API for retrieving and managing error statistics as well as data for + individual events. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ListGroupStats = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListGroupStats', + request_serializer=ListGroupStatsRequest.SerializeToString, + response_deserializer=ListGroupStatsResponse.FromString, + ) + self.ListEvents = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListEvents', + request_serializer=ListEventsRequest.SerializeToString, + response_deserializer=ListEventsResponse.FromString, + ) + self.DeleteEvents = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/DeleteEvents', + request_serializer=DeleteEventsRequest.SerializeToString, + response_deserializer=DeleteEventsResponse.FromString, + ) + + + class ErrorStatsServiceServicer(object): + """An API for retrieving and managing error statistics as well as data for + individual events. + """ + + def ListGroupStats(self, request, context): + """Lists the specified groups. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListEvents(self, request, context): + """Lists the specified events. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteEvents(self, request, context): + """Deletes all error events of a given project. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + + def add_ErrorStatsServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ListGroupStats': grpc.unary_unary_rpc_method_handler( + servicer.ListGroupStats, + request_deserializer=ListGroupStatsRequest.FromString, + response_serializer=ListGroupStatsResponse.SerializeToString, + ), + 'ListEvents': grpc.unary_unary_rpc_method_handler( + servicer.ListEvents, + request_deserializer=ListEventsRequest.FromString, + response_serializer=ListEventsResponse.SerializeToString, + ), + 'DeleteEvents': grpc.unary_unary_rpc_method_handler( + servicer.DeleteEvents, + request_deserializer=DeleteEventsRequest.FromString, + response_serializer=DeleteEventsResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + class BetaErrorStatsServiceServicer(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + """An API for retrieving and managing error statistics as well as data for + individual events. + """ + def ListGroupStats(self, request, context): + """Lists the specified groups. + """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def ListEvents(self, request, context): + """Lists the specified events. + """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def DeleteEvents(self, request, context): + """Deletes all error events of a given project. + """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + + + class BetaErrorStatsServiceStub(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + """An API for retrieving and managing error statistics as well as data for + individual events. + """ + def ListGroupStats(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """Lists the specified groups. + """ + raise NotImplementedError() + ListGroupStats.future = None + def ListEvents(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """Lists the specified events. + """ + raise NotImplementedError() + ListEvents.future = None + def DeleteEvents(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """Deletes all error events of a given project. + """ + raise NotImplementedError() + DeleteEvents.future = None + + + def beta_create_ErrorStatsService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_deserializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'DeleteEvents'): DeleteEventsRequest.FromString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListEvents'): ListEventsRequest.FromString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListGroupStats'): ListGroupStatsRequest.FromString, + } + response_serializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'DeleteEvents'): DeleteEventsResponse.SerializeToString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListEvents'): ListEventsResponse.SerializeToString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListGroupStats'): ListGroupStatsResponse.SerializeToString, + } + method_implementations = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'DeleteEvents'): face_utilities.unary_unary_inline(servicer.DeleteEvents), + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListEvents'): face_utilities.unary_unary_inline(servicer.ListEvents), + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListGroupStats'): face_utilities.unary_unary_inline(servicer.ListGroupStats), + } + server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout) + return beta_implementations.server(method_implementations, options=server_options) + + + def beta_create_ErrorStatsService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_serializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'DeleteEvents'): DeleteEventsRequest.SerializeToString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListEvents'): ListEventsRequest.SerializeToString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListGroupStats'): ListGroupStatsRequest.SerializeToString, + } + response_deserializers = { + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'DeleteEvents'): DeleteEventsResponse.FromString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListEvents'): ListEventsResponse.FromString, + ('google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', 'ListGroupStats'): ListGroupStatsResponse.FromString, + } + cardinalities = { + 'DeleteEvents': cardinality.Cardinality.UNARY_UNARY, + 'ListEvents': cardinality.Cardinality.UNARY_UNARY, + 'ListGroupStats': cardinality.Cardinality.UNARY_UNARY, + } + stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size) + return beta_implementations.dynamic_stub(channel, 'google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', cardinalities, options=stub_options) +except ImportError: + pass +# @@protoc_insertion_point(module_scope) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py new file mode 100644 index 000000000000..3f77eb8425f3 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py @@ -0,0 +1,82 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2 + + +class ErrorStatsServiceStub(object): + """An API for retrieving and managing error statistics as well as data for + individual events. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ListGroupStats = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListGroupStats', + request_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListGroupStatsRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListGroupStatsResponse.FromString, + ) + self.ListEvents = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/ListEvents', + request_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListEventsRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListEventsResponse.FromString, + ) + self.DeleteEvents = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ErrorStatsService/DeleteEvents', + request_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.DeleteEventsRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.DeleteEventsResponse.FromString, + ) + + +class ErrorStatsServiceServicer(object): + """An API for retrieving and managing error statistics as well as data for + individual events. + """ + + def ListGroupStats(self, request, context): + """Lists the specified groups. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def ListEvents(self, request, context): + """Lists the specified events. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def DeleteEvents(self, request, context): + """Deletes all error events of a given project. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ErrorStatsServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ListGroupStats': grpc.unary_unary_rpc_method_handler( + servicer.ListGroupStats, + request_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListGroupStatsRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListGroupStatsResponse.SerializeToString, + ), + 'ListEvents': grpc.unary_unary_rpc_method_handler( + servicer.ListEvents, + request_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListEventsRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.ListEventsResponse.SerializeToString, + ), + 'DeleteEvents': grpc.unary_unary_rpc_method_handler( + servicer.DeleteEvents, + request_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.DeleteEventsRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2.DeleteEventsResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'google.devtools.clouderrorreporting.v1beta1.ErrorStatsService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py new file mode 100644 index 000000000000..e3fae9c216a9 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py @@ -0,0 +1,358 @@ +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/devtools/clouderrorreporting_v1beta1/proto/report_errors_service.proto + +import sys +_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf import descriptor_pb2 +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.devtools.clouderrorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='google/devtools/clouderrorreporting_v1beta1/proto/report_errors_service.proto', + package='google.devtools.clouderrorreporting.v1beta1', + syntax='proto3', + serialized_pb=_b('\nMgoogle/devtools/clouderrorreporting_v1beta1/proto/report_errors_service.proto\x12+google.devtools.clouderrorreporting.v1beta1\x1a\x1cgoogle/api/annotations.proto\x1a>google/devtools/clouderrorreporting_v1beta1/proto/common.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x7f\n\x17ReportErrorEventRequest\x12\x14\n\x0cproject_name\x18\x01 \x01(\t\x12N\n\x05\x65vent\x18\x02 \x01(\x0b\x32?.google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent\"\x1a\n\x18ReportErrorEventResponse\"\xf7\x01\n\x12ReportedErrorEvent\x12.\n\nevent_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12T\n\x0fservice_context\x18\x02 \x01(\x0b\x32;.google.devtools.clouderrorreporting.v1beta1.ServiceContext\x12\x0f\n\x07message\x18\x03 \x01(\t\x12J\n\x07\x63ontext\x18\x04 \x01(\x0b\x32\x39.google.devtools.clouderrorreporting.v1beta1.ErrorContext2\xf8\x01\n\x13ReportErrorsService\x12\xe0\x01\n\x10ReportErrorEvent\x12\x44.google.devtools.clouderrorreporting.v1beta1.ReportErrorEventRequest\x1a\x45.google.devtools.clouderrorreporting.v1beta1.ReportErrorEventResponse\"?\x82\xd3\xe4\x93\x02\x39\"0/v1beta1/{project_name=projects/*}/events:report:\x05\x65ventB\xf9\x01\n/com.google.devtools.clouderrorreporting.v1beta1B\x18ReportErrorsServiceProtoP\x01Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\xaa\x02#Google.Cloud.ErrorReporting.V1Beta1\xca\x02#Google\\Cloud\\ErrorReporting\\V1beta1b\x06proto3') + , + dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + + + + +_REPORTERROREVENTREQUEST = _descriptor.Descriptor( + name='ReportErrorEventRequest', + full_name='google.devtools.clouderrorreporting.v1beta1.ReportErrorEventRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='project_name', full_name='google.devtools.clouderrorreporting.v1beta1.ReportErrorEventRequest.project_name', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='event', full_name='google.devtools.clouderrorreporting.v1beta1.ReportErrorEventRequest.event', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=253, + serialized_end=380, +) + + +_REPORTERROREVENTRESPONSE = _descriptor.Descriptor( + name='ReportErrorEventResponse', + full_name='google.devtools.clouderrorreporting.v1beta1.ReportErrorEventResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=382, + serialized_end=408, +) + + +_REPORTEDERROREVENT = _descriptor.Descriptor( + name='ReportedErrorEvent', + full_name='google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='event_time', full_name='google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent.event_time', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='service_context', full_name='google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent.service_context', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='message', full_name='google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent.message', index=2, + number=3, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + _descriptor.FieldDescriptor( + name='context', full_name='google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent.context', index=3, + number=4, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=411, + serialized_end=658, +) + +_REPORTERROREVENTREQUEST.fields_by_name['event'].message_type = _REPORTEDERROREVENT +_REPORTEDERROREVENT.fields_by_name['event_time'].message_type = google_dot_protobuf_dot_timestamp__pb2._TIMESTAMP +_REPORTEDERROREVENT.fields_by_name['service_context'].message_type = google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2._SERVICECONTEXT +_REPORTEDERROREVENT.fields_by_name['context'].message_type = google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2._ERRORCONTEXT +DESCRIPTOR.message_types_by_name['ReportErrorEventRequest'] = _REPORTERROREVENTREQUEST +DESCRIPTOR.message_types_by_name['ReportErrorEventResponse'] = _REPORTERROREVENTRESPONSE +DESCRIPTOR.message_types_by_name['ReportedErrorEvent'] = _REPORTEDERROREVENT + +ReportErrorEventRequest = _reflection.GeneratedProtocolMessageType('ReportErrorEventRequest', (_message.Message,), dict( + DESCRIPTOR = _REPORTERROREVENTREQUEST, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.report_errors_service_pb2' + , + __doc__ = """A request for reporting an individual error event. + + + Attributes: + project_name: + [Required] The resource name of the Google Cloud Platform + project. Written as ``projects/`` plus the `Google Cloud + Platform project ID + `__. Example: + ``projects/my-project-123``. + event: + [Required] The error event to be reported. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ReportErrorEventRequest) + )) +_sym_db.RegisterMessage(ReportErrorEventRequest) + +ReportErrorEventResponse = _reflection.GeneratedProtocolMessageType('ReportErrorEventResponse', (_message.Message,), dict( + DESCRIPTOR = _REPORTERROREVENTRESPONSE, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.report_errors_service_pb2' + , + __doc__ = """Response for reporting an individual error event. Data may be added to + this message in the future. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ReportErrorEventResponse) + )) +_sym_db.RegisterMessage(ReportErrorEventResponse) + +ReportedErrorEvent = _reflection.GeneratedProtocolMessageType('ReportedErrorEvent', (_message.Message,), dict( + DESCRIPTOR = _REPORTEDERROREVENT, + __module__ = 'google.devtools.clouderrorreporting_v1beta1.proto.report_errors_service_pb2' + , + __doc__ = """An error event which is reported to the Error Reporting system. + + + Attributes: + event_time: + [Optional] Time when the event occurred. If not provided, the + time when the event was received by the Error Reporting system + will be used. + service_context: + [Required] The service context in which this error has + occurred. + message: + [Required] A message describing the error. The message can + contain an exception stack in one of the supported programming + languages and formats. In that case, the message is parsed and + detailed exception information is returned when retrieving the + error event again. + context: + [Optional] A description of the context in which the error + occurred. + """, + # @@protoc_insertion_point(class_scope:google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent) + )) +_sym_db.RegisterMessage(ReportedErrorEvent) + + +DESCRIPTOR.has_options = True +DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n/com.google.devtools.clouderrorreporting.v1beta1B\030ReportErrorsServiceProtoP\001Z^google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1;clouderrorreporting\252\002#Google.Cloud.ErrorReporting.V1Beta1\312\002#Google\\Cloud\\ErrorReporting\\V1beta1')) +try: + # THESE ELEMENTS WILL BE DEPRECATED. + # Please use the generated *_pb2_grpc.py files instead. + import grpc + from grpc.beta import implementations as beta_implementations + from grpc.beta import interfaces as beta_interfaces + from grpc.framework.common import cardinality + from grpc.framework.interfaces.face import utilities as face_utilities + + + class ReportErrorsServiceStub(object): + """An API for reporting error events. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ReportErrorEvent = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ReportErrorsService/ReportErrorEvent', + request_serializer=ReportErrorEventRequest.SerializeToString, + response_deserializer=ReportErrorEventResponse.FromString, + ) + + + class ReportErrorsServiceServicer(object): + """An API for reporting error events. + """ + + def ReportErrorEvent(self, request, context): + """Report an individual error event. + + This endpoint accepts either an OAuth token, + or an + API key + for authentication. To use an API key, append it to the URL as the value of + a `key` parameter. For example: +
POST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456
+ """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + + def add_ReportErrorsServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ReportErrorEvent': grpc.unary_unary_rpc_method_handler( + servicer.ReportErrorEvent, + request_deserializer=ReportErrorEventRequest.FromString, + response_serializer=ReportErrorEventResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + class BetaReportErrorsServiceServicer(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + """An API for reporting error events. + """ + def ReportErrorEvent(self, request, context): + """Report an individual error event. + + This endpoint accepts either an OAuth token, + or an + API key + for authentication. To use an API key, append it to the URL as the value of + a `key` parameter. For example: +
POST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456
+ """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + + + class BetaReportErrorsServiceStub(object): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This class was generated + only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0.""" + """An API for reporting error events. + """ + def ReportErrorEvent(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """Report an individual error event. + + This endpoint accepts either an OAuth token, + or an + API key + for authentication. To use an API key, append it to the URL as the value of + a `key` parameter. For example: +
POST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456
+ """ + raise NotImplementedError() + ReportErrorEvent.future = None + + + def beta_create_ReportErrorsService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_deserializers = { + ('google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', 'ReportErrorEvent'): ReportErrorEventRequest.FromString, + } + response_serializers = { + ('google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', 'ReportErrorEvent'): ReportErrorEventResponse.SerializeToString, + } + method_implementations = { + ('google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', 'ReportErrorEvent'): face_utilities.unary_unary_inline(servicer.ReportErrorEvent), + } + server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout) + return beta_implementations.server(method_implementations, options=server_options) + + + def beta_create_ReportErrorsService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None): + """The Beta API is deprecated for 0.15.0 and later. + + It is recommended to use the GA API (classes and functions in this + file not marked beta) for all further purposes. This function was + generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0""" + request_serializers = { + ('google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', 'ReportErrorEvent'): ReportErrorEventRequest.SerializeToString, + } + response_deserializers = { + ('google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', 'ReportErrorEvent'): ReportErrorEventResponse.FromString, + } + cardinalities = { + 'ReportErrorEvent': cardinality.Cardinality.UNARY_UNARY, + } + stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size) + return beta_implementations.dynamic_stub(channel, 'google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', cardinalities, options=stub_options) +except ImportError: + pass +# @@protoc_insertion_point(module_scope) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py new file mode 100644 index 000000000000..f85698a8bce9 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py @@ -0,0 +1,53 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +import grpc + +import google.devtools.clouderrorreporting_v1beta1.proto.report_errors_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_report__errors__service__pb2 + + +class ReportErrorsServiceStub(object): + """An API for reporting error events. + """ + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.ReportErrorEvent = channel.unary_unary( + '/google.devtools.clouderrorreporting.v1beta1.ReportErrorsService/ReportErrorEvent', + request_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_report__errors__service__pb2.ReportErrorEventRequest.SerializeToString, + response_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_report__errors__service__pb2.ReportErrorEventResponse.FromString, + ) + + +class ReportErrorsServiceServicer(object): + """An API for reporting error events. + """ + + def ReportErrorEvent(self, request, context): + """Report an individual error event. + + This endpoint accepts either an OAuth token, + or an + API key + for authentication. To use an API key, append it to the URL as the value of + a `key` parameter. For example: +
POST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456
+ """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_ReportErrorsServiceServicer_to_server(servicer, server): + rpc_method_handlers = { + 'ReportErrorEvent': grpc.unary_unary_rpc_method_handler( + servicer.ReportErrorEvent, + request_deserializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_report__errors__service__pb2.ReportErrorEventRequest.FromString, + response_serializer=google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_report__errors__service__pb2.ReportErrorEventResponse.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'google.devtools.clouderrorreporting.v1beta1.ReportErrorsService', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/types.py b/error_reporting/google/cloud/errorreporting_v1beta1/types.py new file mode 100644 index 000000000000..978d281752d1 --- /dev/null +++ b/error_reporting/google/cloud/errorreporting_v1beta1/types.py @@ -0,0 +1,49 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +import sys + +from google.api_core.protobuf_helpers import get_messages + +from google.api import http_pb2 +from google.api import label_pb2 +from google.api import monitored_resource_pb2 +from google.cloud.errorreporting_v1beta1.proto import common_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_group_service_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_stats_service_pb2 +from google.cloud.errorreporting_v1beta1.proto import report_errors_service_pb2 +from google.protobuf import descriptor_pb2 +from google.protobuf import duration_pb2 +from google.protobuf import timestamp_pb2 + +names = [] +for module in ( + http_pb2, + label_pb2, + monitored_resource_pb2, + common_pb2, + error_group_service_pb2, + error_stats_service_pb2, + report_errors_service_pb2, + descriptor_pb2, + duration_pb2, + timestamp_pb2, +): + for name, message in get_messages(module).items(): + message.__module__ = 'google.cloud.errorreporting_v1beta1.types' + setattr(sys.modules[__name__], name, message) + names.append(name) + +__all__ = tuple(sorted(names)) diff --git a/error_reporting/tests/system/gapic/v1beta1/test_system_report_errors_service_v1beta1.py b/error_reporting/tests/system/gapic/v1beta1/test_system_report_errors_service_v1beta1.py new file mode 100644 index 000000000000..f7a0ec32895c --- /dev/null +++ b/error_reporting/tests/system/gapic/v1beta1/test_system_report_errors_service_v1beta1.py @@ -0,0 +1,46 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import time + +from google.cloud import errorreporting_v1beta1 +from google.cloud.errorreporting_v1beta1.proto import common_pb2 +from google.cloud.errorreporting_v1beta1.proto import report_errors_service_pb2 + + +class TestSystemReportErrorsService(object): + def test_report_error_event(self): + project_id = os.environ['PROJECT_ID'] + + client = errorreporting_v1beta1.ReportErrorsServiceClient() + project_name = client.project_path(project_id) + message = '[MESSAGE]' + service = '[SERVICE]' + service_context = {'service': service} + file_path = 'path/to/file.lang' + line_number = 42 + function_name = 'meaningOfLife' + report_location = { + 'file_path': file_path, + 'line_number': line_number, + 'function_name': function_name + } + context = {'report_location': report_location} + event = { + 'message': message, + 'service_context': service_context, + 'context': context + } + response = client.report_error_event(project_name, event) diff --git a/error_reporting/tests/unit/gapic/v1beta1/test_error_group_service_client_v1beta1.py b/error_reporting/tests/unit/gapic/v1beta1/test_error_group_service_client_v1beta1.py new file mode 100644 index 000000000000..d0df5fd3bd5d --- /dev/null +++ b/error_reporting/tests/unit/gapic/v1beta1/test_error_group_service_client_v1beta1.py @@ -0,0 +1,133 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Unit tests.""" + +import pytest + +from google.cloud import errorreporting_v1beta1 +from google.cloud.errorreporting_v1beta1.proto import common_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_group_service_pb2 + + +class MultiCallableStub(object): + """Stub for the grpc.UnaryUnaryMultiCallable interface.""" + + def __init__(self, method, channel_stub): + self.method = method + self.channel_stub = channel_stub + + def __call__(self, request, timeout=None, metadata=None, credentials=None): + self.channel_stub.requests.append((self.method, request)) + + response = None + if self.channel_stub.responses: + response = self.channel_stub.responses.pop() + + if isinstance(response, Exception): + raise response + + if response: + return response + + +class ChannelStub(object): + """Stub for the grpc.Channel interface.""" + + def __init__(self, responses=[]): + self.responses = responses + self.requests = [] + + def unary_unary(self, + method, + request_serializer=None, + response_deserializer=None): + return MultiCallableStub(method, self) + + +class CustomException(Exception): + pass + + +class TestErrorGroupServiceClient(object): + def test_get_group(self): + # Setup Expected Response + name = 'name3373707' + group_id = 'groupId506361563' + expected_response = {'name': name, 'group_id': group_id} + expected_response = common_pb2.ErrorGroup(**expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + client = errorreporting_v1beta1.ErrorGroupServiceClient( + channel=channel) + + # Setup Request + group_name = client.group_path('[PROJECT]', '[GROUP]') + + response = client.get_group(group_name) + assert expected_response == response + + assert len(channel.requests) == 1 + expected_request = error_group_service_pb2.GetGroupRequest( + group_name=group_name) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_get_group_exception(self): + # Mock the API response + channel = ChannelStub(responses=[CustomException()]) + client = errorreporting_v1beta1.ErrorGroupServiceClient( + channel=channel) + + # Setup request + group_name = client.group_path('[PROJECT]', '[GROUP]') + + with pytest.raises(CustomException): + client.get_group(group_name) + + def test_update_group(self): + # Setup Expected Response + name = 'name3373707' + group_id = 'groupId506361563' + expected_response = {'name': name, 'group_id': group_id} + expected_response = common_pb2.ErrorGroup(**expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + client = errorreporting_v1beta1.ErrorGroupServiceClient( + channel=channel) + + # Setup Request + group = {} + + response = client.update_group(group) + assert expected_response == response + + assert len(channel.requests) == 1 + expected_request = error_group_service_pb2.UpdateGroupRequest( + group=group) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_update_group_exception(self): + # Mock the API response + channel = ChannelStub(responses=[CustomException()]) + client = errorreporting_v1beta1.ErrorGroupServiceClient( + channel=channel) + + # Setup request + group = {} + + with pytest.raises(CustomException): + client.update_group(group) diff --git a/error_reporting/tests/unit/gapic/v1beta1/test_error_stats_service_client_v1beta1.py b/error_reporting/tests/unit/gapic/v1beta1/test_error_stats_service_client_v1beta1.py new file mode 100644 index 000000000000..f6f33f91c3be --- /dev/null +++ b/error_reporting/tests/unit/gapic/v1beta1/test_error_stats_service_client_v1beta1.py @@ -0,0 +1,188 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Unit tests.""" + +import pytest + +from google.cloud import errorreporting_v1beta1 +from google.cloud.errorreporting_v1beta1.proto import common_pb2 +from google.cloud.errorreporting_v1beta1.proto import error_stats_service_pb2 + + +class MultiCallableStub(object): + """Stub for the grpc.UnaryUnaryMultiCallable interface.""" + + def __init__(self, method, channel_stub): + self.method = method + self.channel_stub = channel_stub + + def __call__(self, request, timeout=None, metadata=None, credentials=None): + self.channel_stub.requests.append((self.method, request)) + + response = None + if self.channel_stub.responses: + response = self.channel_stub.responses.pop() + + if isinstance(response, Exception): + raise response + + if response: + return response + + +class ChannelStub(object): + """Stub for the grpc.Channel interface.""" + + def __init__(self, responses=[]): + self.responses = responses + self.requests = [] + + def unary_unary(self, + method, + request_serializer=None, + response_deserializer=None): + return MultiCallableStub(method, self) + + +class CustomException(Exception): + pass + + +class TestErrorStatsServiceClient(object): + def test_list_group_stats(self): + # Setup Expected Response + next_page_token = '' + error_group_stats_element = {} + error_group_stats = [error_group_stats_element] + expected_response = { + 'next_page_token': next_page_token, + 'error_group_stats': error_group_stats + } + expected_response = error_stats_service_pb2.ListGroupStatsResponse( + **expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + client = errorreporting_v1beta1.ErrorStatsServiceClient( + channel=channel) + + # Setup Request + project_name = client.project_path('[PROJECT]') + time_range = {} + + paged_list_response = client.list_group_stats(project_name, time_range) + resources = list(paged_list_response) + assert len(resources) == 1 + + assert expected_response.error_group_stats[0] == resources[0] + + assert len(channel.requests) == 1 + expected_request = error_stats_service_pb2.ListGroupStatsRequest( + project_name=project_name, time_range=time_range) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_list_group_stats_exception(self): + channel = ChannelStub(responses=[CustomException()]) + client = errorreporting_v1beta1.ErrorStatsServiceClient( + channel=channel) + + # Setup request + project_name = client.project_path('[PROJECT]') + time_range = {} + + paged_list_response = client.list_group_stats(project_name, time_range) + with pytest.raises(CustomException): + list(paged_list_response) + + def test_list_events(self): + # Setup Expected Response + next_page_token = '' + error_events_element = {} + error_events = [error_events_element] + expected_response = { + 'next_page_token': next_page_token, + 'error_events': error_events + } + expected_response = error_stats_service_pb2.ListEventsResponse( + **expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + client = errorreporting_v1beta1.ErrorStatsServiceClient( + channel=channel) + + # Setup Request + project_name = client.project_path('[PROJECT]') + group_id = 'groupId506361563' + + paged_list_response = client.list_events(project_name, group_id) + resources = list(paged_list_response) + assert len(resources) == 1 + + assert expected_response.error_events[0] == resources[0] + + assert len(channel.requests) == 1 + expected_request = error_stats_service_pb2.ListEventsRequest( + project_name=project_name, group_id=group_id) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_list_events_exception(self): + channel = ChannelStub(responses=[CustomException()]) + client = errorreporting_v1beta1.ErrorStatsServiceClient( + channel=channel) + + # Setup request + project_name = client.project_path('[PROJECT]') + group_id = 'groupId506361563' + + paged_list_response = client.list_events(project_name, group_id) + with pytest.raises(CustomException): + list(paged_list_response) + + def test_delete_events(self): + # Setup Expected Response + expected_response = {} + expected_response = error_stats_service_pb2.DeleteEventsResponse( + **expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + client = errorreporting_v1beta1.ErrorStatsServiceClient( + channel=channel) + + # Setup Request + project_name = client.project_path('[PROJECT]') + + response = client.delete_events(project_name) + assert expected_response == response + + assert len(channel.requests) == 1 + expected_request = error_stats_service_pb2.DeleteEventsRequest( + project_name=project_name) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_delete_events_exception(self): + # Mock the API response + channel = ChannelStub(responses=[CustomException()]) + client = errorreporting_v1beta1.ErrorStatsServiceClient( + channel=channel) + + # Setup request + project_name = client.project_path('[PROJECT]') + + with pytest.raises(CustomException): + client.delete_events(project_name) diff --git a/error_reporting/tests/unit/gapic/v1beta1/test_report_errors_service_client_v1beta1.py b/error_reporting/tests/unit/gapic/v1beta1/test_report_errors_service_client_v1beta1.py new file mode 100644 index 000000000000..05232d979e61 --- /dev/null +++ b/error_reporting/tests/unit/gapic/v1beta1/test_report_errors_service_client_v1beta1.py @@ -0,0 +1,97 @@ +# Copyright 2018 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Unit tests.""" + +import pytest + +from google.cloud import errorreporting_v1beta1 +from google.cloud.errorreporting_v1beta1.proto import report_errors_service_pb2 + + +class MultiCallableStub(object): + """Stub for the grpc.UnaryUnaryMultiCallable interface.""" + + def __init__(self, method, channel_stub): + self.method = method + self.channel_stub = channel_stub + + def __call__(self, request, timeout=None, metadata=None, credentials=None): + self.channel_stub.requests.append((self.method, request)) + + response = None + if self.channel_stub.responses: + response = self.channel_stub.responses.pop() + + if isinstance(response, Exception): + raise response + + if response: + return response + + +class ChannelStub(object): + """Stub for the grpc.Channel interface.""" + + def __init__(self, responses=[]): + self.responses = responses + self.requests = [] + + def unary_unary(self, + method, + request_serializer=None, + response_deserializer=None): + return MultiCallableStub(method, self) + + +class CustomException(Exception): + pass + + +class TestReportErrorsServiceClient(object): + def test_report_error_event(self): + # Setup Expected Response + expected_response = {} + expected_response = report_errors_service_pb2.ReportErrorEventResponse( + **expected_response) + + # Mock the API response + channel = ChannelStub(responses=[expected_response]) + client = errorreporting_v1beta1.ReportErrorsServiceClient( + channel=channel) + + # Setup Request + project_name = client.project_path('[PROJECT]') + event = {} + + response = client.report_error_event(project_name, event) + assert expected_response == response + + assert len(channel.requests) == 1 + expected_request = report_errors_service_pb2.ReportErrorEventRequest( + project_name=project_name, event=event) + actual_request = channel.requests[0][1] + assert expected_request == actual_request + + def test_report_error_event_exception(self): + # Mock the API response + channel = ChannelStub(responses=[CustomException()]) + client = errorreporting_v1beta1.ReportErrorsServiceClient( + channel=channel) + + # Setup request + project_name = client.project_path('[PROJECT]') + event = {} + + with pytest.raises(CustomException): + client.report_error_event(project_name, event) From d7e700ffb8a519d67bb99f3a06e33e76d3b1c658 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Thu, 11 Jan 2018 13:56:04 -0800 Subject: [PATCH 2/3] Generator Bug: Fixup proto imports that reference the incorrect package. --- .../errorreporting_v1beta1/proto/error_group_service_pb2.py | 2 +- .../proto/error_group_service_pb2_grpc.py | 4 ++-- .../errorreporting_v1beta1/proto/error_stats_service_pb2.py | 2 +- .../proto/error_stats_service_pb2_grpc.py | 2 +- .../errorreporting_v1beta1/proto/report_errors_service_pb2.py | 2 +- .../proto/report_errors_service_pb2_grpc.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py index 652fccda5436..5cdfdeffa5a5 100644 --- a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2.py @@ -14,7 +14,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -from google.devtools.clouderrorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 +from google.cloud.errorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 DESCRIPTOR = _descriptor.FileDescriptor( diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py index 9a444b2ba024..c9d1ff0fadfc 100644 --- a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_group_service_pb2_grpc.py @@ -1,8 +1,8 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc -import google.devtools.clouderrorreporting_v1beta1.proto.common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 -import google.devtools.clouderrorreporting_v1beta1.proto.error_group_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__group__service__pb2 +import google.cloud.errorreporting_v1beta1.proto.common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 +import google.cloud.errorreporting_v1beta1.proto.error_group_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__group__service__pb2 class ErrorGroupServiceStub(object): diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py index 9838a3dc793f..c592152c50e7 100644 --- a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2.py @@ -15,7 +15,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -from google.devtools.clouderrorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 +from google.cloud.errorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py index 3f77eb8425f3..db753cc290e7 100644 --- a/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/error_stats_service_pb2_grpc.py @@ -1,7 +1,7 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc -import google.devtools.clouderrorreporting_v1beta1.proto.error_stats_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2 +import google.cloud.errorreporting_v1beta1.proto.error_stats_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_error__stats__service__pb2 class ErrorStatsServiceStub(object): diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py index e3fae9c216a9..cba497127a4f 100644 --- a/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2.py @@ -14,7 +14,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -from google.devtools.clouderrorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 +from google.cloud.errorreporting_v1beta1.proto import common_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_common__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 diff --git a/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py index f85698a8bce9..d40cb2acb2cb 100644 --- a/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py +++ b/error_reporting/google/cloud/errorreporting_v1beta1/proto/report_errors_service_pb2_grpc.py @@ -1,7 +1,7 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! import grpc -import google.devtools.clouderrorreporting_v1beta1.proto.report_errors_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_report__errors__service__pb2 +import google.cloud.errorreporting_v1beta1.proto.report_errors_service_pb2 as google_dot_devtools_dot_clouderrorreporting__v1beta1_dot_proto_dot_report__errors__service__pb2 class ReportErrorsServiceStub(object): From 363917dd58aea897c67608a6d70c3343a9f840f9 Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Thu, 11 Jan 2018 14:42:13 -0800 Subject: [PATCH 3/3] Replace gax usage with gapic client --- .../error_reporting/{_gax.py => _gapic.py} | 41 +++++++++--------- .../google/cloud/error_reporting/client.py | 6 +-- error_reporting/nox.py | 2 +- error_reporting/setup.py | 1 - .../{system.py => system/test_system.py} | 4 +- .../unit/{test__gax.py => test__gapic.py} | 42 +++++++++---------- 6 files changed, 44 insertions(+), 52 deletions(-) rename error_reporting/google/cloud/error_reporting/{_gax.py => _gapic.py} (62%) rename error_reporting/tests/{system.py => system/test_system.py} (96%) rename error_reporting/tests/unit/{test__gax.py => test__gapic.py} (61%) diff --git a/error_reporting/google/cloud/error_reporting/_gax.py b/error_reporting/google/cloud/error_reporting/_gapic.py similarity index 62% rename from error_reporting/google/cloud/error_reporting/_gax.py rename to error_reporting/google/cloud/error_reporting/_gapic.py index a289377986a0..6ce0bb967a65 100644 --- a/error_reporting/google/cloud/error_reporting/_gax.py +++ b/error_reporting/google/cloud/error_reporting/_gapic.py @@ -14,53 +14,50 @@ """GAX wrapper for Error Reporting API requests.""" -from google.cloud._helpers import make_secure_channel -from google.cloud._http import DEFAULT_USER_AGENT +from google.api_core.gapic_v1 import client_info -from google.cloud.gapic.errorreporting.v1beta1 import ( +from google.cloud.error_reporting import __version__ +from google.cloud.errorreporting_v1beta1.gapic import ( report_errors_service_client) -from google.cloud.proto.devtools.clouderrorreporting.v1beta1 import ( +from google.cloud.errorreporting_v1beta1.proto import ( report_errors_service_pb2) from google.protobuf.json_format import ParseDict -from google.cloud.error_reporting import __version__ +_CLIENT_INFO = client_info.ClientInfo( + client_library_version=__version__) def make_report_error_api(client): - """Create an instance of the GAX Logging API. + """Create an instance of the gapic Logging API. :type client::class:`google.cloud.error_reporting.Client` :param client: Error Reporting client. - :rtype: :class:_ErrorReportingGaxApi + :rtype: :class:_ErrorReportingGapicApi :returns: An Error Reporting API instance. """ - channel = make_secure_channel( - client._credentials, - DEFAULT_USER_AGENT, - report_errors_service_client.ReportErrorsServiceClient.SERVICE_ADDRESS) gax_client = report_errors_service_client.ReportErrorsServiceClient( - channel=channel, lib_name='gccl', lib_version=__version__) - return _ErrorReportingGaxApi(gax_client, client.project) + credentials=client._credentials, client_info=_CLIENT_INFO) + return _ErrorReportingGapicApi(gax_client, client.project) -class _ErrorReportingGaxApi(object): +class _ErrorReportingGapicApi(object): """Helper mapping Error Reporting-related APIs - :type gax_api: - :class:`v1beta1.report_errors_service_client.ReportErrorsServiceClient` - :param gax_api: API object used to make GAX requests. + :type gapic: + :class:`report_errors_service_client.ReportErrorsServiceClient` + :param gapic: API object used to make RPCs. :type project: str :param project: Google Cloud Project ID """ - def __init__(self, gax_api, project): - self._gax_api = gax_api + def __init__(self, gapic_api, project): + self._gapic_api = gapic_api self._project = project def report_error_event(self, error_report): - """Uses the GAX client to report the error. + """Uses the gapic client to report the error. :type error_report: dict :param error_report: @@ -70,7 +67,7 @@ def report_error_event(self, error_report): Use :meth:~`google.cloud.error_reporting.client._build_error_report` """ - project_name = self._gax_api.project_path(self._project) + project_name = self._gapic_api.project_path(self._project) error_report_payload = report_errors_service_pb2.ReportedErrorEvent() ParseDict(error_report, error_report_payload) - self._gax_api.report_error_event(project_name, error_report_payload) + self._gapic_api.report_error_event(project_name, error_report_payload) diff --git a/error_reporting/google/cloud/error_reporting/client.py b/error_reporting/google/cloud/error_reporting/client.py index af855835888b..c331bd298b06 100644 --- a/error_reporting/google/cloud/error_reporting/client.py +++ b/error_reporting/google/cloud/error_reporting/client.py @@ -18,7 +18,7 @@ import traceback try: - from google.cloud.error_reporting._gax import make_report_error_api + from google.cloud.error_reporting._gapic import make_report_error_api _HAVE_GRPC = True except ImportError: # pragma: NO COVER _HAVE_GRPC = False @@ -115,7 +115,7 @@ class Client(ClientWithProject): :type _use_grpc: bool :param _use_grpc: (Optional) Explicitly specifies whether - to use the gRPC transport (via GAX) or HTTP. If unset, + to use the gRPC transport or HTTP. If unset, falls back to the ``GOOGLE_CLOUD_DISABLE_GRPC`` environment variable. This parameter should be considered private, and could @@ -156,7 +156,7 @@ def report_errors_api(self): https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.logs :rtype: - :class:`_gax._ErrorReportingGaxApi` + :class:`_gapic._ErrorReportingGapicApi` or :class:`._logging._ErrorReportingLoggingAPI` :returns: A class that implements the report errors API. diff --git a/error_reporting/nox.py b/error_reporting/nox.py index c90670f4ee14..a21eaef31390 100644 --- a/error_reporting/nox.py +++ b/error_reporting/nox.py @@ -122,7 +122,7 @@ def system(session, py): session.install('.') # Run py.test against the system tests. - session.run('py.test', '-vvv', 'tests/system.py') + session.run('py.test', '-vvv', 'tests/system', *session.posargs) @nox.session diff --git a/error_reporting/setup.py b/error_reporting/setup.py index 7a2f9058a8af..6d6f3c3f8421 100644 --- a/error_reporting/setup.py +++ b/error_reporting/setup.py @@ -54,7 +54,6 @@ 'google-cloud-core >= 0.28.0, < 0.29dev', 'google-api-core >= 0.1.1, < 0.2.0dev', 'google-cloud-logging >= 1.4.0, < 1.5dev', - 'gapic-google-cloud-error-reporting-v1beta1 >= 0.15.0, < 0.16dev' ] setup( diff --git a/error_reporting/tests/system.py b/error_reporting/tests/system/test_system.py similarity index 96% rename from error_reporting/tests/system.py rename to error_reporting/tests/system/test_system.py index 58d988bc8364..598576cacb47 100644 --- a/error_reporting/tests/system.py +++ b/error_reporting/tests/system/test_system.py @@ -17,9 +17,9 @@ import unittest from google.cloud import error_reporting -from google.cloud.gapic.errorreporting.v1beta1 import ( +from google.cloud.errorreporting_v1beta1.gapic import ( error_stats_service_client) -from google.cloud.proto.devtools.clouderrorreporting.v1beta1 import ( +from google.cloud.errorreporting_v1beta1.proto import ( error_stats_service_pb2) from google.protobuf.duration_pb2 import Duration diff --git a/error_reporting/tests/unit/test__gax.py b/error_reporting/tests/unit/test__gapic.py similarity index 61% rename from error_reporting/tests/unit/test__gax.py rename to error_reporting/tests/unit/test__gapic.py index 3d5b905d4bd6..2f41553dfb72 100644 --- a/error_reporting/tests/unit/test__gax.py +++ b/error_reporting/tests/unit/test__gapic.py @@ -20,13 +20,10 @@ class Test_make_report_error_api(unittest.TestCase): def test_make_report_error_api(self): - from google.cloud.gapic.errorreporting.v1beta1 import ( + from google.cloud.errorreporting_v1beta1.gapic import ( report_errors_service_client) - from grpc._channel import Channel - - from google.cloud.error_reporting import __version__ - from google.cloud.error_reporting._gax import make_report_error_api + from google.cloud.error_reporting._gapic import make_report_error_api client = mock.Mock( _credentials=mock.sentinel.credentials, @@ -46,47 +43,46 @@ def test_make_report_error_api(self): # to be correct. resc.assert_called_once() _, _, kwargs = resc.mock_calls[0] - self.assertIsInstance(kwargs['channel'], Channel) - self.assertEqual(kwargs['lib_name'], 'gccl') - self.assertEqual(kwargs['lib_version'], __version__) + self.assertEqual(kwargs['credentials'], mock.sentinel.credentials) + self.assertIsNotNone(kwargs['client_info']) # Assert that the final error client has the project in # the expected location. self.assertIs(report_error_client._project, client.project) -class Test_ErrorReportingGaxApi(unittest.TestCase): +class Test_ErrorReportingGapicApi(unittest.TestCase): PROJECT = 'PROJECT' - def _make_one(self, gax_api, project): - from google.cloud.error_reporting._gax import _ErrorReportingGaxApi + def _make_one(self, gapic_api, project): + from google.cloud.error_reporting._gapic import _ErrorReportingGapicApi - return _ErrorReportingGaxApi(gax_api, project) + return _ErrorReportingGapicApi(gapic_api, project) def test_constructor(self): - gax_api = mock.Mock(spec=[]) - gax_client_wrapper = self._make_one(gax_api, self.PROJECT) + gapic_api = mock.Mock(spec=[]) + gapic_client_wrapper = self._make_one(gapic_api, self.PROJECT) - self.assertEqual(gax_client_wrapper._project, self.PROJECT) - self.assertEqual(gax_client_wrapper._gax_api, gax_api) + self.assertEqual(gapic_client_wrapper._project, self.PROJECT) + self.assertEqual(gapic_client_wrapper._gapic_api, gapic_api) def test_report_error_event(self): - from google.cloud.proto.devtools.clouderrorreporting.v1beta1 import ( + from google.cloud.errorreporting_v1beta1.proto import ( report_errors_service_pb2) - gax_api = mock.Mock(spec=['project_path', 'report_error_event']) - gax_client_wrapper = self._make_one(gax_api, self.PROJECT) + gapic_api = mock.Mock(spec=['project_path', 'report_error_event']) + gapic_client_wrapper = self._make_one(gapic_api, self.PROJECT) error_report = { 'message': 'The cabs are here.', } - gax_client_wrapper.report_error_event(error_report) + gapic_client_wrapper.report_error_event(error_report) - gax_api.project_path.assert_called_once_with(self.PROJECT) - project_name = gax_api.project_path.return_value + gapic_api.project_path.assert_called_once_with(self.PROJECT) + project_name = gapic_api.project_path.return_value error_pb = report_errors_service_pb2.ReportedErrorEvent( message=error_report['message'], ) - gax_api.report_error_event.assert_called_once_with( + gapic_api.report_error_event.assert_called_once_with( project_name, error_pb)