# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/monitoring_v3/proto/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

# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from google.api import (
    monitored_resource_pb2 as google_dot_api_dot_monitored__resource__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
from google.type import calendar_period_pb2 as google_dot_type_dot_calendar__period__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
    name="google/cloud/monitoring_v3/proto/service.proto",
    package="google.monitoring.v3",
    syntax="proto3",
    serialized_options=_b(
        "\n\030com.google.monitoring.v3B\026ServiceMonitoringProtoP\001Z>google.golang.org/genproto/googleapis/monitoring/v3;monitoring\252\002\032Google.Cloud.Monitoring.V3\312\002\032Google\\Cloud\\Monitoring\\V3"
    ),
    serialized_pb=_b(
        '\n.google/cloud/monitoring_v3/proto/service.proto\x12\x14google.monitoring.v3\x1a#google/api/monitored_resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a!google/type/calendar_period.proto"\xd6\x04\n\x07Service\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x36\n\x06\x63ustom\x18\x06 \x01(\x0b\x32$.google.monitoring.v3.Service.CustomH\x00\x12=\n\napp_engine\x18\x07 \x01(\x0b\x32\'.google.monitoring.v3.Service.AppEngineH\x00\x12G\n\x0f\x63loud_endpoints\x18\x08 \x01(\x0b\x32,.google.monitoring.v3.Service.CloudEndpointsH\x00\x12\x43\n\rcluster_istio\x18\t \x01(\x0b\x32*.google.monitoring.v3.Service.ClusterIstioH\x00\x12:\n\ttelemetry\x18\r \x01(\x0b\x32\'.google.monitoring.v3.Service.Telemetry\x1a\x08\n\x06\x43ustom\x1a\x1e\n\tAppEngine\x12\x11\n\tmodule_id\x18\x01 \x01(\t\x1a!\n\x0e\x43loudEndpoints\x12\x0f\n\x07service\x18\x01 \x01(\t\x1ag\n\x0c\x43lusterIstio\x12\x10\n\x08location\x18\x01 \x01(\t\x12\x14\n\x0c\x63luster_name\x18\x02 \x01(\t\x12\x19\n\x11service_namespace\x18\x03 \x01(\t\x12\x14\n\x0cservice_name\x18\x04 \x01(\t\x1a"\n\tTelemetry\x12\x15\n\rresource_name\x18\x01 \x01(\tB\x0c\n\nidentifier"\xc4\x02\n\x15ServiceLevelObjective\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x0b \x01(\t\x12L\n\x17service_level_indicator\x18\x03 \x01(\x0b\x32+.google.monitoring.v3.ServiceLevelIndicator\x12\x0c\n\x04goal\x18\x04 \x01(\x01\x12\x33\n\x0erolling_period\x18\x05 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x36\n\x0f\x63\x61lendar_period\x18\x06 \x01(\x0e\x32\x1b.google.type.CalendarPeriodH\x00"4\n\x04View\x12\x14\n\x10VIEW_UNSPECIFIED\x10\x00\x12\x08\n\x04\x46ULL\x10\x02\x12\x0c\n\x08\x45XPLICIT\x10\x01\x42\x08\n\x06period"\xd4\x01\n\x15ServiceLevelIndicator\x12\x33\n\tbasic_sli\x18\x04 \x01(\x0b\x32\x1e.google.monitoring.v3.BasicSliH\x00\x12>\n\rrequest_based\x18\x01 \x01(\x0b\x32%.google.monitoring.v3.RequestBasedSliH\x00\x12>\n\rwindows_based\x18\x02 \x01(\x0b\x32%.google.monitoring.v3.WindowsBasedSliH\x00\x42\x06\n\x04type"\xb6\x02\n\x08\x42\x61sicSli\x12\x0e\n\x06method\x18\x07 \x03(\t\x12\x10\n\x08location\x18\x08 \x03(\t\x12\x0f\n\x07version\x18\t \x03(\t\x12K\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x33.google.monitoring.v3.BasicSli.AvailabilityCriteriaH\x00\x12\x41\n\x07latency\x18\x03 \x01(\x0b\x32..google.monitoring.v3.BasicSli.LatencyCriteriaH\x00\x1a\x16\n\x14\x41vailabilityCriteria\x1a?\n\x0fLatencyCriteria\x12,\n\tthreshold\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0e\n\x0csli_criteria"!\n\x05Range\x12\x0b\n\x03min\x18\x01 \x01(\x01\x12\x0b\n\x03max\x18\x02 \x01(\x01"\xa1\x01\n\x0fRequestBasedSli\x12\x41\n\x10good_total_ratio\x18\x01 \x01(\x0b\x32%.google.monitoring.v3.TimeSeriesRatioH\x00\x12\x41\n\x10\x64istribution_cut\x18\x03 \x01(\x0b\x32%.google.monitoring.v3.DistributionCutH\x00\x42\x08\n\x06method"h\n\x0fTimeSeriesRatio\x12\x1b\n\x13good_service_filter\x18\x04 \x01(\t\x12\x1a\n\x12\x62\x61\x64_service_filter\x18\x05 \x01(\t\x12\x1c\n\x14total_service_filter\x18\x06 \x01(\t"Z\n\x0f\x44istributionCut\x12\x1b\n\x13\x64istribution_filter\x18\x04 \x01(\t\x12*\n\x05range\x18\x05 \x01(\x0b\x32\x1b.google.monitoring.v3.Range"\x83\x05\n\x0fWindowsBasedSli\x12 \n\x16good_bad_metric_filter\x18\x05 \x01(\tH\x00\x12`\n\x1agood_total_ratio_threshold\x18\x02 \x01(\x0b\x32:.google.monitoring.v3.WindowsBasedSli.PerformanceThresholdH\x00\x12Q\n\x14metric_mean_in_range\x18\x06 \x01(\x0b\x32\x31.google.monitoring.v3.WindowsBasedSli.MetricRangeH\x00\x12P\n\x13metric_sum_in_range\x18\x07 \x01(\x0b\x32\x31.google.monitoring.v3.WindowsBasedSli.MetricRangeH\x00\x12\x30\n\rwindow_period\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\xb0\x01\n\x14PerformanceThreshold\x12<\n\x0bperformance\x18\x01 \x01(\x0b\x32%.google.monitoring.v3.RequestBasedSliH\x00\x12?\n\x15\x62\x61sic_sli_performance\x18\x03 \x01(\x0b\x32\x1e.google.monitoring.v3.BasicSliH\x00\x12\x11\n\tthreshold\x18\x02 \x01(\x01\x42\x06\n\x04type\x1aN\n\x0bMetricRange\x12\x13\n\x0btime_series\x18\x01 \x01(\t\x12*\n\x05range\x18\x04 \x01(\x0b\x32\x1b.google.monitoring.v3.RangeB\x12\n\x10window_criterionB\xae\x01\n\x18\x63om.google.monitoring.v3B\x16ServiceMonitoringProtoP\x01Z>google.golang.org/genproto/googleapis/monitoring/v3;monitoring\xaa\x02\x1aGoogle.Cloud.Monitoring.V3\xca\x02\x1aGoogle\\Cloud\\Monitoring\\V3b\x06proto3'
    ),
    dependencies=[
        google_dot_api_dot_monitored__resource__pb2.DESCRIPTOR,
        google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,
        google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,
        google_dot_type_dot_calendar__period__pb2.DESCRIPTOR,
    ],
)


_SERVICELEVELOBJECTIVE_VIEW = _descriptor.EnumDescriptor(
    name="View",
    full_name="google.monitoring.v3.ServiceLevelObjective.View",
    filename=None,
    file=DESCRIPTOR,
    values=[
        _descriptor.EnumValueDescriptor(
            name="VIEW_UNSPECIFIED",
            index=0,
            number=0,
            serialized_options=None,
            type=None,
        ),
        _descriptor.EnumValueDescriptor(
            name="FULL", index=1, number=2, serialized_options=None, type=None
        ),
        _descriptor.EnumValueDescriptor(
            name="EXPLICIT", index=2, number=1, serialized_options=None, type=None
        ),
    ],
    containing_type=None,
    serialized_options=None,
    serialized_start=1073,
    serialized_end=1125,
)
_sym_db.RegisterEnumDescriptor(_SERVICELEVELOBJECTIVE_VIEW)


_SERVICE_CUSTOM = _descriptor.Descriptor(
    name="Custom",
    full_name="google.monitoring.v3.Service.Custom",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=578,
    serialized_end=586,
)

_SERVICE_APPENGINE = _descriptor.Descriptor(
    name="AppEngine",
    full_name="google.monitoring.v3.Service.AppEngine",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="module_id",
            full_name="google.monitoring.v3.Service.AppEngine.module_id",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=588,
    serialized_end=618,
)

_SERVICE_CLOUDENDPOINTS = _descriptor.Descriptor(
    name="CloudEndpoints",
    full_name="google.monitoring.v3.Service.CloudEndpoints",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="service",
            full_name="google.monitoring.v3.Service.CloudEndpoints.service",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=620,
    serialized_end=653,
)

_SERVICE_CLUSTERISTIO = _descriptor.Descriptor(
    name="ClusterIstio",
    full_name="google.monitoring.v3.Service.ClusterIstio",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="location",
            full_name="google.monitoring.v3.Service.ClusterIstio.location",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="cluster_name",
            full_name="google.monitoring.v3.Service.ClusterIstio.cluster_name",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="service_namespace",
            full_name="google.monitoring.v3.Service.ClusterIstio.service_namespace",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="service_name",
            full_name="google.monitoring.v3.Service.ClusterIstio.service_name",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=655,
    serialized_end=758,
)

_SERVICE_TELEMETRY = _descriptor.Descriptor(
    name="Telemetry",
    full_name="google.monitoring.v3.Service.Telemetry",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="resource_name",
            full_name="google.monitoring.v3.Service.Telemetry.resource_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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=760,
    serialized_end=794,
)

_SERVICE = _descriptor.Descriptor(
    name="Service",
    full_name="google.monitoring.v3.Service",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="google.monitoring.v3.Service.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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="display_name",
            full_name="google.monitoring.v3.Service.display_name",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="custom",
            full_name="google.monitoring.v3.Service.custom",
            index=2,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="app_engine",
            full_name="google.monitoring.v3.Service.app_engine",
            index=3,
            number=7,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="cloud_endpoints",
            full_name="google.monitoring.v3.Service.cloud_endpoints",
            index=4,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="cluster_istio",
            full_name="google.monitoring.v3.Service.cluster_istio",
            index=5,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="telemetry",
            full_name="google.monitoring.v3.Service.telemetry",
            index=6,
            number=13,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[
        _SERVICE_CUSTOM,
        _SERVICE_APPENGINE,
        _SERVICE_CLOUDENDPOINTS,
        _SERVICE_CLUSTERISTIO,
        _SERVICE_TELEMETRY,
    ],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="identifier",
            full_name="google.monitoring.v3.Service.identifier",
            index=0,
            containing_type=None,
            fields=[],
        ),
    ],
    serialized_start=210,
    serialized_end=808,
)


_SERVICELEVELOBJECTIVE = _descriptor.Descriptor(
    name="ServiceLevelObjective",
    full_name="google.monitoring.v3.ServiceLevelObjective",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="name",
            full_name="google.monitoring.v3.ServiceLevelObjective.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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="display_name",
            full_name="google.monitoring.v3.ServiceLevelObjective.display_name",
            index=1,
            number=11,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="service_level_indicator",
            full_name="google.monitoring.v3.ServiceLevelObjective.service_level_indicator",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="goal",
            full_name="google.monitoring.v3.ServiceLevelObjective.goal",
            index=3,
            number=4,
            type=1,
            cpp_type=5,
            label=1,
            has_default_value=False,
            default_value=float(0),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="rolling_period",
            full_name="google.monitoring.v3.ServiceLevelObjective.rolling_period",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="calendar_period",
            full_name="google.monitoring.v3.ServiceLevelObjective.calendar_period",
            index=5,
            number=6,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[_SERVICELEVELOBJECTIVE_VIEW,],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="period",
            full_name="google.monitoring.v3.ServiceLevelObjective.period",
            index=0,
            containing_type=None,
            fields=[],
        ),
    ],
    serialized_start=811,
    serialized_end=1135,
)


_SERVICELEVELINDICATOR = _descriptor.Descriptor(
    name="ServiceLevelIndicator",
    full_name="google.monitoring.v3.ServiceLevelIndicator",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="basic_sli",
            full_name="google.monitoring.v3.ServiceLevelIndicator.basic_sli",
            index=0,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="request_based",
            full_name="google.monitoring.v3.ServiceLevelIndicator.request_based",
            index=1,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="windows_based",
            full_name="google.monitoring.v3.ServiceLevelIndicator.windows_based",
            index=2,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="type",
            full_name="google.monitoring.v3.ServiceLevelIndicator.type",
            index=0,
            containing_type=None,
            fields=[],
        ),
    ],
    serialized_start=1138,
    serialized_end=1350,
)


_BASICSLI_AVAILABILITYCRITERIA = _descriptor.Descriptor(
    name="AvailabilityCriteria",
    full_name="google.monitoring.v3.BasicSli.AvailabilityCriteria",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1560,
    serialized_end=1582,
)

_BASICSLI_LATENCYCRITERIA = _descriptor.Descriptor(
    name="LatencyCriteria",
    full_name="google.monitoring.v3.BasicSli.LatencyCriteria",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="threshold",
            full_name="google.monitoring.v3.BasicSli.LatencyCriteria.threshold",
            index=0,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1584,
    serialized_end=1647,
)

_BASICSLI = _descriptor.Descriptor(
    name="BasicSli",
    full_name="google.monitoring.v3.BasicSli",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="method",
            full_name="google.monitoring.v3.BasicSli.method",
            index=0,
            number=7,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="location",
            full_name="google.monitoring.v3.BasicSli.location",
            index=1,
            number=8,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="version",
            full_name="google.monitoring.v3.BasicSli.version",
            index=2,
            number=9,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="availability",
            full_name="google.monitoring.v3.BasicSli.availability",
            index=3,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="latency",
            full_name="google.monitoring.v3.BasicSli.latency",
            index=4,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[_BASICSLI_AVAILABILITYCRITERIA, _BASICSLI_LATENCYCRITERIA,],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="sli_criteria",
            full_name="google.monitoring.v3.BasicSli.sli_criteria",
            index=0,
            containing_type=None,
            fields=[],
        ),
    ],
    serialized_start=1353,
    serialized_end=1663,
)


_RANGE = _descriptor.Descriptor(
    name="Range",
    full_name="google.monitoring.v3.Range",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="min",
            full_name="google.monitoring.v3.Range.min",
            index=0,
            number=1,
            type=1,
            cpp_type=5,
            label=1,
            has_default_value=False,
            default_value=float(0),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="max",
            full_name="google.monitoring.v3.Range.max",
            index=1,
            number=2,
            type=1,
            cpp_type=5,
            label=1,
            has_default_value=False,
            default_value=float(0),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1665,
    serialized_end=1698,
)


_REQUESTBASEDSLI = _descriptor.Descriptor(
    name="RequestBasedSli",
    full_name="google.monitoring.v3.RequestBasedSli",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="good_total_ratio",
            full_name="google.monitoring.v3.RequestBasedSli.good_total_ratio",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="distribution_cut",
            full_name="google.monitoring.v3.RequestBasedSli.distribution_cut",
            index=1,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="method",
            full_name="google.monitoring.v3.RequestBasedSli.method",
            index=0,
            containing_type=None,
            fields=[],
        ),
    ],
    serialized_start=1701,
    serialized_end=1862,
)


_TIMESERIESRATIO = _descriptor.Descriptor(
    name="TimeSeriesRatio",
    full_name="google.monitoring.v3.TimeSeriesRatio",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="good_service_filter",
            full_name="google.monitoring.v3.TimeSeriesRatio.good_service_filter",
            index=0,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="bad_service_filter",
            full_name="google.monitoring.v3.TimeSeriesRatio.bad_service_filter",
            index=1,
            number=5,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="total_service_filter",
            full_name="google.monitoring.v3.TimeSeriesRatio.total_service_filter",
            index=2,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1864,
    serialized_end=1968,
)


_DISTRIBUTIONCUT = _descriptor.Descriptor(
    name="DistributionCut",
    full_name="google.monitoring.v3.DistributionCut",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="distribution_filter",
            full_name="google.monitoring.v3.DistributionCut.distribution_filter",
            index=0,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="range",
            full_name="google.monitoring.v3.DistributionCut.range",
            index=1,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=1970,
    serialized_end=2060,
)


_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD = _descriptor.Descriptor(
    name="PerformanceThreshold",
    full_name="google.monitoring.v3.WindowsBasedSli.PerformanceThreshold",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="performance",
            full_name="google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.performance",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="basic_sli_performance",
            full_name="google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.basic_sli_performance",
            index=1,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="threshold",
            full_name="google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.threshold",
            index=2,
            number=2,
            type=1,
            cpp_type=5,
            label=1,
            has_default_value=False,
            default_value=float(0),
            message_type=None,
            enum_type=None,
            containing_type=None,
            is_extension=False,
            extension_scope=None,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="type",
            full_name="google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.type",
            index=0,
            containing_type=None,
            fields=[],
        ),
    ],
    serialized_start=2430,
    serialized_end=2606,
)

_WINDOWSBASEDSLI_METRICRANGE = _descriptor.Descriptor(
    name="MetricRange",
    full_name="google.monitoring.v3.WindowsBasedSli.MetricRange",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="time_series",
            full_name="google.monitoring.v3.WindowsBasedSli.MetricRange.time_series",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="range",
            full_name="google.monitoring.v3.WindowsBasedSli.MetricRange.range",
            index=1,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[],
    serialized_start=2608,
    serialized_end=2686,
)

_WINDOWSBASEDSLI = _descriptor.Descriptor(
    name="WindowsBasedSli",
    full_name="google.monitoring.v3.WindowsBasedSli",
    filename=None,
    file=DESCRIPTOR,
    containing_type=None,
    fields=[
        _descriptor.FieldDescriptor(
            name="good_bad_metric_filter",
            full_name="google.monitoring.v3.WindowsBasedSli.good_bad_metric_filter",
            index=0,
            number=5,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="good_total_ratio_threshold",
            full_name="google.monitoring.v3.WindowsBasedSli.good_total_ratio_threshold",
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="metric_mean_in_range",
            full_name="google.monitoring.v3.WindowsBasedSli.metric_mean_in_range",
            index=2,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="metric_sum_in_range",
            full_name="google.monitoring.v3.WindowsBasedSli.metric_sum_in_range",
            index=3,
            number=7,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
        _descriptor.FieldDescriptor(
            name="window_period",
            full_name="google.monitoring.v3.WindowsBasedSli.window_period",
            index=4,
            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,
            serialized_options=None,
            file=DESCRIPTOR,
        ),
    ],
    extensions=[],
    nested_types=[_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD, _WINDOWSBASEDSLI_METRICRANGE,],
    enum_types=[],
    serialized_options=None,
    is_extendable=False,
    syntax="proto3",
    extension_ranges=[],
    oneofs=[
        _descriptor.OneofDescriptor(
            name="window_criterion",
            full_name="google.monitoring.v3.WindowsBasedSli.window_criterion",
            index=0,
            containing_type=None,
            fields=[],
        ),
    ],
    serialized_start=2063,
    serialized_end=2706,
)

_SERVICE_CUSTOM.containing_type = _SERVICE
_SERVICE_APPENGINE.containing_type = _SERVICE
_SERVICE_CLOUDENDPOINTS.containing_type = _SERVICE
_SERVICE_CLUSTERISTIO.containing_type = _SERVICE
_SERVICE_TELEMETRY.containing_type = _SERVICE
_SERVICE.fields_by_name["custom"].message_type = _SERVICE_CUSTOM
_SERVICE.fields_by_name["app_engine"].message_type = _SERVICE_APPENGINE
_SERVICE.fields_by_name["cloud_endpoints"].message_type = _SERVICE_CLOUDENDPOINTS
_SERVICE.fields_by_name["cluster_istio"].message_type = _SERVICE_CLUSTERISTIO
_SERVICE.fields_by_name["telemetry"].message_type = _SERVICE_TELEMETRY
_SERVICE.oneofs_by_name["identifier"].fields.append(_SERVICE.fields_by_name["custom"])
_SERVICE.fields_by_name["custom"].containing_oneof = _SERVICE.oneofs_by_name[
    "identifier"
]
_SERVICE.oneofs_by_name["identifier"].fields.append(
    _SERVICE.fields_by_name["app_engine"]
)
_SERVICE.fields_by_name["app_engine"].containing_oneof = _SERVICE.oneofs_by_name[
    "identifier"
]
_SERVICE.oneofs_by_name["identifier"].fields.append(
    _SERVICE.fields_by_name["cloud_endpoints"]
)
_SERVICE.fields_by_name["cloud_endpoints"].containing_oneof = _SERVICE.oneofs_by_name[
    "identifier"
]
_SERVICE.oneofs_by_name["identifier"].fields.append(
    _SERVICE.fields_by_name["cluster_istio"]
)
_SERVICE.fields_by_name["cluster_istio"].containing_oneof = _SERVICE.oneofs_by_name[
    "identifier"
]
_SERVICELEVELOBJECTIVE.fields_by_name[
    "service_level_indicator"
].message_type = _SERVICELEVELINDICATOR
_SERVICELEVELOBJECTIVE.fields_by_name[
    "rolling_period"
].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
_SERVICELEVELOBJECTIVE.fields_by_name[
    "calendar_period"
].enum_type = google_dot_type_dot_calendar__period__pb2._CALENDARPERIOD
_SERVICELEVELOBJECTIVE_VIEW.containing_type = _SERVICELEVELOBJECTIVE
_SERVICELEVELOBJECTIVE.oneofs_by_name["period"].fields.append(
    _SERVICELEVELOBJECTIVE.fields_by_name["rolling_period"]
)
_SERVICELEVELOBJECTIVE.fields_by_name[
    "rolling_period"
].containing_oneof = _SERVICELEVELOBJECTIVE.oneofs_by_name["period"]
_SERVICELEVELOBJECTIVE.oneofs_by_name["period"].fields.append(
    _SERVICELEVELOBJECTIVE.fields_by_name["calendar_period"]
)
_SERVICELEVELOBJECTIVE.fields_by_name[
    "calendar_period"
].containing_oneof = _SERVICELEVELOBJECTIVE.oneofs_by_name["period"]
_SERVICELEVELINDICATOR.fields_by_name["basic_sli"].message_type = _BASICSLI
_SERVICELEVELINDICATOR.fields_by_name["request_based"].message_type = _REQUESTBASEDSLI
_SERVICELEVELINDICATOR.fields_by_name["windows_based"].message_type = _WINDOWSBASEDSLI
_SERVICELEVELINDICATOR.oneofs_by_name["type"].fields.append(
    _SERVICELEVELINDICATOR.fields_by_name["basic_sli"]
)
_SERVICELEVELINDICATOR.fields_by_name[
    "basic_sli"
].containing_oneof = _SERVICELEVELINDICATOR.oneofs_by_name["type"]
_SERVICELEVELINDICATOR.oneofs_by_name["type"].fields.append(
    _SERVICELEVELINDICATOR.fields_by_name["request_based"]
)
_SERVICELEVELINDICATOR.fields_by_name[
    "request_based"
].containing_oneof = _SERVICELEVELINDICATOR.oneofs_by_name["type"]
_SERVICELEVELINDICATOR.oneofs_by_name["type"].fields.append(
    _SERVICELEVELINDICATOR.fields_by_name["windows_based"]
)
_SERVICELEVELINDICATOR.fields_by_name[
    "windows_based"
].containing_oneof = _SERVICELEVELINDICATOR.oneofs_by_name["type"]
_BASICSLI_AVAILABILITYCRITERIA.containing_type = _BASICSLI
_BASICSLI_LATENCYCRITERIA.fields_by_name[
    "threshold"
].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
_BASICSLI_LATENCYCRITERIA.containing_type = _BASICSLI
_BASICSLI.fields_by_name["availability"].message_type = _BASICSLI_AVAILABILITYCRITERIA
_BASICSLI.fields_by_name["latency"].message_type = _BASICSLI_LATENCYCRITERIA
_BASICSLI.oneofs_by_name["sli_criteria"].fields.append(
    _BASICSLI.fields_by_name["availability"]
)
_BASICSLI.fields_by_name["availability"].containing_oneof = _BASICSLI.oneofs_by_name[
    "sli_criteria"
]
_BASICSLI.oneofs_by_name["sli_criteria"].fields.append(
    _BASICSLI.fields_by_name["latency"]
)
_BASICSLI.fields_by_name["latency"].containing_oneof = _BASICSLI.oneofs_by_name[
    "sli_criteria"
]
_REQUESTBASEDSLI.fields_by_name["good_total_ratio"].message_type = _TIMESERIESRATIO
_REQUESTBASEDSLI.fields_by_name["distribution_cut"].message_type = _DISTRIBUTIONCUT
_REQUESTBASEDSLI.oneofs_by_name["method"].fields.append(
    _REQUESTBASEDSLI.fields_by_name["good_total_ratio"]
)
_REQUESTBASEDSLI.fields_by_name[
    "good_total_ratio"
].containing_oneof = _REQUESTBASEDSLI.oneofs_by_name["method"]
_REQUESTBASEDSLI.oneofs_by_name["method"].fields.append(
    _REQUESTBASEDSLI.fields_by_name["distribution_cut"]
)
_REQUESTBASEDSLI.fields_by_name[
    "distribution_cut"
].containing_oneof = _REQUESTBASEDSLI.oneofs_by_name["method"]
_DISTRIBUTIONCUT.fields_by_name["range"].message_type = _RANGE
_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.fields_by_name[
    "performance"
].message_type = _REQUESTBASEDSLI
_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.fields_by_name[
    "basic_sli_performance"
].message_type = _BASICSLI
_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.containing_type = _WINDOWSBASEDSLI
_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.oneofs_by_name["type"].fields.append(
    _WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.fields_by_name["performance"]
)
_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.fields_by_name[
    "performance"
].containing_oneof = _WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.oneofs_by_name["type"]
_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.oneofs_by_name["type"].fields.append(
    _WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.fields_by_name["basic_sli_performance"]
)
_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.fields_by_name[
    "basic_sli_performance"
].containing_oneof = _WINDOWSBASEDSLI_PERFORMANCETHRESHOLD.oneofs_by_name["type"]
_WINDOWSBASEDSLI_METRICRANGE.fields_by_name["range"].message_type = _RANGE
_WINDOWSBASEDSLI_METRICRANGE.containing_type = _WINDOWSBASEDSLI
_WINDOWSBASEDSLI.fields_by_name[
    "good_total_ratio_threshold"
].message_type = _WINDOWSBASEDSLI_PERFORMANCETHRESHOLD
_WINDOWSBASEDSLI.fields_by_name[
    "metric_mean_in_range"
].message_type = _WINDOWSBASEDSLI_METRICRANGE
_WINDOWSBASEDSLI.fields_by_name[
    "metric_sum_in_range"
].message_type = _WINDOWSBASEDSLI_METRICRANGE
_WINDOWSBASEDSLI.fields_by_name[
    "window_period"
].message_type = google_dot_protobuf_dot_duration__pb2._DURATION
_WINDOWSBASEDSLI.oneofs_by_name["window_criterion"].fields.append(
    _WINDOWSBASEDSLI.fields_by_name["good_bad_metric_filter"]
)
_WINDOWSBASEDSLI.fields_by_name[
    "good_bad_metric_filter"
].containing_oneof = _WINDOWSBASEDSLI.oneofs_by_name["window_criterion"]
_WINDOWSBASEDSLI.oneofs_by_name["window_criterion"].fields.append(
    _WINDOWSBASEDSLI.fields_by_name["good_total_ratio_threshold"]
)
_WINDOWSBASEDSLI.fields_by_name[
    "good_total_ratio_threshold"
].containing_oneof = _WINDOWSBASEDSLI.oneofs_by_name["window_criterion"]
_WINDOWSBASEDSLI.oneofs_by_name["window_criterion"].fields.append(
    _WINDOWSBASEDSLI.fields_by_name["metric_mean_in_range"]
)
_WINDOWSBASEDSLI.fields_by_name[
    "metric_mean_in_range"
].containing_oneof = _WINDOWSBASEDSLI.oneofs_by_name["window_criterion"]
_WINDOWSBASEDSLI.oneofs_by_name["window_criterion"].fields.append(
    _WINDOWSBASEDSLI.fields_by_name["metric_sum_in_range"]
)
_WINDOWSBASEDSLI.fields_by_name[
    "metric_sum_in_range"
].containing_oneof = _WINDOWSBASEDSLI.oneofs_by_name["window_criterion"]
DESCRIPTOR.message_types_by_name["Service"] = _SERVICE
DESCRIPTOR.message_types_by_name["ServiceLevelObjective"] = _SERVICELEVELOBJECTIVE
DESCRIPTOR.message_types_by_name["ServiceLevelIndicator"] = _SERVICELEVELINDICATOR
DESCRIPTOR.message_types_by_name["BasicSli"] = _BASICSLI
DESCRIPTOR.message_types_by_name["Range"] = _RANGE
DESCRIPTOR.message_types_by_name["RequestBasedSli"] = _REQUESTBASEDSLI
DESCRIPTOR.message_types_by_name["TimeSeriesRatio"] = _TIMESERIESRATIO
DESCRIPTOR.message_types_by_name["DistributionCut"] = _DISTRIBUTIONCUT
DESCRIPTOR.message_types_by_name["WindowsBasedSli"] = _WINDOWSBASEDSLI
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

Service = _reflection.GeneratedProtocolMessageType(
    "Service",
    (_message.Message,),
    dict(
        Custom=_reflection.GeneratedProtocolMessageType(
            "Custom",
            (_message.Message,),
            dict(
                DESCRIPTOR=_SERVICE_CUSTOM,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""Custom view of service telemetry. Currently a place-holder pending final
    design.
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.Service.Custom)
            ),
        ),
        AppEngine=_reflection.GeneratedProtocolMessageType(
            "AppEngine",
            (_message.Message,),
            dict(
                DESCRIPTOR=_SERVICE_APPENGINE,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""App Engine service. Learn more at https://cloud.google.com/appengine.
    
    
    Attributes:
        module_id:
            The ID of the App Engine module underlying this service.
            Corresponds to the ``module_id`` resource label in the
            ``gae_app`` monitored resource: https://cloud.google.com/monit
            oring/api/resources#tag\_gae\_app
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.Service.AppEngine)
            ),
        ),
        CloudEndpoints=_reflection.GeneratedProtocolMessageType(
            "CloudEndpoints",
            (_message.Message,),
            dict(
                DESCRIPTOR=_SERVICE_CLOUDENDPOINTS,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""Cloud Endpoints service. Learn more at
    https://cloud.google.com/endpoints.
    
    
    Attributes:
        service:
            The name of the Cloud Endpoints service underlying this
            service. Corresponds to the ``service`` resource label in the
            ``api`` monitored resource:
            https://cloud.google.com/monitoring/api/resources#tag\_api
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.Service.CloudEndpoints)
            ),
        ),
        ClusterIstio=_reflection.GeneratedProtocolMessageType(
            "ClusterIstio",
            (_message.Message,),
            dict(
                DESCRIPTOR=_SERVICE_CLUSTERISTIO,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""Istio service. Learn more at http://istio.io.
    
    
    Attributes:
        location:
            The location of the Kubernetes cluster in which this Istio
            service is defined. Corresponds to the ``location`` resource
            label in ``k8s_cluster`` resources.
        cluster_name:
            The name of the Kubernetes cluster in which this Istio service
            is defined. Corresponds to the ``cluster_name`` resource label
            in ``k8s_cluster`` resources.
        service_namespace:
            The namespace of the Istio service underlying this service.
            Corresponds to the ``destination_service_namespace`` metric
            label in Istio metrics.
        service_name:
            The name of the Istio service underlying this service.
            Corresponds to the ``destination_service_name`` metric label
            in Istio metrics.
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.Service.ClusterIstio)
            ),
        ),
        Telemetry=_reflection.GeneratedProtocolMessageType(
            "Telemetry",
            (_message.Message,),
            dict(
                DESCRIPTOR=_SERVICE_TELEMETRY,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""Configuration for how to query telemetry on a Service.
    
    
    Attributes:
        resource_name:
            The full name of the resource that defines this service.
            Formatted as described in
            https://cloud.google.com/apis/design/resource\_names.
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.Service.Telemetry)
            ),
        ),
        DESCRIPTOR=_SERVICE,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""A ``Service`` is a discrete, autonomous, and network-accessible unit,
  designed to solve an individual concern
  (`Wikipedia <https://en.wikipedia.org/wiki/Service-orientation>`__). In
  Stackdriver Monitoring, a ``Service`` acts as the root resource under
  which operational aspects of the service are accessible.
  
  
  Attributes:
      name:
          Resource name for this Service. Of the form
          ``projects/{project_id}/services/{service_id}``.
      display_name:
          Name used for UI elements listing this Service.
      identifier:
          REQUIRED. Service-identifying atoms specifying the underlying
          service.
      custom:
          Custom service type.
      app_engine:
          Type used for App Engine services.
      cloud_endpoints:
          Type used for Cloud Endpoints services.
      cluster_istio:
          Type used for Istio services that live in a Kubernetes
          cluster.
      telemetry:
          Configuration for how to query telemetry on a Service.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.Service)
    ),
)
_sym_db.RegisterMessage(Service)
_sym_db.RegisterMessage(Service.Custom)
_sym_db.RegisterMessage(Service.AppEngine)
_sym_db.RegisterMessage(Service.CloudEndpoints)
_sym_db.RegisterMessage(Service.ClusterIstio)
_sym_db.RegisterMessage(Service.Telemetry)

ServiceLevelObjective = _reflection.GeneratedProtocolMessageType(
    "ServiceLevelObjective",
    (_message.Message,),
    dict(
        DESCRIPTOR=_SERVICELEVELOBJECTIVE,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""A Service-Level Objective (SLO) describes a level of desired good
  service. It consists of a service-level indicator (SLI), a performance
  goal, and a period over which the objective is to be evaluated against
  that goal. The SLO can use SLIs defined in a number of different
  manners. Typical SLOs might include "99% of requests in each rolling
  week have latency below 200 milliseconds" or "99.5% of requests in each
  calendar month return successfully."
  
  
  Attributes:
      name:
          Resource name for this ``ServiceLevelObjective``. Of the form 
          ``projects/{project_id}/services/{service_id}/serviceLevelObje
          ctives/{slo_name}``.
      display_name:
          Name used for UI elements listing this SLO.
      service_level_indicator:
          The definition of good service, used to measure and calculate
          the quality of the ``Service``'s performance with respect to a
          single aspect of service quality.
      goal:
          The fraction of service that must be good in order for this
          objective to be met. ``0 < goal <= 0.999``.
      period:
          The time period over which the objective will be evaluated.
      rolling_period:
          A rolling time period, semantically "in the past
          ``<rolling_period>``". Must be an integer multiple of 1 day no
          larger than 30 days.
      calendar_period:
          A calendar period, semantically "since the start of the
          current ``<calendar_period>``". At this time, only ``DAY``,
          ``WEEK``, ``FORTNIGHT``, and ``MONTH`` are supported.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.ServiceLevelObjective)
    ),
)
_sym_db.RegisterMessage(ServiceLevelObjective)

ServiceLevelIndicator = _reflection.GeneratedProtocolMessageType(
    "ServiceLevelIndicator",
    (_message.Message,),
    dict(
        DESCRIPTOR=_SERVICELEVELINDICATOR,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""A Service-Level Indicator (SLI) describes the "performance" of a
  service. For some services, the SLI is well-defined. In such cases, the
  SLI can be described easily by referencing the well-known SLI and
  providing the needed parameters. Alternatively, a "custom" SLI can be
  defined with a query to the underlying metric store. An SLI is defined
  to be ``good_service / total_service`` over any queried time interval.
  The value of performance always falls into the range
  ``0 <= performance <= 1``. A custom SLI describes how to compute this
  ratio, whether this is by dividing values from a pair of time series,
  cutting a ``Distribution`` into good and bad counts, or counting time
  windows in which the service complies with a criterion. For separation
  of concerns, a single Service-Level Indicator measures performance for
  only one aspect of service quality, such as fraction of successful
  queries or fast-enough queries.
  
  
  Attributes:
      type:
          Service level indicators can be grouped by whether the "unit"
          of service being measured is based on counts of good requests
          or on counts of good time windows
      basic_sli:
          Basic SLI on a well-known service type.
      request_based:
          Request-based SLIs
      windows_based:
          Windows-based SLIs
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.ServiceLevelIndicator)
    ),
)
_sym_db.RegisterMessage(ServiceLevelIndicator)

BasicSli = _reflection.GeneratedProtocolMessageType(
    "BasicSli",
    (_message.Message,),
    dict(
        AvailabilityCriteria=_reflection.GeneratedProtocolMessageType(
            "AvailabilityCriteria",
            (_message.Message,),
            dict(
                DESCRIPTOR=_BASICSLI_AVAILABILITYCRITERIA,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""Future parameters for the availability SLI.
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.BasicSli.AvailabilityCriteria)
            ),
        ),
        LatencyCriteria=_reflection.GeneratedProtocolMessageType(
            "LatencyCriteria",
            (_message.Message,),
            dict(
                DESCRIPTOR=_BASICSLI_LATENCYCRITERIA,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""Parameters for a latency threshold SLI.
    
    
    Attributes:
        threshold:
            Good service is defined to be the count of requests made to
            this service that return in no more than ``threshold``.
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.BasicSli.LatencyCriteria)
            ),
        ),
        DESCRIPTOR=_BASICSLI,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""An SLI measuring performance on a well-known service type. Performance
  will be computed on the basis of pre-defined metrics. The type of the
  ``service_resource`` determines the metrics to use and the
  ``service_resource.labels`` and ``metric_labels`` are used to construct
  a monitoring filter to filter that metric down to just the data relevant
  to this service.
  
  
  Attributes:
      method:
          OPTIONAL: The set of RPCs to which this SLI is relevant.
          Telemetry from other methods will not be used to calculate
          performance for this SLI. If omitted, this SLI applies to all
          the Service's methods. For service types that don't support
          breaking down by method, setting this field will result in an
          error.
      location:
          OPTIONAL: The set of locations to which this SLI is relevant.
          Telemetry from other locations will not be used to calculate
          performance for this SLI. If omitted, this SLI applies to all
          locations in which the Service has activity. For service types
          that don't support breaking down by location, setting this
          field will result in an error.
      version:
          OPTIONAL: The set of API versions to which this SLI is
          relevant. Telemetry from other API versions will not be used
          to calculate performance for this SLI. If omitted, this SLI
          applies to all API versions. For service types that don't
          support breaking down by version, setting this field will
          result in an error.
      sli_criteria:
          This SLI can be evaluated on the basis of availability or
          latency.
      availability:
          Good service is defined to be the count of requests made to
          this service that return successfully.
      latency:
          Good service is defined to be the count of requests made to
          this service that are fast enough with respect to
          ``latency.threshold``.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.BasicSli)
    ),
)
_sym_db.RegisterMessage(BasicSli)
_sym_db.RegisterMessage(BasicSli.AvailabilityCriteria)
_sym_db.RegisterMessage(BasicSli.LatencyCriteria)

Range = _reflection.GeneratedProtocolMessageType(
    "Range",
    (_message.Message,),
    dict(
        DESCRIPTOR=_RANGE,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""Range of numerical values, inclusive of ``min`` and exclusive of
  ``max``. If the open range "< range.max" is desired, set
  ``range.min = -infinity``. If the open range ">= range.min" is desired,
  set ``range.max = infinity``.
  
  
  Attributes:
      min:
          Range minimum.
      max:
          Range maximum.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.Range)
    ),
)
_sym_db.RegisterMessage(Range)

RequestBasedSli = _reflection.GeneratedProtocolMessageType(
    "RequestBasedSli",
    (_message.Message,),
    dict(
        DESCRIPTOR=_REQUESTBASEDSLI,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""Service Level Indicators for which atomic units of service are counted
  directly.
  
  
  Attributes:
      method:
          The means to compute a ratio of ``good_service`` to
          ``total_service``.
      good_total_ratio:
          ``good_total_ratio`` is used when the ratio of
          ``good_service`` to ``total_service`` is computed from two
          ``TimeSeries``.
      distribution_cut:
          ``distribution_cut`` is used when ``good_service`` is a count
          of values aggregated in a ``Distribution`` that fall into a
          good range. The ``total_service`` is the total count of all
          values aggregated in the ``Distribution``.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.RequestBasedSli)
    ),
)
_sym_db.RegisterMessage(RequestBasedSli)

TimeSeriesRatio = _reflection.GeneratedProtocolMessageType(
    "TimeSeriesRatio",
    (_message.Message,),
    dict(
        DESCRIPTOR=_TIMESERIESRATIO,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""A ``TimeSeriesRatio`` specifies two ``TimeSeries`` to use for computing
  the ``good_service / total_service`` ratio. The specified ``TimeSeries``
  must have ``ValueType = DOUBLE`` or ``ValueType = INT64`` and must have
  ``MetricKind = DELTA`` or ``MetricKind = CUMULATIVE``. The
  ``TimeSeriesRatio`` must specify exactly two of good, bad, and total,
  and the relationship ``good_service + bad_service = total_service`` will
  be assumed.
  
  
  Attributes:
      good_service_filter:
          A `monitoring filter
          <https://cloud.google.com/monitoring/api/v3/filters>`__
          specifying a ``TimeSeries`` quantifying good service provided.
          Must have ``ValueType = DOUBLE`` or ``ValueType = INT64`` and
          must have ``MetricKind = DELTA`` or ``MetricKind =
          CUMULATIVE``.
      bad_service_filter:
          A `monitoring filter
          <https://cloud.google.com/monitoring/api/v3/filters>`__
          specifying a ``TimeSeries`` quantifying bad service, either
          demanded service that was not provided or demanded service
          that was of inadequate quality. Must have ``ValueType =
          DOUBLE`` or ``ValueType = INT64`` and must have ``MetricKind =
          DELTA`` or ``MetricKind = CUMULATIVE``.
      total_service_filter:
          A `monitoring filter
          <https://cloud.google.com/monitoring/api/v3/filters>`__
          specifying a ``TimeSeries`` quantifying total demanded
          service. Must have ``ValueType = DOUBLE`` or ``ValueType =
          INT64`` and must have ``MetricKind = DELTA`` or ``MetricKind =
          CUMULATIVE``.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.TimeSeriesRatio)
    ),
)
_sym_db.RegisterMessage(TimeSeriesRatio)

DistributionCut = _reflection.GeneratedProtocolMessageType(
    "DistributionCut",
    (_message.Message,),
    dict(
        DESCRIPTOR=_DISTRIBUTIONCUT,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""A ``DistributionCut`` defines a ``TimeSeries`` and thresholds used for
  measuring good service and total service. The ``TimeSeries`` must have
  ``ValueType = DISTRIBUTION`` and ``MetricKind = DELTA`` or
  ``MetricKind = CUMULATIVE``. The computed ``good_service`` will be the
  count of values x in the ``Distribution`` such that
  ``range.min <= x < range.max``.
  
  
  Attributes:
      distribution_filter:
          A `monitoring filter
          <https://cloud.google.com/monitoring/api/v3/filters>`__
          specifying a ``TimeSeries`` aggregating values. Must have
          ``ValueType = DISTRIBUTION`` and ``MetricKind = DELTA`` or
          ``MetricKind = CUMULATIVE``.
      range:
          Range of values considered "good." For a one-sided range, set
          one bound to an infinite value.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.DistributionCut)
    ),
)
_sym_db.RegisterMessage(DistributionCut)

WindowsBasedSli = _reflection.GeneratedProtocolMessageType(
    "WindowsBasedSli",
    (_message.Message,),
    dict(
        PerformanceThreshold=_reflection.GeneratedProtocolMessageType(
            "PerformanceThreshold",
            (_message.Message,),
            dict(
                DESCRIPTOR=_WINDOWSBASEDSLI_PERFORMANCETHRESHOLD,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""A ``PerformanceThreshold`` is used when each window is good when that
    window has a sufficiently high ``performance``.
    
    
    Attributes:
        type:
            The means, either a request-based SLI or a basic SLI, by which
            to compute performance over a window.
        performance:
            ``RequestBasedSli`` to evaluate to judge window quality.
        basic_sli_performance:
            ``BasicSli`` to evaluate to judge window quality.
        threshold:
            If window ``performance >= threshold``, the window is counted
            as good.
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.WindowsBasedSli.PerformanceThreshold)
            ),
        ),
        MetricRange=_reflection.GeneratedProtocolMessageType(
            "MetricRange",
            (_message.Message,),
            dict(
                DESCRIPTOR=_WINDOWSBASEDSLI_METRICRANGE,
                __module__="google.cloud.monitoring_v3.proto.service_pb2",
                __doc__="""A ``MetricRange`` is used when each window is good when the value x of a
    single ``TimeSeries`` satisfies ``range.min <= x < range.max``. The
    provided ``TimeSeries`` must have ``ValueType = INT64`` or
    ``ValueType = DOUBLE`` and ``MetricKind = GAUGE``.
    
    
    Attributes:
        time_series:
            A `monitoring filter
            <https://cloud.google.com/monitoring/api/v3/filters>`__
            specifying the ``TimeSeries`` to use for evaluating window
            quality.
        range:
            Range of values considered "good." For a one-sided range, set
            one bound to an infinite value.
    """,
                # @@protoc_insertion_point(class_scope:google.monitoring.v3.WindowsBasedSli.MetricRange)
            ),
        ),
        DESCRIPTOR=_WINDOWSBASEDSLI,
        __module__="google.cloud.monitoring_v3.proto.service_pb2",
        __doc__="""A ``WindowsBasedSli`` defines ``good_service`` as the count of time
  windows for which the provided service was of good quality. Criteria for
  determining if service was good are embedded in the
  ``window_criterion``.
  
  
  Attributes:
      window_criterion:
          The criterion to use for evaluating window goodness.
      good_bad_metric_filter:
          A `monitoring filter
          <https://cloud.google.com/monitoring/api/v3/filters>`__
          specifying a ``TimeSeries`` with ``ValueType = BOOL``. The
          window is good if any ``true`` values appear in the window.
      good_total_ratio_threshold:
          A window is good if its ``performance`` is high enough.
      metric_mean_in_range:
          A window is good if the metric's value is in a good range,
          averaged across returned streams.
      metric_sum_in_range:
          A window is good if the metric's value is in a good range,
          summed across returned streams.
      window_period:
          Duration over which window quality is evaluated. Must be an
          integer fraction of a day and at least ``60s``.
  """,
        # @@protoc_insertion_point(class_scope:google.monitoring.v3.WindowsBasedSli)
    ),
)
_sym_db.RegisterMessage(WindowsBasedSli)
_sym_db.RegisterMessage(WindowsBasedSli.PerformanceThreshold)
_sym_db.RegisterMessage(WindowsBasedSli.MetricRange)


DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
