// Copyright 2021 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 // // http://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. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.25.0-devel // protoc v3.13.0 // source: google/monitoring/v3/service.proto package monitoring import ( reflect "reflect" sync "sync" proto "github.com/golang/protobuf/proto" _ "google.golang.org/genproto/googleapis/api/annotations" calendarperiod "google.golang.org/genproto/googleapis/type/calendarperiod" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" _ "google.golang.org/protobuf/types/known/timestamppb" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) // This is a compile-time assertion that a sufficiently up-to-date version // of the legacy proto package is being used. const _ = proto.ProtoPackageIsVersion4 // `ServiceLevelObjective.View` determines what form of // `ServiceLevelObjective` is returned from `GetServiceLevelObjective`, // `ListServiceLevelObjectives`, and `ListServiceLevelObjectiveVersions` RPCs. type ServiceLevelObjective_View int32 const ( // Same as FULL. ServiceLevelObjective_VIEW_UNSPECIFIED ServiceLevelObjective_View = 0 // Return the embedded `ServiceLevelIndicator` in the form in which it was // defined. If it was defined using a `BasicSli`, return that `BasicSli`. ServiceLevelObjective_FULL ServiceLevelObjective_View = 2 // For `ServiceLevelIndicator`s using `BasicSli` articulation, instead // return the `ServiceLevelIndicator` with its mode of computation fully // spelled out as a `RequestBasedSli`. For `ServiceLevelIndicator`s using // `RequestBasedSli` or `WindowsBasedSli`, return the // `ServiceLevelIndicator` as it was provided. ServiceLevelObjective_EXPLICIT ServiceLevelObjective_View = 1 ) // Enum value maps for ServiceLevelObjective_View. var ( ServiceLevelObjective_View_name = map[int32]string{ 0: "VIEW_UNSPECIFIED", 2: "FULL", 1: "EXPLICIT", } ServiceLevelObjective_View_value = map[string]int32{ "VIEW_UNSPECIFIED": 0, "FULL": 2, "EXPLICIT": 1, } ) func (x ServiceLevelObjective_View) Enum() *ServiceLevelObjective_View { p := new(ServiceLevelObjective_View) *p = x return p } func (x ServiceLevelObjective_View) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (ServiceLevelObjective_View) Descriptor() protoreflect.EnumDescriptor { return file_google_monitoring_v3_service_proto_enumTypes[0].Descriptor() } func (ServiceLevelObjective_View) Type() protoreflect.EnumType { return &file_google_monitoring_v3_service_proto_enumTypes[0] } func (x ServiceLevelObjective_View) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Use ServiceLevelObjective_View.Descriptor instead. func (ServiceLevelObjective_View) EnumDescriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{1, 0} } // 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 // Cloud Monitoring, a `Service` acts as the root resource under which // operational aspects of the service are accessible. type Service struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Resource name for this Service. The format is: // // projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name used for UI elements listing this Service. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // REQUIRED. Service-identifying atoms specifying the underlying service. // // Types that are assignable to Identifier: // *Service_Custom_ // *Service_AppEngine_ // *Service_CloudEndpoints_ // *Service_ClusterIstio_ // *Service_MeshIstio_ // *Service_IstioCanonicalService_ Identifier isService_Identifier `protobuf_oneof:"identifier"` // Configuration for how to query telemetry on a Service. Telemetry *Service_Telemetry `protobuf:"bytes,13,opt,name=telemetry,proto3" json:"telemetry,omitempty"` } func (x *Service) Reset() { *x = Service{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service) ProtoMessage() {} func (x *Service) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service.ProtoReflect.Descriptor instead. func (*Service) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0} } func (x *Service) GetName() string { if x != nil { return x.Name } return "" } func (x *Service) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (m *Service) GetIdentifier() isService_Identifier { if m != nil { return m.Identifier } return nil } func (x *Service) GetCustom() *Service_Custom { if x, ok := x.GetIdentifier().(*Service_Custom_); ok { return x.Custom } return nil } func (x *Service) GetAppEngine() *Service_AppEngine { if x, ok := x.GetIdentifier().(*Service_AppEngine_); ok { return x.AppEngine } return nil } func (x *Service) GetCloudEndpoints() *Service_CloudEndpoints { if x, ok := x.GetIdentifier().(*Service_CloudEndpoints_); ok { return x.CloudEndpoints } return nil } func (x *Service) GetClusterIstio() *Service_ClusterIstio { if x, ok := x.GetIdentifier().(*Service_ClusterIstio_); ok { return x.ClusterIstio } return nil } func (x *Service) GetMeshIstio() *Service_MeshIstio { if x, ok := x.GetIdentifier().(*Service_MeshIstio_); ok { return x.MeshIstio } return nil } func (x *Service) GetIstioCanonicalService() *Service_IstioCanonicalService { if x, ok := x.GetIdentifier().(*Service_IstioCanonicalService_); ok { return x.IstioCanonicalService } return nil } func (x *Service) GetTelemetry() *Service_Telemetry { if x != nil { return x.Telemetry } return nil } type isService_Identifier interface { isService_Identifier() } type Service_Custom_ struct { // Custom service type. Custom *Service_Custom `protobuf:"bytes,6,opt,name=custom,proto3,oneof"` } type Service_AppEngine_ struct { // Type used for App Engine services. AppEngine *Service_AppEngine `protobuf:"bytes,7,opt,name=app_engine,json=appEngine,proto3,oneof"` } type Service_CloudEndpoints_ struct { // Type used for Cloud Endpoints services. CloudEndpoints *Service_CloudEndpoints `protobuf:"bytes,8,opt,name=cloud_endpoints,json=cloudEndpoints,proto3,oneof"` } type Service_ClusterIstio_ struct { // Type used for Istio services that live in a Kubernetes cluster. ClusterIstio *Service_ClusterIstio `protobuf:"bytes,9,opt,name=cluster_istio,json=clusterIstio,proto3,oneof"` } type Service_MeshIstio_ struct { // Type used for Istio services scoped to an Istio mesh. MeshIstio *Service_MeshIstio `protobuf:"bytes,10,opt,name=mesh_istio,json=meshIstio,proto3,oneof"` } type Service_IstioCanonicalService_ struct { // Type used for canonical services scoped to an Istio mesh. // Metrics for Istio are // [documented here](https://istio.io/latest/docs/reference/config/metrics/) IstioCanonicalService *Service_IstioCanonicalService `protobuf:"bytes,11,opt,name=istio_canonical_service,json=istioCanonicalService,proto3,oneof"` } func (*Service_Custom_) isService_Identifier() {} func (*Service_AppEngine_) isService_Identifier() {} func (*Service_CloudEndpoints_) isService_Identifier() {} func (*Service_ClusterIstio_) isService_Identifier() {} func (*Service_MeshIstio_) isService_Identifier() {} func (*Service_IstioCanonicalService_) isService_Identifier() {} // 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." type ServiceLevelObjective struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Resource name for this `ServiceLevelObjective`. The format is: // // projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Name used for UI elements listing this SLO. DisplayName string `protobuf:"bytes,11,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // 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. ServiceLevelIndicator *ServiceLevelIndicator `protobuf:"bytes,3,opt,name=service_level_indicator,json=serviceLevelIndicator,proto3" json:"service_level_indicator,omitempty"` // The fraction of service that must be good in order for this objective to be // met. `0 < goal <= 0.999`. Goal float64 `protobuf:"fixed64,4,opt,name=goal,proto3" json:"goal,omitempty"` // The time period over which the objective will be evaluated. // // Types that are assignable to Period: // *ServiceLevelObjective_RollingPeriod // *ServiceLevelObjective_CalendarPeriod Period isServiceLevelObjective_Period `protobuf_oneof:"period"` } func (x *ServiceLevelObjective) Reset() { *x = ServiceLevelObjective{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServiceLevelObjective) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServiceLevelObjective) ProtoMessage() {} func (x *ServiceLevelObjective) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ServiceLevelObjective.ProtoReflect.Descriptor instead. func (*ServiceLevelObjective) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{1} } func (x *ServiceLevelObjective) GetName() string { if x != nil { return x.Name } return "" } func (x *ServiceLevelObjective) GetDisplayName() string { if x != nil { return x.DisplayName } return "" } func (x *ServiceLevelObjective) GetServiceLevelIndicator() *ServiceLevelIndicator { if x != nil { return x.ServiceLevelIndicator } return nil } func (x *ServiceLevelObjective) GetGoal() float64 { if x != nil { return x.Goal } return 0 } func (m *ServiceLevelObjective) GetPeriod() isServiceLevelObjective_Period { if m != nil { return m.Period } return nil } func (x *ServiceLevelObjective) GetRollingPeriod() *durationpb.Duration { if x, ok := x.GetPeriod().(*ServiceLevelObjective_RollingPeriod); ok { return x.RollingPeriod } return nil } func (x *ServiceLevelObjective) GetCalendarPeriod() calendarperiod.CalendarPeriod { if x, ok := x.GetPeriod().(*ServiceLevelObjective_CalendarPeriod); ok { return x.CalendarPeriod } return calendarperiod.CalendarPeriod_CALENDAR_PERIOD_UNSPECIFIED } type isServiceLevelObjective_Period interface { isServiceLevelObjective_Period() } type ServiceLevelObjective_RollingPeriod struct { // A rolling time period, semantically "in the past ``". // Must be an integer multiple of 1 day no larger than 30 days. RollingPeriod *durationpb.Duration `protobuf:"bytes,5,opt,name=rolling_period,json=rollingPeriod,proto3,oneof"` } type ServiceLevelObjective_CalendarPeriod struct { // A calendar period, semantically "since the start of the current // ``". At this time, only `DAY`, `WEEK`, `FORTNIGHT`, and // `MONTH` are supported. CalendarPeriod calendarperiod.CalendarPeriod `protobuf:"varint,6,opt,name=calendar_period,json=calendarPeriod,proto3,enum=google.type.CalendarPeriod,oneof"` } func (*ServiceLevelObjective_RollingPeriod) isServiceLevelObjective_Period() {} func (*ServiceLevelObjective_CalendarPeriod) isServiceLevelObjective_Period() {} // 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. type ServiceLevelIndicator struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 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 // // Types that are assignable to Type: // *ServiceLevelIndicator_BasicSli // *ServiceLevelIndicator_RequestBased // *ServiceLevelIndicator_WindowsBased Type isServiceLevelIndicator_Type `protobuf_oneof:"type"` } func (x *ServiceLevelIndicator) Reset() { *x = ServiceLevelIndicator{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ServiceLevelIndicator) String() string { return protoimpl.X.MessageStringOf(x) } func (*ServiceLevelIndicator) ProtoMessage() {} func (x *ServiceLevelIndicator) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ServiceLevelIndicator.ProtoReflect.Descriptor instead. func (*ServiceLevelIndicator) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{2} } func (m *ServiceLevelIndicator) GetType() isServiceLevelIndicator_Type { if m != nil { return m.Type } return nil } func (x *ServiceLevelIndicator) GetBasicSli() *BasicSli { if x, ok := x.GetType().(*ServiceLevelIndicator_BasicSli); ok { return x.BasicSli } return nil } func (x *ServiceLevelIndicator) GetRequestBased() *RequestBasedSli { if x, ok := x.GetType().(*ServiceLevelIndicator_RequestBased); ok { return x.RequestBased } return nil } func (x *ServiceLevelIndicator) GetWindowsBased() *WindowsBasedSli { if x, ok := x.GetType().(*ServiceLevelIndicator_WindowsBased); ok { return x.WindowsBased } return nil } type isServiceLevelIndicator_Type interface { isServiceLevelIndicator_Type() } type ServiceLevelIndicator_BasicSli struct { // Basic SLI on a well-known service type. BasicSli *BasicSli `protobuf:"bytes,4,opt,name=basic_sli,json=basicSli,proto3,oneof"` } type ServiceLevelIndicator_RequestBased struct { // Request-based SLIs RequestBased *RequestBasedSli `protobuf:"bytes,1,opt,name=request_based,json=requestBased,proto3,oneof"` } type ServiceLevelIndicator_WindowsBased struct { // Windows-based SLIs WindowsBased *WindowsBasedSli `protobuf:"bytes,2,opt,name=windows_based,json=windowsBased,proto3,oneof"` } func (*ServiceLevelIndicator_BasicSli) isServiceLevelIndicator_Type() {} func (*ServiceLevelIndicator_RequestBased) isServiceLevelIndicator_Type() {} func (*ServiceLevelIndicator_WindowsBased) isServiceLevelIndicator_Type() {} // 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. type BasicSli struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 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. Method []string `protobuf:"bytes,7,rep,name=method,proto3" json:"method,omitempty"` // 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. Location []string `protobuf:"bytes,8,rep,name=location,proto3" json:"location,omitempty"` // 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. Version []string `protobuf:"bytes,9,rep,name=version,proto3" json:"version,omitempty"` // This SLI can be evaluated on the basis of availability or latency. // // Types that are assignable to SliCriteria: // *BasicSli_Availability // *BasicSli_Latency SliCriteria isBasicSli_SliCriteria `protobuf_oneof:"sli_criteria"` } func (x *BasicSli) Reset() { *x = BasicSli{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BasicSli) String() string { return protoimpl.X.MessageStringOf(x) } func (*BasicSli) ProtoMessage() {} func (x *BasicSli) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BasicSli.ProtoReflect.Descriptor instead. func (*BasicSli) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{3} } func (x *BasicSli) GetMethod() []string { if x != nil { return x.Method } return nil } func (x *BasicSli) GetLocation() []string { if x != nil { return x.Location } return nil } func (x *BasicSli) GetVersion() []string { if x != nil { return x.Version } return nil } func (m *BasicSli) GetSliCriteria() isBasicSli_SliCriteria { if m != nil { return m.SliCriteria } return nil } func (x *BasicSli) GetAvailability() *BasicSli_AvailabilityCriteria { if x, ok := x.GetSliCriteria().(*BasicSli_Availability); ok { return x.Availability } return nil } func (x *BasicSli) GetLatency() *BasicSli_LatencyCriteria { if x, ok := x.GetSliCriteria().(*BasicSli_Latency); ok { return x.Latency } return nil } type isBasicSli_SliCriteria interface { isBasicSli_SliCriteria() } type BasicSli_Availability struct { // Good service is defined to be the count of requests made to this service // that return successfully. Availability *BasicSli_AvailabilityCriteria `protobuf:"bytes,2,opt,name=availability,proto3,oneof"` } type BasicSli_Latency struct { // Good service is defined to be the count of requests made to this service // that are fast enough with respect to `latency.threshold`. Latency *BasicSli_LatencyCriteria `protobuf:"bytes,3,opt,name=latency,proto3,oneof"` } func (*BasicSli_Availability) isBasicSli_SliCriteria() {} func (*BasicSli_Latency) isBasicSli_SliCriteria() {} // 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`. type Range struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Range minimum. Min float64 `protobuf:"fixed64,1,opt,name=min,proto3" json:"min,omitempty"` // Range maximum. Max float64 `protobuf:"fixed64,2,opt,name=max,proto3" json:"max,omitempty"` } func (x *Range) Reset() { *x = Range{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Range) String() string { return protoimpl.X.MessageStringOf(x) } func (*Range) ProtoMessage() {} func (x *Range) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Range.ProtoReflect.Descriptor instead. func (*Range) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{4} } func (x *Range) GetMin() float64 { if x != nil { return x.Min } return 0 } func (x *Range) GetMax() float64 { if x != nil { return x.Max } return 0 } // Service Level Indicators for which atomic units of service are counted // directly. type RequestBasedSli struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The means to compute a ratio of `good_service` to `total_service`. // // Types that are assignable to Method: // *RequestBasedSli_GoodTotalRatio // *RequestBasedSli_DistributionCut Method isRequestBasedSli_Method `protobuf_oneof:"method"` } func (x *RequestBasedSli) Reset() { *x = RequestBasedSli{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *RequestBasedSli) String() string { return protoimpl.X.MessageStringOf(x) } func (*RequestBasedSli) ProtoMessage() {} func (x *RequestBasedSli) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use RequestBasedSli.ProtoReflect.Descriptor instead. func (*RequestBasedSli) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{5} } func (m *RequestBasedSli) GetMethod() isRequestBasedSli_Method { if m != nil { return m.Method } return nil } func (x *RequestBasedSli) GetGoodTotalRatio() *TimeSeriesRatio { if x, ok := x.GetMethod().(*RequestBasedSli_GoodTotalRatio); ok { return x.GoodTotalRatio } return nil } func (x *RequestBasedSli) GetDistributionCut() *DistributionCut { if x, ok := x.GetMethod().(*RequestBasedSli_DistributionCut); ok { return x.DistributionCut } return nil } type isRequestBasedSli_Method interface { isRequestBasedSli_Method() } type RequestBasedSli_GoodTotalRatio struct { // `good_total_ratio` is used when the ratio of `good_service` to // `total_service` is computed from two `TimeSeries`. GoodTotalRatio *TimeSeriesRatio `protobuf:"bytes,1,opt,name=good_total_ratio,json=goodTotalRatio,proto3,oneof"` } type RequestBasedSli_DistributionCut struct { // `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`. DistributionCut *DistributionCut `protobuf:"bytes,3,opt,name=distribution_cut,json=distributionCut,proto3,oneof"` } func (*RequestBasedSli_GoodTotalRatio) isRequestBasedSli_Method() {} func (*RequestBasedSli_DistributionCut) isRequestBasedSli_Method() {} // 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. type TimeSeriesRatio struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 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`. GoodServiceFilter string `protobuf:"bytes,4,opt,name=good_service_filter,json=goodServiceFilter,proto3" json:"good_service_filter,omitempty"` // 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`. BadServiceFilter string `protobuf:"bytes,5,opt,name=bad_service_filter,json=badServiceFilter,proto3" json:"bad_service_filter,omitempty"` // 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`. TotalServiceFilter string `protobuf:"bytes,6,opt,name=total_service_filter,json=totalServiceFilter,proto3" json:"total_service_filter,omitempty"` } func (x *TimeSeriesRatio) Reset() { *x = TimeSeriesRatio{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *TimeSeriesRatio) String() string { return protoimpl.X.MessageStringOf(x) } func (*TimeSeriesRatio) ProtoMessage() {} func (x *TimeSeriesRatio) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use TimeSeriesRatio.ProtoReflect.Descriptor instead. func (*TimeSeriesRatio) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{6} } func (x *TimeSeriesRatio) GetGoodServiceFilter() string { if x != nil { return x.GoodServiceFilter } return "" } func (x *TimeSeriesRatio) GetBadServiceFilter() string { if x != nil { return x.BadServiceFilter } return "" } func (x *TimeSeriesRatio) GetTotalServiceFilter() string { if x != nil { return x.TotalServiceFilter } return "" } // 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`. type DistributionCut struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 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`. DistributionFilter string `protobuf:"bytes,4,opt,name=distribution_filter,json=distributionFilter,proto3" json:"distribution_filter,omitempty"` // Range of values considered "good." For a one-sided range, set one bound to // an infinite value. Range *Range `protobuf:"bytes,5,opt,name=range,proto3" json:"range,omitempty"` } func (x *DistributionCut) Reset() { *x = DistributionCut{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DistributionCut) String() string { return protoimpl.X.MessageStringOf(x) } func (*DistributionCut) ProtoMessage() {} func (x *DistributionCut) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DistributionCut.ProtoReflect.Descriptor instead. func (*DistributionCut) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{7} } func (x *DistributionCut) GetDistributionFilter() string { if x != nil { return x.DistributionFilter } return "" } func (x *DistributionCut) GetRange() *Range { if x != nil { return x.Range } return nil } // 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`. type WindowsBasedSli struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The criterion to use for evaluating window goodness. // // Types that are assignable to WindowCriterion: // *WindowsBasedSli_GoodBadMetricFilter // *WindowsBasedSli_GoodTotalRatioThreshold // *WindowsBasedSli_MetricMeanInRange // *WindowsBasedSli_MetricSumInRange WindowCriterion isWindowsBasedSli_WindowCriterion `protobuf_oneof:"window_criterion"` // Duration over which window quality is evaluated. Must be an integer // fraction of a day and at least `60s`. WindowPeriod *durationpb.Duration `protobuf:"bytes,4,opt,name=window_period,json=windowPeriod,proto3" json:"window_period,omitempty"` } func (x *WindowsBasedSli) Reset() { *x = WindowsBasedSli{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WindowsBasedSli) String() string { return protoimpl.X.MessageStringOf(x) } func (*WindowsBasedSli) ProtoMessage() {} func (x *WindowsBasedSli) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WindowsBasedSli.ProtoReflect.Descriptor instead. func (*WindowsBasedSli) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{8} } func (m *WindowsBasedSli) GetWindowCriterion() isWindowsBasedSli_WindowCriterion { if m != nil { return m.WindowCriterion } return nil } func (x *WindowsBasedSli) GetGoodBadMetricFilter() string { if x, ok := x.GetWindowCriterion().(*WindowsBasedSli_GoodBadMetricFilter); ok { return x.GoodBadMetricFilter } return "" } func (x *WindowsBasedSli) GetGoodTotalRatioThreshold() *WindowsBasedSli_PerformanceThreshold { if x, ok := x.GetWindowCriterion().(*WindowsBasedSli_GoodTotalRatioThreshold); ok { return x.GoodTotalRatioThreshold } return nil } func (x *WindowsBasedSli) GetMetricMeanInRange() *WindowsBasedSli_MetricRange { if x, ok := x.GetWindowCriterion().(*WindowsBasedSli_MetricMeanInRange); ok { return x.MetricMeanInRange } return nil } func (x *WindowsBasedSli) GetMetricSumInRange() *WindowsBasedSli_MetricRange { if x, ok := x.GetWindowCriterion().(*WindowsBasedSli_MetricSumInRange); ok { return x.MetricSumInRange } return nil } func (x *WindowsBasedSli) GetWindowPeriod() *durationpb.Duration { if x != nil { return x.WindowPeriod } return nil } type isWindowsBasedSli_WindowCriterion interface { isWindowsBasedSli_WindowCriterion() } type WindowsBasedSli_GoodBadMetricFilter struct { // 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. GoodBadMetricFilter string `protobuf:"bytes,5,opt,name=good_bad_metric_filter,json=goodBadMetricFilter,proto3,oneof"` } type WindowsBasedSli_GoodTotalRatioThreshold struct { // A window is good if its `performance` is high enough. GoodTotalRatioThreshold *WindowsBasedSli_PerformanceThreshold `protobuf:"bytes,2,opt,name=good_total_ratio_threshold,json=goodTotalRatioThreshold,proto3,oneof"` } type WindowsBasedSli_MetricMeanInRange struct { // A window is good if the metric's value is in a good range, averaged // across returned streams. MetricMeanInRange *WindowsBasedSli_MetricRange `protobuf:"bytes,6,opt,name=metric_mean_in_range,json=metricMeanInRange,proto3,oneof"` } type WindowsBasedSli_MetricSumInRange struct { // A window is good if the metric's value is in a good range, summed across // returned streams. MetricSumInRange *WindowsBasedSli_MetricRange `protobuf:"bytes,7,opt,name=metric_sum_in_range,json=metricSumInRange,proto3,oneof"` } func (*WindowsBasedSli_GoodBadMetricFilter) isWindowsBasedSli_WindowCriterion() {} func (*WindowsBasedSli_GoodTotalRatioThreshold) isWindowsBasedSli_WindowCriterion() {} func (*WindowsBasedSli_MetricMeanInRange) isWindowsBasedSli_WindowCriterion() {} func (*WindowsBasedSli_MetricSumInRange) isWindowsBasedSli_WindowCriterion() {} // Custom view of service telemetry. Currently a place-holder pending final // design. type Service_Custom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Service_Custom) Reset() { *x = Service_Custom{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service_Custom) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service_Custom) ProtoMessage() {} func (x *Service_Custom) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service_Custom.ProtoReflect.Descriptor instead. func (*Service_Custom) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 0} } // App Engine service. Learn more at https://cloud.google.com/appengine. type Service_AppEngine struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 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/monitoring/api/resources#tag_gae_app ModuleId string `protobuf:"bytes,1,opt,name=module_id,json=moduleId,proto3" json:"module_id,omitempty"` } func (x *Service_AppEngine) Reset() { *x = Service_AppEngine{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service_AppEngine) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service_AppEngine) ProtoMessage() {} func (x *Service_AppEngine) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service_AppEngine.ProtoReflect.Descriptor instead. func (*Service_AppEngine) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 1} } func (x *Service_AppEngine) GetModuleId() string { if x != nil { return x.ModuleId } return "" } // Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints. type Service_CloudEndpoints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // 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 Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` } func (x *Service_CloudEndpoints) Reset() { *x = Service_CloudEndpoints{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service_CloudEndpoints) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service_CloudEndpoints) ProtoMessage() {} func (x *Service_CloudEndpoints) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service_CloudEndpoints.ProtoReflect.Descriptor instead. func (*Service_CloudEndpoints) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 2} } func (x *Service_CloudEndpoints) GetService() string { if x != nil { return x.Service } return "" } // Istio service scoped to a single Kubernetes cluster. Learn more at // https://istio.io. Clusters running OSS Istio will have their services // ingested as this type. type Service_ClusterIstio struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The location of the Kubernetes cluster in which this Istio service is // defined. Corresponds to the `location` resource label in `k8s_cluster` // resources. Location string `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` // The name of the Kubernetes cluster in which this Istio service is // defined. Corresponds to the `cluster_name` resource label in // `k8s_cluster` resources. ClusterName string `protobuf:"bytes,2,opt,name=cluster_name,json=clusterName,proto3" json:"cluster_name,omitempty"` // The namespace of the Istio service underlying this service. Corresponds // to the `destination_service_namespace` metric label in Istio metrics. ServiceNamespace string `protobuf:"bytes,3,opt,name=service_namespace,json=serviceNamespace,proto3" json:"service_namespace,omitempty"` // The name of the Istio service underlying this service. Corresponds to the // `destination_service_name` metric label in Istio metrics. ServiceName string `protobuf:"bytes,4,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` } func (x *Service_ClusterIstio) Reset() { *x = Service_ClusterIstio{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service_ClusterIstio) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service_ClusterIstio) ProtoMessage() {} func (x *Service_ClusterIstio) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service_ClusterIstio.ProtoReflect.Descriptor instead. func (*Service_ClusterIstio) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 3} } func (x *Service_ClusterIstio) GetLocation() string { if x != nil { return x.Location } return "" } func (x *Service_ClusterIstio) GetClusterName() string { if x != nil { return x.ClusterName } return "" } func (x *Service_ClusterIstio) GetServiceNamespace() string { if x != nil { return x.ServiceNamespace } return "" } func (x *Service_ClusterIstio) GetServiceName() string { if x != nil { return x.ServiceName } return "" } // Istio service scoped to an Istio mesh. Anthos clusters running ASM < 1.6.8 // will have their services ingested as this type. type Service_MeshIstio struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Identifier for the mesh in which this Istio service is defined. // Corresponds to the `mesh_uid` metric label in Istio metrics. MeshUid string `protobuf:"bytes,1,opt,name=mesh_uid,json=meshUid,proto3" json:"mesh_uid,omitempty"` // The namespace of the Istio service underlying this service. Corresponds // to the `destination_service_namespace` metric label in Istio metrics. ServiceNamespace string `protobuf:"bytes,3,opt,name=service_namespace,json=serviceNamespace,proto3" json:"service_namespace,omitempty"` // The name of the Istio service underlying this service. Corresponds to the // `destination_service_name` metric label in Istio metrics. ServiceName string `protobuf:"bytes,4,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` } func (x *Service_MeshIstio) Reset() { *x = Service_MeshIstio{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service_MeshIstio) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service_MeshIstio) ProtoMessage() {} func (x *Service_MeshIstio) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service_MeshIstio.ProtoReflect.Descriptor instead. func (*Service_MeshIstio) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 4} } func (x *Service_MeshIstio) GetMeshUid() string { if x != nil { return x.MeshUid } return "" } func (x *Service_MeshIstio) GetServiceNamespace() string { if x != nil { return x.ServiceNamespace } return "" } func (x *Service_MeshIstio) GetServiceName() string { if x != nil { return x.ServiceName } return "" } // Canonical service scoped to an Istio mesh. Anthos clusters running ASM >= // 1.6.8 will have their services ingested as this type. type Service_IstioCanonicalService struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Identifier for the Istio mesh in which this canonical service is defined. // Corresponds to the `mesh_uid` metric label in // [Istio metrics](https://cloud.google.com/monitoring/api/metrics_istio). MeshUid string `protobuf:"bytes,1,opt,name=mesh_uid,json=meshUid,proto3" json:"mesh_uid,omitempty"` // The namespace of the canonical service underlying this service. // Corresponds to the `destination_canonical_service_namespace` metric // label in [Istio // metrics](https://cloud.google.com/monitoring/api/metrics_istio). CanonicalServiceNamespace string `protobuf:"bytes,3,opt,name=canonical_service_namespace,json=canonicalServiceNamespace,proto3" json:"canonical_service_namespace,omitempty"` // The name of the canonical service underlying this service. // Corresponds to the `destination_canonical_service_name` metric label in // label in [Istio // metrics](https://cloud.google.com/monitoring/api/metrics_istio). CanonicalService string `protobuf:"bytes,4,opt,name=canonical_service,json=canonicalService,proto3" json:"canonical_service,omitempty"` } func (x *Service_IstioCanonicalService) Reset() { *x = Service_IstioCanonicalService{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service_IstioCanonicalService) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service_IstioCanonicalService) ProtoMessage() {} func (x *Service_IstioCanonicalService) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service_IstioCanonicalService.ProtoReflect.Descriptor instead. func (*Service_IstioCanonicalService) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 5} } func (x *Service_IstioCanonicalService) GetMeshUid() string { if x != nil { return x.MeshUid } return "" } func (x *Service_IstioCanonicalService) GetCanonicalServiceNamespace() string { if x != nil { return x.CanonicalServiceNamespace } return "" } func (x *Service_IstioCanonicalService) GetCanonicalService() string { if x != nil { return x.CanonicalService } return "" } // Configuration for how to query telemetry on a Service. type Service_Telemetry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The full name of the resource that defines this service. Formatted as // described in https://cloud.google.com/apis/design/resource_names. ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` } func (x *Service_Telemetry) Reset() { *x = Service_Telemetry{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Service_Telemetry) String() string { return protoimpl.X.MessageStringOf(x) } func (*Service_Telemetry) ProtoMessage() {} func (x *Service_Telemetry) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Service_Telemetry.ProtoReflect.Descriptor instead. func (*Service_Telemetry) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{0, 6} } func (x *Service_Telemetry) GetResourceName() string { if x != nil { return x.ResourceName } return "" } // Future parameters for the availability SLI. type BasicSli_AvailabilityCriteria struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *BasicSli_AvailabilityCriteria) Reset() { *x = BasicSli_AvailabilityCriteria{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BasicSli_AvailabilityCriteria) String() string { return protoimpl.X.MessageStringOf(x) } func (*BasicSli_AvailabilityCriteria) ProtoMessage() {} func (x *BasicSli_AvailabilityCriteria) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BasicSli_AvailabilityCriteria.ProtoReflect.Descriptor instead. func (*BasicSli_AvailabilityCriteria) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{3, 0} } // Parameters for a latency threshold SLI. type BasicSli_LatencyCriteria struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Good service is defined to be the count of requests made to this service // that return in no more than `threshold`. Threshold *durationpb.Duration `protobuf:"bytes,3,opt,name=threshold,proto3" json:"threshold,omitempty"` } func (x *BasicSli_LatencyCriteria) Reset() { *x = BasicSli_LatencyCriteria{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *BasicSli_LatencyCriteria) String() string { return protoimpl.X.MessageStringOf(x) } func (*BasicSli_LatencyCriteria) ProtoMessage() {} func (x *BasicSli_LatencyCriteria) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use BasicSli_LatencyCriteria.ProtoReflect.Descriptor instead. func (*BasicSli_LatencyCriteria) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{3, 1} } func (x *BasicSli_LatencyCriteria) GetThreshold() *durationpb.Duration { if x != nil { return x.Threshold } return nil } // A `PerformanceThreshold` is used when each window is good when that window // has a sufficiently high `performance`. type WindowsBasedSli_PerformanceThreshold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The means, either a request-based SLI or a basic SLI, by which to compute // performance over a window. // // Types that are assignable to Type: // *WindowsBasedSli_PerformanceThreshold_Performance // *WindowsBasedSli_PerformanceThreshold_BasicSliPerformance Type isWindowsBasedSli_PerformanceThreshold_Type `protobuf_oneof:"type"` // If window `performance >= threshold`, the window is counted as good. Threshold float64 `protobuf:"fixed64,2,opt,name=threshold,proto3" json:"threshold,omitempty"` } func (x *WindowsBasedSli_PerformanceThreshold) Reset() { *x = WindowsBasedSli_PerformanceThreshold{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WindowsBasedSli_PerformanceThreshold) String() string { return protoimpl.X.MessageStringOf(x) } func (*WindowsBasedSli_PerformanceThreshold) ProtoMessage() {} func (x *WindowsBasedSli_PerformanceThreshold) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WindowsBasedSli_PerformanceThreshold.ProtoReflect.Descriptor instead. func (*WindowsBasedSli_PerformanceThreshold) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{8, 0} } func (m *WindowsBasedSli_PerformanceThreshold) GetType() isWindowsBasedSli_PerformanceThreshold_Type { if m != nil { return m.Type } return nil } func (x *WindowsBasedSli_PerformanceThreshold) GetPerformance() *RequestBasedSli { if x, ok := x.GetType().(*WindowsBasedSli_PerformanceThreshold_Performance); ok { return x.Performance } return nil } func (x *WindowsBasedSli_PerformanceThreshold) GetBasicSliPerformance() *BasicSli { if x, ok := x.GetType().(*WindowsBasedSli_PerformanceThreshold_BasicSliPerformance); ok { return x.BasicSliPerformance } return nil } func (x *WindowsBasedSli_PerformanceThreshold) GetThreshold() float64 { if x != nil { return x.Threshold } return 0 } type isWindowsBasedSli_PerformanceThreshold_Type interface { isWindowsBasedSli_PerformanceThreshold_Type() } type WindowsBasedSli_PerformanceThreshold_Performance struct { // `RequestBasedSli` to evaluate to judge window quality. Performance *RequestBasedSli `protobuf:"bytes,1,opt,name=performance,proto3,oneof"` } type WindowsBasedSli_PerformanceThreshold_BasicSliPerformance struct { // `BasicSli` to evaluate to judge window quality. BasicSliPerformance *BasicSli `protobuf:"bytes,3,opt,name=basic_sli_performance,json=basicSliPerformance,proto3,oneof"` } func (*WindowsBasedSli_PerformanceThreshold_Performance) isWindowsBasedSli_PerformanceThreshold_Type() { } func (*WindowsBasedSli_PerformanceThreshold_BasicSliPerformance) isWindowsBasedSli_PerformanceThreshold_Type() { } // 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`. type WindowsBasedSli_MetricRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters) // specifying the `TimeSeries` to use for evaluating window quality. TimeSeries string `protobuf:"bytes,1,opt,name=time_series,json=timeSeries,proto3" json:"time_series,omitempty"` // Range of values considered "good." For a one-sided range, set one bound // to an infinite value. Range *Range `protobuf:"bytes,4,opt,name=range,proto3" json:"range,omitempty"` } func (x *WindowsBasedSli_MetricRange) Reset() { *x = WindowsBasedSli_MetricRange{} if protoimpl.UnsafeEnabled { mi := &file_google_monitoring_v3_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *WindowsBasedSli_MetricRange) String() string { return protoimpl.X.MessageStringOf(x) } func (*WindowsBasedSli_MetricRange) ProtoMessage() {} func (x *WindowsBasedSli_MetricRange) ProtoReflect() protoreflect.Message { mi := &file_google_monitoring_v3_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use WindowsBasedSli_MetricRange.ProtoReflect.Descriptor instead. func (*WindowsBasedSli_MetricRange) Descriptor() ([]byte, []int) { return file_google_monitoring_v3_service_proto_rawDescGZIP(), []int{8, 1} } func (x *WindowsBasedSli_MetricRange) GetTimeSeries() string { if x != nil { return x.TimeSeries } return "" } func (x *WindowsBasedSli_MetricRange) GetRange() *Range { if x != nil { return x.Range } return nil } var File_google_monitoring_v3_service_proto protoreflect.FileDescriptor var file_google_monitoring_v3_service_proto_rawDesc = []byte{ 0x0a, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfa, 0x0a, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x00, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x48, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x70, 0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x57, 0x0a, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x12, 0x48, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x68, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x68, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x12, 0x6d, 0x0a, 0x17, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x5f, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x15, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x1a, 0x08, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x1a, 0x28, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x1a, 0x2a, 0x0a, 0x0e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x9d, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x76, 0x0a, 0x09, 0x4d, 0x65, 0x73, 0x68, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x68, 0x55, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x9f, 0x01, 0x0a, 0x15, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x68, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x68, 0x55, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x1b, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x30, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x3a, 0xa7, 0x01, 0xea, 0x41, 0xa3, 0x01, 0x0a, 0x21, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x12, 0x2f, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x12, 0x23, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x12, 0x01, 0x2a, 0x42, 0x0c, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xe0, 0x05, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x63, 0x0a, 0x17, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x15, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x0e, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x46, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x34, 0x0a, 0x04, 0x56, 0x69, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x10, 0x01, 0x3a, 0xca, 0x02, 0xea, 0x41, 0xc6, 0x02, 0x0a, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x56, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x7d, 0x12, 0x60, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x7d, 0x12, 0x54, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x7d, 0x12, 0x01, 0x2a, 0x20, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0xfa, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x6c, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x6c, 0x69, 0x48, 0x00, 0x52, 0x08, 0x62, 0x61, 0x73, 0x69, 0x63, 0x53, 0x6c, 0x69, 0x12, 0x4c, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x48, 0x00, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x42, 0x61, 0x73, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf3, 0x02, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x6c, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x6c, 0x69, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x4a, 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x6c, 0x69, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x1a, 0x16, 0x0a, 0x14, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x1a, 0x4a, 0x0a, 0x0f, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x73, 0x6c, 0x69, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x22, 0x2b, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x22, 0xc2, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x12, 0x51, 0x0a, 0x10, 0x67, 0x6f, 0x6f, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x48, 0x00, 0x52, 0x0e, 0x67, 0x6f, 0x6f, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x52, 0x0a, 0x10, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x2e, 0x0a, 0x13, 0x67, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x67, 0x6f, 0x6f, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x61, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x75, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xa4, 0x06, 0x0a, 0x0f, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x12, 0x35, 0x0a, 0x16, 0x67, 0x6f, 0x6f, 0x64, 0x5f, 0x62, 0x61, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x13, 0x67, 0x6f, 0x6f, 0x64, 0x42, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x79, 0x0a, 0x1a, 0x67, 0x6f, 0x6f, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x48, 0x00, 0x52, 0x17, 0x67, 0x6f, 0x6f, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x64, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x61, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x6e, 0x49, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x62, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x49, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x1a, 0xdd, 0x01, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x61, 0x73, 0x65, 0x64, 0x53, 0x6c, 0x69, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x54, 0x0a, 0x15, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x6c, 0x69, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x53, 0x6c, 0x69, 0x48, 0x00, 0x52, 0x13, 0x62, 0x61, 0x73, 0x69, 0x63, 0x53, 0x6c, 0x69, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x61, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x6e, 0x42, 0xce, 0x01, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x42, 0x16, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x33, 0x3b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x33, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x33, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_google_monitoring_v3_service_proto_rawDescOnce sync.Once file_google_monitoring_v3_service_proto_rawDescData = file_google_monitoring_v3_service_proto_rawDesc ) func file_google_monitoring_v3_service_proto_rawDescGZIP() []byte { file_google_monitoring_v3_service_proto_rawDescOnce.Do(func() { file_google_monitoring_v3_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_monitoring_v3_service_proto_rawDescData) }) return file_google_monitoring_v3_service_proto_rawDescData } var file_google_monitoring_v3_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_google_monitoring_v3_service_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_google_monitoring_v3_service_proto_goTypes = []interface{}{ (ServiceLevelObjective_View)(0), // 0: google.monitoring.v3.ServiceLevelObjective.View (*Service)(nil), // 1: google.monitoring.v3.Service (*ServiceLevelObjective)(nil), // 2: google.monitoring.v3.ServiceLevelObjective (*ServiceLevelIndicator)(nil), // 3: google.monitoring.v3.ServiceLevelIndicator (*BasicSli)(nil), // 4: google.monitoring.v3.BasicSli (*Range)(nil), // 5: google.monitoring.v3.Range (*RequestBasedSli)(nil), // 6: google.monitoring.v3.RequestBasedSli (*TimeSeriesRatio)(nil), // 7: google.monitoring.v3.TimeSeriesRatio (*DistributionCut)(nil), // 8: google.monitoring.v3.DistributionCut (*WindowsBasedSli)(nil), // 9: google.monitoring.v3.WindowsBasedSli (*Service_Custom)(nil), // 10: google.monitoring.v3.Service.Custom (*Service_AppEngine)(nil), // 11: google.monitoring.v3.Service.AppEngine (*Service_CloudEndpoints)(nil), // 12: google.monitoring.v3.Service.CloudEndpoints (*Service_ClusterIstio)(nil), // 13: google.monitoring.v3.Service.ClusterIstio (*Service_MeshIstio)(nil), // 14: google.monitoring.v3.Service.MeshIstio (*Service_IstioCanonicalService)(nil), // 15: google.monitoring.v3.Service.IstioCanonicalService (*Service_Telemetry)(nil), // 16: google.monitoring.v3.Service.Telemetry (*BasicSli_AvailabilityCriteria)(nil), // 17: google.monitoring.v3.BasicSli.AvailabilityCriteria (*BasicSli_LatencyCriteria)(nil), // 18: google.monitoring.v3.BasicSli.LatencyCriteria (*WindowsBasedSli_PerformanceThreshold)(nil), // 19: google.monitoring.v3.WindowsBasedSli.PerformanceThreshold (*WindowsBasedSli_MetricRange)(nil), // 20: google.monitoring.v3.WindowsBasedSli.MetricRange (*durationpb.Duration)(nil), // 21: google.protobuf.Duration (calendarperiod.CalendarPeriod)(0), // 22: google.type.CalendarPeriod } var file_google_monitoring_v3_service_proto_depIdxs = []int32{ 10, // 0: google.monitoring.v3.Service.custom:type_name -> google.monitoring.v3.Service.Custom 11, // 1: google.monitoring.v3.Service.app_engine:type_name -> google.monitoring.v3.Service.AppEngine 12, // 2: google.monitoring.v3.Service.cloud_endpoints:type_name -> google.monitoring.v3.Service.CloudEndpoints 13, // 3: google.monitoring.v3.Service.cluster_istio:type_name -> google.monitoring.v3.Service.ClusterIstio 14, // 4: google.monitoring.v3.Service.mesh_istio:type_name -> google.monitoring.v3.Service.MeshIstio 15, // 5: google.monitoring.v3.Service.istio_canonical_service:type_name -> google.monitoring.v3.Service.IstioCanonicalService 16, // 6: google.monitoring.v3.Service.telemetry:type_name -> google.monitoring.v3.Service.Telemetry 3, // 7: google.monitoring.v3.ServiceLevelObjective.service_level_indicator:type_name -> google.monitoring.v3.ServiceLevelIndicator 21, // 8: google.monitoring.v3.ServiceLevelObjective.rolling_period:type_name -> google.protobuf.Duration 22, // 9: google.monitoring.v3.ServiceLevelObjective.calendar_period:type_name -> google.type.CalendarPeriod 4, // 10: google.monitoring.v3.ServiceLevelIndicator.basic_sli:type_name -> google.monitoring.v3.BasicSli 6, // 11: google.monitoring.v3.ServiceLevelIndicator.request_based:type_name -> google.monitoring.v3.RequestBasedSli 9, // 12: google.monitoring.v3.ServiceLevelIndicator.windows_based:type_name -> google.monitoring.v3.WindowsBasedSli 17, // 13: google.monitoring.v3.BasicSli.availability:type_name -> google.monitoring.v3.BasicSli.AvailabilityCriteria 18, // 14: google.monitoring.v3.BasicSli.latency:type_name -> google.monitoring.v3.BasicSli.LatencyCriteria 7, // 15: google.monitoring.v3.RequestBasedSli.good_total_ratio:type_name -> google.monitoring.v3.TimeSeriesRatio 8, // 16: google.monitoring.v3.RequestBasedSli.distribution_cut:type_name -> google.monitoring.v3.DistributionCut 5, // 17: google.monitoring.v3.DistributionCut.range:type_name -> google.monitoring.v3.Range 19, // 18: google.monitoring.v3.WindowsBasedSli.good_total_ratio_threshold:type_name -> google.monitoring.v3.WindowsBasedSli.PerformanceThreshold 20, // 19: google.monitoring.v3.WindowsBasedSli.metric_mean_in_range:type_name -> google.monitoring.v3.WindowsBasedSli.MetricRange 20, // 20: google.monitoring.v3.WindowsBasedSli.metric_sum_in_range:type_name -> google.monitoring.v3.WindowsBasedSli.MetricRange 21, // 21: google.monitoring.v3.WindowsBasedSli.window_period:type_name -> google.protobuf.Duration 21, // 22: google.monitoring.v3.BasicSli.LatencyCriteria.threshold:type_name -> google.protobuf.Duration 6, // 23: google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.performance:type_name -> google.monitoring.v3.RequestBasedSli 4, // 24: google.monitoring.v3.WindowsBasedSli.PerformanceThreshold.basic_sli_performance:type_name -> google.monitoring.v3.BasicSli 5, // 25: google.monitoring.v3.WindowsBasedSli.MetricRange.range:type_name -> google.monitoring.v3.Range 26, // [26:26] is the sub-list for method output_type 26, // [26:26] is the sub-list for method input_type 26, // [26:26] is the sub-list for extension type_name 26, // [26:26] is the sub-list for extension extendee 0, // [0:26] is the sub-list for field type_name } func init() { file_google_monitoring_v3_service_proto_init() } func file_google_monitoring_v3_service_proto_init() { if File_google_monitoring_v3_service_proto != nil { return } if !protoimpl.UnsafeEnabled { file_google_monitoring_v3_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceLevelObjective); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceLevelIndicator); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BasicSli); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Range); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestBasedSli); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeSeriesRatio); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DistributionCut); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WindowsBasedSli); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service_Custom); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service_AppEngine); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service_CloudEndpoints); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service_ClusterIstio); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service_MeshIstio); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service_IstioCanonicalService); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Service_Telemetry); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BasicSli_AvailabilityCriteria); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BasicSli_LatencyCriteria); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WindowsBasedSli_PerformanceThreshold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_google_monitoring_v3_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WindowsBasedSli_MetricRange); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } file_google_monitoring_v3_service_proto_msgTypes[0].OneofWrappers = []interface{}{ (*Service_Custom_)(nil), (*Service_AppEngine_)(nil), (*Service_CloudEndpoints_)(nil), (*Service_ClusterIstio_)(nil), (*Service_MeshIstio_)(nil), (*Service_IstioCanonicalService_)(nil), } file_google_monitoring_v3_service_proto_msgTypes[1].OneofWrappers = []interface{}{ (*ServiceLevelObjective_RollingPeriod)(nil), (*ServiceLevelObjective_CalendarPeriod)(nil), } file_google_monitoring_v3_service_proto_msgTypes[2].OneofWrappers = []interface{}{ (*ServiceLevelIndicator_BasicSli)(nil), (*ServiceLevelIndicator_RequestBased)(nil), (*ServiceLevelIndicator_WindowsBased)(nil), } file_google_monitoring_v3_service_proto_msgTypes[3].OneofWrappers = []interface{}{ (*BasicSli_Availability)(nil), (*BasicSli_Latency)(nil), } file_google_monitoring_v3_service_proto_msgTypes[5].OneofWrappers = []interface{}{ (*RequestBasedSli_GoodTotalRatio)(nil), (*RequestBasedSli_DistributionCut)(nil), } file_google_monitoring_v3_service_proto_msgTypes[8].OneofWrappers = []interface{}{ (*WindowsBasedSli_GoodBadMetricFilter)(nil), (*WindowsBasedSli_GoodTotalRatioThreshold)(nil), (*WindowsBasedSli_MetricMeanInRange)(nil), (*WindowsBasedSli_MetricSumInRange)(nil), } file_google_monitoring_v3_service_proto_msgTypes[18].OneofWrappers = []interface{}{ (*WindowsBasedSli_PerformanceThreshold_Performance)(nil), (*WindowsBasedSli_PerformanceThreshold_BasicSliPerformance)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_monitoring_v3_service_proto_rawDesc, NumEnums: 1, NumMessages: 20, NumExtensions: 0, NumServices: 0, }, GoTypes: file_google_monitoring_v3_service_proto_goTypes, DependencyIndexes: file_google_monitoring_v3_service_proto_depIdxs, EnumInfos: file_google_monitoring_v3_service_proto_enumTypes, MessageInfos: file_google_monitoring_v3_service_proto_msgTypes, }.Build() File_google_monitoring_v3_service_proto = out.File file_google_monitoring_v3_service_proto_rawDesc = nil file_google_monitoring_v3_service_proto_goTypes = nil file_google_monitoring_v3_service_proto_depIdxs = nil }