From 518b6823da327781a6a73b6676c10f31356035ce Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Mon, 18 Dec 2023 17:33:12 +0200 Subject: [PATCH 01/20] PMM-8019 Get rid of enable/disable flags in settings --- api-tests/server/helpers.go | 4 +- api/common/common.pb.go | 153 +++ api/common/common.pb.validate.go | 135 +++ api/common/common.proto | 7 + .../change_settings2_parameters.go | 144 +++ .../change_settings2_responses.go | 1057 +++++++++++++++++ .../change_settings_responses.go | 111 +- .../server_service/get_settings_responses.go | 4 +- .../server_service/server_service_client.go | 41 + api/server/v1/json/v1.json | 348 +++++- api/server/v1/server.pb.go | 932 +++++++-------- api/server/v1/server.pb.gw.go | 81 ++ api/server/v1/server.pb.validate.go | 91 +- api/server/v1/server.proto | 44 +- api/swagger/swagger-dev.json | 368 +++++- api/swagger/swagger.json | 368 +++++- descriptor.bin | Bin 700235 -> 707834 bytes managed/models/database.go | 16 + managed/models/role_helpers.go | 2 +- managed/models/settings.go | 113 +- managed/models/settings_helpers.go | 150 +-- managed/models/settings_helpers_test.go | 118 +- managed/services/checks/checks.go | 10 +- managed/services/checks/checks_test.go | 8 +- .../services/grafana/access_control_cache.go | 2 +- .../services/management/alerting/service.go | 14 +- managed/services/management/azure_database.go | 2 +- .../management/backup/artifacts_service.go | 2 +- .../management/backup/locations_service.go | 2 +- .../backup/restore_history_service.go | 2 +- managed/services/management/role.go | 2 +- managed/services/platform/platform.go | 4 +- managed/services/server/server.go | 96 +- managed/services/supervisord/supervisord.go | 6 +- .../services/supervisord/supervisord_test.go | 2 +- managed/services/telemetry/telemetry.go | 2 +- managed/utils/envvars/parser.go | 46 +- 37 files changed, 3457 insertions(+), 1030 deletions(-) create mode 100644 api/common/common.pb.go create mode 100644 api/common/common.pb.validate.go create mode 100644 api/common/common.proto create mode 100644 api/server/v1/json/client/server_service/change_settings2_parameters.go create mode 100644 api/server/v1/json/client/server_service/change_settings2_responses.go diff --git a/api-tests/server/helpers.go b/api-tests/server/helpers.go index b8e54cbaf1..3f843ef0ca 100644 --- a/api-tests/server/helpers.go +++ b/api-tests/server/helpers.go @@ -49,7 +49,9 @@ func restoreSettingsDefaults(t *testing.T) { RareInterval: "280800s", }, DataRetention: "2592000s", - AWSPartitions: []string{"aws"}, + AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{ + Values: []string{"aws"}, + }, }, Context: pmmapitests.Context, }) diff --git a/api/common/common.pb.go b/api/common/common.pb.go new file mode 100644 index 0000000000..de8e255afe --- /dev/null +++ b/api/common/common.pb.go @@ -0,0 +1,153 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0-devel +// protoc (unknown) +// source: common/common.proto + +package common + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +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) +) + +type StringArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` +} + +func (x *StringArray) Reset() { + *x = StringArray{} + if protoimpl.UnsafeEnabled { + mi := &file_common_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StringArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StringArray) ProtoMessage() {} + +func (x *StringArray) ProtoReflect() protoreflect.Message { + mi := &file_common_common_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 StringArray.ProtoReflect.Descriptor instead. +func (*StringArray) Descriptor() ([]byte, []int) { + return file_common_common_proto_rawDescGZIP(), []int{0} +} + +func (x *StringArray) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + +var File_common_common_proto protoreflect.FileDescriptor + +var file_common_common_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x25, 0x0a, + 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x42, 0x74, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0xca, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xe2, 0x02, 0x12, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_common_common_proto_rawDescOnce sync.Once + file_common_common_proto_rawDescData = file_common_common_proto_rawDesc +) + +func file_common_common_proto_rawDescGZIP() []byte { + file_common_common_proto_rawDescOnce.Do(func() { + file_common_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_common_proto_rawDescData) + }) + return file_common_common_proto_rawDescData +} + +var ( + file_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 1) + file_common_common_proto_goTypes = []interface{}{ + (*StringArray)(nil), // 0: common.StringArray + } +) + +var file_common_common_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_common_common_proto_init() } +func file_common_common_proto_init() { + if File_common_common_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_common_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StringArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_common_common_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_common_common_proto_goTypes, + DependencyIndexes: file_common_common_proto_depIdxs, + MessageInfos: file_common_common_proto_msgTypes, + }.Build() + File_common_common_proto = out.File + file_common_common_proto_rawDesc = nil + file_common_common_proto_goTypes = nil + file_common_common_proto_depIdxs = nil +} diff --git a/api/common/common.pb.validate.go b/api/common/common.pb.validate.go new file mode 100644 index 0000000000..1c35c6ce91 --- /dev/null +++ b/api/common/common.pb.validate.go @@ -0,0 +1,135 @@ +// Code generated by protoc-gen-validate. DO NOT EDIT. +// source: common/common.proto + +package common + +import ( + "bytes" + "errors" + "fmt" + "net" + "net/mail" + "net/url" + "regexp" + "sort" + "strings" + "time" + "unicode/utf8" + + "google.golang.org/protobuf/types/known/anypb" +) + +// ensure the imports are used +var ( + _ = bytes.MinRead + _ = errors.New("") + _ = fmt.Print + _ = utf8.UTFMax + _ = (*regexp.Regexp)(nil) + _ = (*strings.Reader)(nil) + _ = net.IPv4len + _ = time.Duration(0) + _ = (*url.URL)(nil) + _ = (*mail.Address)(nil) + _ = anypb.Any{} + _ = sort.Sort +) + +// Validate checks the field values on StringArray with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *StringArray) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on StringArray with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in StringArrayMultiError, or +// nil if none found. +func (m *StringArray) ValidateAll() error { + return m.validate(true) +} + +func (m *StringArray) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if len(errors) > 0 { + return StringArrayMultiError(errors) + } + + return nil +} + +// StringArrayMultiError is an error wrapping multiple validation errors +// returned by StringArray.ValidateAll() if the designated constraints aren't met. +type StringArrayMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m StringArrayMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m StringArrayMultiError) AllErrors() []error { return m } + +// StringArrayValidationError is the validation error returned by +// StringArray.Validate if the designated constraints aren't met. +type StringArrayValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e StringArrayValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e StringArrayValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e StringArrayValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e StringArrayValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e StringArrayValidationError) ErrorName() string { return "StringArrayValidationError" } + +// Error satisfies the builtin error interface +func (e StringArrayValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sStringArray.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = StringArrayValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = StringArrayValidationError{} diff --git a/api/common/common.proto b/api/common/common.proto new file mode 100644 index 0000000000..a2d3c71cd8 --- /dev/null +++ b/api/common/common.proto @@ -0,0 +1,7 @@ +syntax = "proto3"; + +package common; + +message StringArray { + repeated string values = 1; +} diff --git a/api/server/v1/json/client/server_service/change_settings2_parameters.go b/api/server/v1/json/client/server_service/change_settings2_parameters.go new file mode 100644 index 0000000000..0fb64845cf --- /dev/null +++ b/api/server/v1/json/client/server_service/change_settings2_parameters.go @@ -0,0 +1,144 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package server_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "net/http" + "time" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + cr "github.com/go-openapi/runtime/client" + "github.com/go-openapi/strfmt" +) + +// NewChangeSettings2Params creates a new ChangeSettings2Params object, +// with the default timeout for this client. +// +// Default values are not hydrated, since defaults are normally applied by the API server side. +// +// To enforce default values in parameter, use SetDefaults or WithDefaults. +func NewChangeSettings2Params() *ChangeSettings2Params { + return &ChangeSettings2Params{ + timeout: cr.DefaultTimeout, + } +} + +// NewChangeSettings2ParamsWithTimeout creates a new ChangeSettings2Params object +// with the ability to set a timeout on a request. +func NewChangeSettings2ParamsWithTimeout(timeout time.Duration) *ChangeSettings2Params { + return &ChangeSettings2Params{ + timeout: timeout, + } +} + +// NewChangeSettings2ParamsWithContext creates a new ChangeSettings2Params object +// with the ability to set a context for a request. +func NewChangeSettings2ParamsWithContext(ctx context.Context) *ChangeSettings2Params { + return &ChangeSettings2Params{ + Context: ctx, + } +} + +// NewChangeSettings2ParamsWithHTTPClient creates a new ChangeSettings2Params object +// with the ability to set a custom HTTPClient for a request. +func NewChangeSettings2ParamsWithHTTPClient(client *http.Client) *ChangeSettings2Params { + return &ChangeSettings2Params{ + HTTPClient: client, + } +} + +/* +ChangeSettings2Params contains all the parameters to send to the API endpoint + + for the change settings2 operation. + + Typically these are written to a http.Request. +*/ +type ChangeSettings2Params struct { + // Body. + Body ChangeSettings2Body + + timeout time.Duration + Context context.Context + HTTPClient *http.Client +} + +// WithDefaults hydrates default values in the change settings2 params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ChangeSettings2Params) WithDefaults() *ChangeSettings2Params { + o.SetDefaults() + return o +} + +// SetDefaults hydrates default values in the change settings2 params (not the query body). +// +// All values with no default are reset to their zero value. +func (o *ChangeSettings2Params) SetDefaults() { + // no default values defined for this parameter +} + +// WithTimeout adds the timeout to the change settings2 params +func (o *ChangeSettings2Params) WithTimeout(timeout time.Duration) *ChangeSettings2Params { + o.SetTimeout(timeout) + return o +} + +// SetTimeout adds the timeout to the change settings2 params +func (o *ChangeSettings2Params) SetTimeout(timeout time.Duration) { + o.timeout = timeout +} + +// WithContext adds the context to the change settings2 params +func (o *ChangeSettings2Params) WithContext(ctx context.Context) *ChangeSettings2Params { + o.SetContext(ctx) + return o +} + +// SetContext adds the context to the change settings2 params +func (o *ChangeSettings2Params) SetContext(ctx context.Context) { + o.Context = ctx +} + +// WithHTTPClient adds the HTTPClient to the change settings2 params +func (o *ChangeSettings2Params) WithHTTPClient(client *http.Client) *ChangeSettings2Params { + o.SetHTTPClient(client) + return o +} + +// SetHTTPClient adds the HTTPClient to the change settings2 params +func (o *ChangeSettings2Params) SetHTTPClient(client *http.Client) { + o.HTTPClient = client +} + +// WithBody adds the body to the change settings2 params +func (o *ChangeSettings2Params) WithBody(body ChangeSettings2Body) *ChangeSettings2Params { + o.SetBody(body) + return o +} + +// SetBody adds the body to the change settings2 params +func (o *ChangeSettings2Params) SetBody(body ChangeSettings2Body) { + o.Body = body +} + +// WriteToRequest writes these params to a swagger request +func (o *ChangeSettings2Params) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { + if err := r.SetTimeout(o.timeout); err != nil { + return err + } + var res []error + if err := r.SetBodyParam(o.Body); err != nil { + return err + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/api/server/v1/json/client/server_service/change_settings2_responses.go b/api/server/v1/json/client/server_service/change_settings2_responses.go new file mode 100644 index 0000000000..9f590c98aa --- /dev/null +++ b/api/server/v1/json/client/server_service/change_settings2_responses.go @@ -0,0 +1,1057 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package server_service + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "context" + "fmt" + "io" + "strconv" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" +) + +// ChangeSettings2Reader is a Reader for the ChangeSettings2 structure. +type ChangeSettings2Reader struct { + formats strfmt.Registry +} + +// ReadResponse reads a server response into the received o. +func (o *ChangeSettings2Reader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { + switch response.Code() { + case 200: + result := NewChangeSettings2OK() + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + return result, nil + default: + result := NewChangeSettings2Default(response.Code()) + if err := result.readResponse(response, consumer, o.formats); err != nil { + return nil, err + } + if response.Code()/100 == 2 { + return result, nil + } + return nil, result + } +} + +// NewChangeSettings2OK creates a ChangeSettings2OK with default headers values +func NewChangeSettings2OK() *ChangeSettings2OK { + return &ChangeSettings2OK{} +} + +/* +ChangeSettings2OK describes a response with status code 200, with default header values. + +A successful response. +*/ +type ChangeSettings2OK struct { + Payload *ChangeSettings2OKBody +} + +func (o *ChangeSettings2OK) Error() string { + return fmt.Sprintf("[PATCH /v1/Settings/Change][%d] changeSettings2Ok %+v", 200, o.Payload) +} + +func (o *ChangeSettings2OK) GetPayload() *ChangeSettings2OKBody { + return o.Payload +} + +func (o *ChangeSettings2OK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ChangeSettings2OKBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +// NewChangeSettings2Default creates a ChangeSettings2Default with default headers values +func NewChangeSettings2Default(code int) *ChangeSettings2Default { + return &ChangeSettings2Default{ + _statusCode: code, + } +} + +/* +ChangeSettings2Default describes a response with status code -1, with default header values. + +An unexpected error response. +*/ +type ChangeSettings2Default struct { + _statusCode int + + Payload *ChangeSettings2DefaultBody +} + +// Code gets the status code for the change settings2 default response +func (o *ChangeSettings2Default) Code() int { + return o._statusCode +} + +func (o *ChangeSettings2Default) Error() string { + return fmt.Sprintf("[PATCH /v1/Settings/Change][%d] ChangeSettings2 default %+v", o._statusCode, o.Payload) +} + +func (o *ChangeSettings2Default) GetPayload() *ChangeSettings2DefaultBody { + return o.Payload +} + +func (o *ChangeSettings2Default) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ChangeSettings2DefaultBody) + + // response payload + if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { + return err + } + + return nil +} + +/* +ChangeSettings2Body change settings2 body +swagger:model ChangeSettings2Body +*/ +type ChangeSettings2Body struct { + // enable updates + EnableUpdates bool `json:"enable_updates,omitempty"` + + // enable telemetry + EnableTelemetry bool `json:"enable_telemetry,omitempty"` + + // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. + DataRetention string `json:"data_retention,omitempty"` + + // ssh key + SSHKey string `json:"ssh_key,omitempty"` + + // Enable Security Threat Tool. + EnableStt bool `json:"enable_stt,omitempty"` + + // Enable Alerting. + EnableAlerting bool `json:"enable_alerting,omitempty"` + + // PMM Server public address. + PMMPublicAddress string `json:"pmm_public_address,omitempty"` + + // Enable Azure Discover. + EnableAzurediscover bool `json:"enable_azurediscover,omitempty"` + + // Enable Backup Management. + EnableBackupManagement bool `json:"enable_backup_management,omitempty"` + + // Enable Access Control + EnableAccessControl bool `json:"enable_access_control,omitempty"` + + // aws partitions + AWSPartitions *ChangeSettings2ParamsBodyAWSPartitions `json:"aws_partitions,omitempty"` + + // metrics resolutions + MetricsResolutions *ChangeSettings2ParamsBodyMetricsResolutions `json:"metrics_resolutions,omitempty"` + + // stt check intervals + SttCheckIntervals *ChangeSettings2ParamsBodySttCheckIntervals `json:"stt_check_intervals,omitempty"` +} + +// Validate validates this change settings2 body +func (o *ChangeSettings2Body) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateAWSPartitions(formats); err != nil { + res = append(res, err) + } + + if err := o.validateMetricsResolutions(formats); err != nil { + res = append(res, err) + } + + if err := o.validateSttCheckIntervals(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2Body) validateAWSPartitions(formats strfmt.Registry) error { + if swag.IsZero(o.AWSPartitions) { // not required + return nil + } + + if o.AWSPartitions != nil { + if err := o.AWSPartitions.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "aws_partitions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "aws_partitions") + } + return err + } + } + + return nil +} + +func (o *ChangeSettings2Body) validateMetricsResolutions(formats strfmt.Registry) error { + if swag.IsZero(o.MetricsResolutions) { // not required + return nil + } + + if o.MetricsResolutions != nil { + if err := o.MetricsResolutions.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "metrics_resolutions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "metrics_resolutions") + } + return err + } + } + + return nil +} + +func (o *ChangeSettings2Body) validateSttCheckIntervals(formats strfmt.Registry) error { + if swag.IsZero(o.SttCheckIntervals) { // not required + return nil + } + + if o.SttCheckIntervals != nil { + if err := o.SttCheckIntervals.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "stt_check_intervals") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "stt_check_intervals") + } + return err + } + } + + return nil +} + +// ContextValidate validate this change settings2 body based on the context it is used +func (o *ChangeSettings2Body) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateAWSPartitions(ctx, formats); err != nil { + res = append(res, err) + } + + if err := o.contextValidateMetricsResolutions(ctx, formats); err != nil { + res = append(res, err) + } + + if err := o.contextValidateSttCheckIntervals(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2Body) contextValidateAWSPartitions(ctx context.Context, formats strfmt.Registry) error { + if o.AWSPartitions != nil { + if err := o.AWSPartitions.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "aws_partitions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "aws_partitions") + } + return err + } + } + + return nil +} + +func (o *ChangeSettings2Body) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { + if err := o.MetricsResolutions.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "metrics_resolutions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "metrics_resolutions") + } + return err + } + } + + return nil +} + +func (o *ChangeSettings2Body) contextValidateSttCheckIntervals(ctx context.Context, formats strfmt.Registry) error { + if o.SttCheckIntervals != nil { + if err := o.SttCheckIntervals.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "stt_check_intervals") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "stt_check_intervals") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2Body) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2Body) UnmarshalBinary(b []byte) error { + var res ChangeSettings2Body + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2DefaultBody change settings2 default body +swagger:model ChangeSettings2DefaultBody +*/ +type ChangeSettings2DefaultBody struct { + // code + Code int32 `json:"code,omitempty"` + + // message + Message string `json:"message,omitempty"` + + // details + Details []*ChangeSettings2DefaultBodyDetailsItems0 `json:"details"` +} + +// Validate validates this change settings2 default body +func (o *ChangeSettings2DefaultBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateDetails(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2DefaultBody) validateDetails(formats strfmt.Registry) error { + if swag.IsZero(o.Details) { // not required + return nil + } + + for i := 0; i < len(o.Details); i++ { + if swag.IsZero(o.Details[i]) { // not required + continue + } + + if o.Details[i] != nil { + if err := o.Details[i].Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + + } + + return nil +} + +// ContextValidate validate this change settings2 default body based on the context it is used +func (o *ChangeSettings2DefaultBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateDetails(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2DefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Details); i++ { + if o.Details[i] != nil { + if err := o.Details[i].ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) + } + return err + } + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2DefaultBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2DefaultBody) UnmarshalBinary(b []byte) error { + var res ChangeSettings2DefaultBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2DefaultBodyDetailsItems0 `Any` contains an arbitrary serialized protocol buffer message along with a +// URL that describes the type of the serialized message. +// +// Protobuf library provides support to pack/unpack Any values in the form +// of utility functions or additional generated methods of the Any type. +// +// Example 1: Pack and unpack a message in C++. +// +// Foo foo = ...; +// Any any; +// any.PackFrom(foo); +// ... +// if (any.UnpackTo(&foo)) { +// ... +// } +// +// Example 2: Pack and unpack a message in Java. +// +// Foo foo = ...; +// Any any = Any.pack(foo); +// ... +// if (any.is(Foo.class)) { +// foo = any.unpack(Foo.class); +// } +// // or ... +// if (any.isSameTypeAs(Foo.getDefaultInstance())) { +// foo = any.unpack(Foo.getDefaultInstance()); +// } +// +// Example 3: Pack and unpack a message in Python. +// +// foo = Foo(...) +// any = Any() +// any.Pack(foo) +// ... +// if any.Is(Foo.DESCRIPTOR): +// any.Unpack(foo) +// ... +// +// Example 4: Pack and unpack a message in Go +// +// foo := &pb.Foo{...} +// any, err := anypb.New(foo) +// if err != nil { +// ... +// } +// ... +// foo := &pb.Foo{} +// if err := any.UnmarshalTo(foo); err != nil { +// ... +// } +// +// The pack methods provided by protobuf library will by default use +// 'type.googleapis.com/full.type.name' as the type URL and the unpack +// methods only use the fully qualified type name after the last '/' +// in the type URL, for example "foo.bar.com/x/y.z" will yield type +// name "y.z". +// +// JSON +// ==== +// The JSON representation of an `Any` value uses the regular +// representation of the deserialized, embedded message, with an +// additional field `@type` which contains the type URL. Example: +// +// package google.profile; +// message Person { +// string first_name = 1; +// string last_name = 2; +// } +// +// { +// "@type": "type.googleapis.com/google.profile.Person", +// "firstName": , +// "lastName": +// } +// +// If the embedded message type is well-known and has a custom JSON +// representation, that representation will be embedded adding a field +// `value` which holds the custom JSON in addition to the `@type` +// field. Example (for message [google.protobuf.Duration][]): +// +// { +// "@type": "type.googleapis.com/google.protobuf.Duration", +// "value": "1.212s" +// } +swagger:model ChangeSettings2DefaultBodyDetailsItems0 +*/ +type ChangeSettings2DefaultBodyDetailsItems0 struct { + // A URL/resource name that uniquely identifies the type of the serialized + // protocol buffer message. This string must contain at least + // one "/" character. The last segment of the URL's path must represent + // the fully qualified name of the type (as in + // `path/google.protobuf.Duration`). The name should be in a canonical form + // (e.g., leading "." is not accepted). + // + // In practice, teams usually precompile into the binary all types that they + // expect it to use in the context of Any. However, for URLs which use the + // scheme `http`, `https`, or no scheme, one can optionally set up a type + // server that maps type URLs to message definitions as follows: + // + // * If no scheme is provided, `https` is assumed. + // * An HTTP GET on the URL must yield a [google.protobuf.Type][] + // value in binary format, or produce an error. + // * Applications are allowed to cache lookup results based on the + // URL, or have them precompiled into a binary to avoid any + // lookup. Therefore, binary compatibility needs to be preserved + // on changes to types. (Use versioned type names to manage + // breaking changes.) + // + // Note: this functionality is not currently available in the official + // protobuf release, and it is not used for type URLs beginning with + // type.googleapis.com. As of May 2023, there are no widely used type server + // implementations and no plans to implement one. + // + // Schemes other than `http`, `https` (or the empty scheme) might be + // used with implementation specific semantics. + AtType string `json:"@type,omitempty"` +} + +// Validate validates this change settings2 default body details items0 +func (o *ChangeSettings2DefaultBodyDetailsItems0) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this change settings2 default body details items0 based on context it is used +func (o *ChangeSettings2DefaultBodyDetailsItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2DefaultBodyDetailsItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2DefaultBodyDetailsItems0) UnmarshalBinary(b []byte) error { + var res ChangeSettings2DefaultBodyDetailsItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2OKBody change settings2 OK body +swagger:model ChangeSettings2OKBody +*/ +type ChangeSettings2OKBody struct { + // settings + Settings *ChangeSettings2OKBodySettings `json:"settings,omitempty"` +} + +// Validate validates this change settings2 OK body +func (o *ChangeSettings2OKBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateSettings(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2OKBody) validateSettings(formats strfmt.Registry) error { + if swag.IsZero(o.Settings) { // not required + return nil + } + + if o.Settings != nil { + if err := o.Settings.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("changeSettings2Ok" + "." + "settings") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("changeSettings2Ok" + "." + "settings") + } + return err + } + } + + return nil +} + +// ContextValidate validate this change settings2 OK body based on the context it is used +func (o *ChangeSettings2OKBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateSettings(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2OKBody) contextValidateSettings(ctx context.Context, formats strfmt.Registry) error { + if o.Settings != nil { + if err := o.Settings.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("changeSettings2Ok" + "." + "settings") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("changeSettings2Ok" + "." + "settings") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2OKBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2OKBody) UnmarshalBinary(b []byte) error { + var res ChangeSettings2OKBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2OKBodySettings Settings represents PMM Server settings. +swagger:model ChangeSettings2OKBodySettings +*/ +type ChangeSettings2OKBodySettings struct { + // True if updates are enabled. + UpdatesEnabled bool `json:"updates_enabled,omitempty"` + + // True if telemetry is enabled. + TelemetryEnabled bool `json:"telemetry_enabled,omitempty"` + + // data retention + DataRetention string `json:"data_retention,omitempty"` + + // ssh key + SSHKey string `json:"ssh_key,omitempty"` + + // aws partitions + AWSPartitions []string `json:"aws_partitions"` + + // True if Security Threat Tool is enabled. + SttEnabled bool `json:"stt_enabled,omitempty"` + + // Percona Platform user's email, if this PMM instance is linked to the Platform. + PlatformEmail string `json:"platform_email,omitempty"` + + // True if Alerting is enabled. + AlertingEnabled bool `json:"alerting_enabled,omitempty"` + + // PMM Server public address. + PMMPublicAddress string `json:"pmm_public_address,omitempty"` + + // True if Backup Management is enabled. + BackupManagementEnabled bool `json:"backup_management_enabled,omitempty"` + + // True if Azure Discover is enabled. + AzurediscoverEnabled bool `json:"azurediscover_enabled,omitempty"` + + // True if the PMM instance is connected to Platform + ConnectedToPlatform bool `json:"connected_to_platform,omitempty"` + + // Includes list of collected telemetry + TelemetrySummaries []string `json:"telemetry_summaries"` + + // True if Access Control is enabled. + EnableAccessControl bool `json:"enable_access_control,omitempty"` + + // Default Access Control role ID for new users. + DefaultRoleID int64 `json:"default_role_id,omitempty"` + + // metrics resolutions + MetricsResolutions *ChangeSettings2OKBodySettingsMetricsResolutions `json:"metrics_resolutions,omitempty"` + + // stt check intervals + SttCheckIntervals *ChangeSettings2OKBodySettingsSttCheckIntervals `json:"stt_check_intervals,omitempty"` +} + +// Validate validates this change settings2 OK body settings +func (o *ChangeSettings2OKBodySettings) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateMetricsResolutions(formats); err != nil { + res = append(res, err) + } + + if err := o.validateSttCheckIntervals(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2OKBodySettings) validateMetricsResolutions(formats strfmt.Registry) error { + if swag.IsZero(o.MetricsResolutions) { // not required + return nil + } + + if o.MetricsResolutions != nil { + if err := o.MetricsResolutions.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") + } + return err + } + } + + return nil +} + +func (o *ChangeSettings2OKBodySettings) validateSttCheckIntervals(formats strfmt.Registry) error { + if swag.IsZero(o.SttCheckIntervals) { // not required + return nil + } + + if o.SttCheckIntervals != nil { + if err := o.SttCheckIntervals.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") + } + return err + } + } + + return nil +} + +// ContextValidate validate this change settings2 OK body settings based on the context it is used +func (o *ChangeSettings2OKBodySettings) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateMetricsResolutions(ctx, formats); err != nil { + res = append(res, err) + } + + if err := o.contextValidateSttCheckIntervals(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ChangeSettings2OKBodySettings) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { + if err := o.MetricsResolutions.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") + } + return err + } + } + + return nil +} + +func (o *ChangeSettings2OKBodySettings) contextValidateSttCheckIntervals(ctx context.Context, formats strfmt.Registry) error { + if o.SttCheckIntervals != nil { + if err := o.SttCheckIntervals.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") + } + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2OKBodySettings) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2OKBodySettings) UnmarshalBinary(b []byte) error { + var res ChangeSettings2OKBodySettings + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2OKBodySettingsMetricsResolutions MetricsResolutions represents Prometheus exporters metrics resolutions. +swagger:model ChangeSettings2OKBodySettingsMetricsResolutions +*/ +type ChangeSettings2OKBodySettingsMetricsResolutions struct { + // High resolution. Should have a suffix in JSON: 1s, 1m, 1h. + Hr string `json:"hr,omitempty"` + + // Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h. + Mr string `json:"mr,omitempty"` + + // Low resolution. Should have a suffix in JSON: 1s, 1m, 1h. + Lr string `json:"lr,omitempty"` +} + +// Validate validates this change settings2 OK body settings metrics resolutions +func (o *ChangeSettings2OKBodySettingsMetricsResolutions) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this change settings2 OK body settings metrics resolutions based on context it is used +func (o *ChangeSettings2OKBodySettingsMetricsResolutions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2OKBodySettingsMetricsResolutions) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2OKBodySettingsMetricsResolutions) UnmarshalBinary(b []byte) error { + var res ChangeSettings2OKBodySettingsMetricsResolutions + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2OKBodySettingsSttCheckIntervals STTCheckIntervals represents intervals between STT checks. +swagger:model ChangeSettings2OKBodySettingsSttCheckIntervals +*/ +type ChangeSettings2OKBodySettingsSttCheckIntervals struct { + // Standard check interval. + StandardInterval string `json:"standard_interval,omitempty"` + + // Interval for rare check runs. + RareInterval string `json:"rare_interval,omitempty"` + + // Interval for frequent check runs. + FrequentInterval string `json:"frequent_interval,omitempty"` +} + +// Validate validates this change settings2 OK body settings stt check intervals +func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this change settings2 OK body settings stt check intervals based on context it is used +func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) UnmarshalBinary(b []byte) error { + var res ChangeSettings2OKBodySettingsSttCheckIntervals + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2ParamsBodyAWSPartitions change settings2 params body AWS partitions +swagger:model ChangeSettings2ParamsBodyAWSPartitions +*/ +type ChangeSettings2ParamsBodyAWSPartitions struct { + // values + Values []string `json:"values"` +} + +// Validate validates this change settings2 params body AWS partitions +func (o *ChangeSettings2ParamsBodyAWSPartitions) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this change settings2 params body AWS partitions based on context it is used +func (o *ChangeSettings2ParamsBodyAWSPartitions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2ParamsBodyAWSPartitions) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2ParamsBodyAWSPartitions) UnmarshalBinary(b []byte) error { + var res ChangeSettings2ParamsBodyAWSPartitions + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2ParamsBodyMetricsResolutions MetricsResolutions represents Prometheus exporters metrics resolutions. +swagger:model ChangeSettings2ParamsBodyMetricsResolutions +*/ +type ChangeSettings2ParamsBodyMetricsResolutions struct { + // High resolution. Should have a suffix in JSON: 1s, 1m, 1h. + Hr string `json:"hr,omitempty"` + + // Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h. + Mr string `json:"mr,omitempty"` + + // Low resolution. Should have a suffix in JSON: 1s, 1m, 1h. + Lr string `json:"lr,omitempty"` +} + +// Validate validates this change settings2 params body metrics resolutions +func (o *ChangeSettings2ParamsBodyMetricsResolutions) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this change settings2 params body metrics resolutions based on context it is used +func (o *ChangeSettings2ParamsBodyMetricsResolutions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2ParamsBodyMetricsResolutions) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2ParamsBodyMetricsResolutions) UnmarshalBinary(b []byte) error { + var res ChangeSettings2ParamsBodyMetricsResolutions + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ChangeSettings2ParamsBodySttCheckIntervals STTCheckIntervals represents intervals between STT checks. +swagger:model ChangeSettings2ParamsBodySttCheckIntervals +*/ +type ChangeSettings2ParamsBodySttCheckIntervals struct { + // Standard check interval. + StandardInterval string `json:"standard_interval,omitempty"` + + // Interval for rare check runs. + RareInterval string `json:"rare_interval,omitempty"` + + // Interval for frequent check runs. + FrequentInterval string `json:"frequent_interval,omitempty"` +} + +// Validate validates this change settings2 params body stt check intervals +func (o *ChangeSettings2ParamsBodySttCheckIntervals) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this change settings2 params body stt check intervals based on context it is used +func (o *ChangeSettings2ParamsBodySttCheckIntervals) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettings2ParamsBodySttCheckIntervals) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettings2ParamsBodySttCheckIntervals) UnmarshalBinary(b []byte) error { + var res ChangeSettings2ParamsBodySttCheckIntervals + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/server/v1/json/client/server_service/change_settings_responses.go b/api/server/v1/json/client/server_service/change_settings_responses.go index 7dd19992a1..246a8ed38b 100644 --- a/api/server/v1/json/client/server_service/change_settings_responses.go +++ b/api/server/v1/json/client/server_service/change_settings_responses.go @@ -126,59 +126,35 @@ type ChangeSettingsBody struct { // enable updates EnableUpdates bool `json:"enable_updates,omitempty"` - // disable updates - DisableUpdates bool `json:"disable_updates,omitempty"` - // enable telemetry EnableTelemetry bool `json:"enable_telemetry,omitempty"` - // disable telemetry - DisableTelemetry bool `json:"disable_telemetry,omitempty"` - // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. DataRetention string `json:"data_retention,omitempty"` // ssh key SSHKey string `json:"ssh_key,omitempty"` - // aws partitions - AWSPartitions []string `json:"aws_partitions"` - // Enable Security Threat Tool. EnableStt bool `json:"enable_stt,omitempty"` - // Disable Security Threat Tool. - DisableStt bool `json:"disable_stt,omitempty"` - // Enable Alerting. EnableAlerting bool `json:"enable_alerting,omitempty"` - // Disable Alerting. - DisableAlerting bool `json:"disable_alerting,omitempty"` - // PMM Server public address. PMMPublicAddress string `json:"pmm_public_address,omitempty"` - // remove pmm public address - RemovePMMPublicAddress bool `json:"remove_pmm_public_address,omitempty"` - // Enable Azure Discover. EnableAzurediscover bool `json:"enable_azurediscover,omitempty"` - // Disable Azure Discover. - DisableAzurediscover bool `json:"disable_azurediscover,omitempty"` - // Enable Backup Management. EnableBackupManagement bool `json:"enable_backup_management,omitempty"` - // Disable Backup Management. - DisableBackupManagement bool `json:"disable_backup_management,omitempty"` - // Enable Access Control EnableAccessControl bool `json:"enable_access_control,omitempty"` - // Disable Access Control - DisableAccessControl bool `json:"disable_access_control,omitempty"` + // aws partitions + AWSPartitions *ChangeSettingsParamsBodyAWSPartitions `json:"aws_partitions,omitempty"` // metrics resolutions MetricsResolutions *ChangeSettingsParamsBodyMetricsResolutions `json:"metrics_resolutions,omitempty"` @@ -191,6 +167,10 @@ type ChangeSettingsBody struct { func (o *ChangeSettingsBody) Validate(formats strfmt.Registry) error { var res []error + if err := o.validateAWSPartitions(formats); err != nil { + res = append(res, err) + } + if err := o.validateMetricsResolutions(formats); err != nil { res = append(res, err) } @@ -205,6 +185,25 @@ func (o *ChangeSettingsBody) Validate(formats strfmt.Registry) error { return nil } +func (o *ChangeSettingsBody) validateAWSPartitions(formats strfmt.Registry) error { + if swag.IsZero(o.AWSPartitions) { // not required + return nil + } + + if o.AWSPartitions != nil { + if err := o.AWSPartitions.Validate(formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "aws_partitions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "aws_partitions") + } + return err + } + } + + return nil +} + func (o *ChangeSettingsBody) validateMetricsResolutions(formats strfmt.Registry) error { if swag.IsZero(o.MetricsResolutions) { // not required return nil @@ -247,6 +246,10 @@ func (o *ChangeSettingsBody) validateSttCheckIntervals(formats strfmt.Registry) func (o *ChangeSettingsBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { var res []error + if err := o.contextValidateAWSPartitions(ctx, formats); err != nil { + res = append(res, err) + } + if err := o.contextValidateMetricsResolutions(ctx, formats); err != nil { res = append(res, err) } @@ -261,6 +264,21 @@ func (o *ChangeSettingsBody) ContextValidate(ctx context.Context, formats strfmt return nil } +func (o *ChangeSettingsBody) contextValidateAWSPartitions(ctx context.Context, formats strfmt.Registry) error { + if o.AWSPartitions != nil { + if err := o.AWSPartitions.ContextValidate(ctx, formats); err != nil { + if ve, ok := err.(*errors.Validation); ok { + return ve.ValidateName("body" + "." + "aws_partitions") + } else if ce, ok := err.(*errors.CompositeError); ok { + return ce.ValidateName("body" + "." + "aws_partitions") + } + return err + } + } + + return nil +} + func (o *ChangeSettingsBody) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { if o.MetricsResolutions != nil { if err := o.MetricsResolutions.ContextValidate(ctx, formats); err != nil { @@ -655,8 +673,8 @@ ChangeSettingsOKBodySettings Settings represents PMM Server settings. swagger:model ChangeSettingsOKBodySettings */ type ChangeSettingsOKBodySettings struct { - // True if updates are disabled. - UpdatesDisabled bool `json:"updates_disabled,omitempty"` + // True if updates are enabled. + UpdatesEnabled bool `json:"updates_enabled,omitempty"` // True if telemetry is enabled. TelemetryEnabled bool `json:"telemetry_enabled,omitempty"` @@ -915,6 +933,43 @@ func (o *ChangeSettingsOKBodySettingsSttCheckIntervals) UnmarshalBinary(b []byte return nil } +/* +ChangeSettingsParamsBodyAWSPartitions change settings params body AWS partitions +swagger:model ChangeSettingsParamsBodyAWSPartitions +*/ +type ChangeSettingsParamsBodyAWSPartitions struct { + // values + Values []string `json:"values"` +} + +// Validate validates this change settings params body AWS partitions +func (o *ChangeSettingsParamsBodyAWSPartitions) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this change settings params body AWS partitions based on context it is used +func (o *ChangeSettingsParamsBodyAWSPartitions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ChangeSettingsParamsBodyAWSPartitions) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ChangeSettingsParamsBodyAWSPartitions) UnmarshalBinary(b []byte) error { + var res ChangeSettingsParamsBodyAWSPartitions + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + /* ChangeSettingsParamsBodyMetricsResolutions MetricsResolutions represents Prometheus exporters metrics resolutions. swagger:model ChangeSettingsParamsBodyMetricsResolutions diff --git a/api/server/v1/json/client/server_service/get_settings_responses.go b/api/server/v1/json/client/server_service/get_settings_responses.go index 158c7a6f81..24979b72a9 100644 --- a/api/server/v1/json/client/server_service/get_settings_responses.go +++ b/api/server/v1/json/client/server_service/get_settings_responses.go @@ -464,8 +464,8 @@ GetSettingsOKBodySettings Settings represents PMM Server settings. swagger:model GetSettingsOKBodySettings */ type GetSettingsOKBodySettings struct { - // True if updates are disabled. - UpdatesDisabled bool `json:"updates_disabled,omitempty"` + // True if updates are enabled. + UpdatesEnabled bool `json:"updates_enabled,omitempty"` // True if telemetry is enabled. TelemetryEnabled bool `json:"telemetry_enabled,omitempty"` diff --git a/api/server/v1/json/client/server_service/server_service_client.go b/api/server/v1/json/client/server_service/server_service_client.go index 27c192380b..33f2e2e97a 100644 --- a/api/server/v1/json/client/server_service/server_service_client.go +++ b/api/server/v1/json/client/server_service/server_service_client.go @@ -32,6 +32,8 @@ type ClientService interface { ChangeSettings(params *ChangeSettingsParams, opts ...ClientOption) (*ChangeSettingsOK, error) + ChangeSettings2(params *ChangeSettings2Params, opts ...ClientOption) (*ChangeSettings2OK, error) + CheckUpdates(params *CheckUpdatesParams, opts ...ClientOption) (*CheckUpdatesOK, error) GetSettings(params *GetSettingsParams, opts ...ClientOption) (*GetSettingsOK, error) @@ -127,6 +129,45 @@ func (a *Client) ChangeSettings(params *ChangeSettingsParams, opts ...ClientOpti return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) } +/* +ChangeSettings2 changes settings + +Changes PMM Server settings. +*/ +func (a *Client) ChangeSettings2(params *ChangeSettings2Params, opts ...ClientOption) (*ChangeSettings2OK, error) { + // TODO: Validate the params before sending + if params == nil { + params = NewChangeSettings2Params() + } + op := &runtime.ClientOperation{ + ID: "ChangeSettings2", + Method: "PATCH", + PathPattern: "/v1/Settings/Change", + ProducesMediaTypes: []string{"application/json"}, + ConsumesMediaTypes: []string{"application/json"}, + Schemes: []string{"http", "https"}, + Params: params, + Reader: &ChangeSettings2Reader{formats: a.formats}, + Context: params.Context, + Client: params.HTTPClient, + } + for _, opt := range opts { + opt(op) + } + + result, err := a.transport.Submit(op) + if err != nil { + return nil, err + } + success, ok := result.(*ChangeSettings2OK) + if ok { + return success, nil + } + // unexpected success response + unexpectedSuccess := result.(*ChangeSettings2Default) + return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) +} + /* CheckUpdates checks updates diff --git a/api/server/v1/json/v1.json b/api/server/v1/json/v1.json index 8af12bad6e..da0e76e0c9 100644 --- a/api/server/v1/json/v1.json +++ b/api/server/v1/json/v1.json @@ -148,78 +148,348 @@ "type": "object", "properties": { "aws_partitions": { - "type": "array", - "items": { - "type": "string" + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 0 + } }, - "x-order": 7 + "x-order": 5 }, "data_retention": { "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", "type": "string", - "x-order": 5 + "x-order": 3 }, - "disable_access_control": { + "enable_access_control": { "type": "boolean", - "title": "Disable Access Control", - "x-order": 20 + "title": "Enable Access Control", + "x-order": 12 }, - "disable_alerting": { - "description": "Disable Alerting.", + "enable_alerting": { + "description": "Enable Alerting.", "type": "boolean", - "x-order": 11 + "x-order": 7 }, - "disable_azurediscover": { - "description": "Disable Azure Discover.", + "enable_azurediscover": { + "description": "Enable Azure Discover.", "type": "boolean", - "x-order": 16 + "x-order": 10 }, - "disable_backup_management": { - "description": "Disable Backup Management.", + "enable_backup_management": { + "description": "Enable Backup Management.", "type": "boolean", - "x-order": 18 + "x-order": 11 }, - "disable_stt": { - "description": "Disable Security Threat Tool.", + "enable_stt": { + "description": "Enable Security Threat Tool.", "type": "boolean", - "x-order": 9 + "x-order": 6 }, - "disable_telemetry": { + "enable_telemetry": { "type": "boolean", - "x-order": 3 + "x-order": 1 }, - "disable_updates": { + "enable_updates": { "type": "boolean", + "x-order": 0 + }, + "metrics_resolutions": { + "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", + "type": "object", + "properties": { + "hr": { + "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 0 + }, + "lr": { + "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 2 + }, + "mr": { + "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 1 + } + }, + "x-order": 2 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 8 + }, + "ssh_key": { + "type": "string", + "x-order": 4 + }, + "stt_check_intervals": { + "description": "STTCheckIntervals represents intervals between STT checks.", + "type": "object", + "properties": { + "frequent_interval": { + "description": "Interval for frequent check runs.", + "type": "string", + "x-order": 2 + }, + "rare_interval": { + "description": "Interval for rare check runs.", + "type": "string", + "x-order": 1 + }, + "standard_interval": { + "description": "Standard check interval.", + "type": "string", + "x-order": 0 + } + }, + "x-order": 9 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "settings": { + "description": "Settings represents PMM Server settings.", + "type": "object", + "properties": { + "alerting_enabled": { + "description": "True if Alerting is enabled.", + "type": "boolean", + "x-order": 8 + }, + "aws_partitions": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 5 + }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 12 + }, + "backup_management_enabled": { + "description": "True if Backup Management is enabled.", + "type": "boolean", + "x-order": 11 + }, + "connected_to_platform": { + "type": "boolean", + "title": "True if the PMM instance is connected to Platform", + "x-order": 13 + }, + "data_retention": { + "type": "string", + "x-order": 3 + }, + "default_role_id": { + "description": "Default Access Control role ID for new users.", + "type": "integer", + "format": "int64", + "x-order": 16 + }, + "enable_access_control": { + "description": "True if Access Control is enabled.", + "type": "boolean", + "x-order": 15 + }, + "metrics_resolutions": { + "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", + "type": "object", + "properties": { + "hr": { + "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 0 + }, + "lr": { + "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 2 + }, + "mr": { + "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 1 + } + }, + "x-order": 2 + }, + "platform_email": { + "description": "Percona Platform user's email, if this PMM instance is linked to the Platform.", + "type": "string", + "x-order": 7 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 9 + }, + "ssh_key": { + "type": "string", + "x-order": 4 + }, + "stt_check_intervals": { + "description": "STTCheckIntervals represents intervals between STT checks.", + "type": "object", + "properties": { + "frequent_interval": { + "description": "Interval for frequent check runs.", + "type": "string", + "x-order": 2 + }, + "rare_interval": { + "description": "Interval for rare check runs.", + "type": "string", + "x-order": 1 + }, + "standard_interval": { + "description": "Standard check interval.", + "type": "string", + "x-order": 0 + } + }, + "x-order": 10 + }, + "stt_enabled": { + "description": "True if Security Threat Tool is enabled.", + "type": "boolean", + "x-order": 6 + }, + "telemetry_enabled": { + "description": "True if telemetry is enabled.", + "type": "boolean", + "x-order": 1 + }, + "telemetry_summaries": { + "type": "array", + "title": "Includes list of collected telemetry", + "items": { + "type": "string" + }, + "x-order": 14 + }, + "updates_enabled": { + "description": "True if updates are enabled.", + "type": "boolean", + "x-order": 0 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 0 + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string", + "x-order": 0 + } + }, + "additionalProperties": false + }, + "x-order": 2 + }, + "message": { + "type": "string", "x-order": 1 + } + } + } + } + } + }, + "patch": { + "description": "Changes PMM Server settings.", + "tags": [ + "ServerService" + ], + "summary": "Change settings", + "operationId": "ChangeSettings2", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "aws_partitions": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 0 + } + }, + "x-order": 5 + }, + "data_retention": { + "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", + "type": "string", + "x-order": 3 }, "enable_access_control": { "type": "boolean", "title": "Enable Access Control", - "x-order": 19 + "x-order": 12 }, "enable_alerting": { "description": "Enable Alerting.", "type": "boolean", - "x-order": 10 + "x-order": 7 }, "enable_azurediscover": { "description": "Enable Azure Discover.", "type": "boolean", - "x-order": 15 + "x-order": 10 }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", - "x-order": 17 + "x-order": 11 }, "enable_stt": { "description": "Enable Security Threat Tool.", "type": "boolean", - "x-order": 8 + "x-order": 6 }, "enable_telemetry": { "type": "boolean", - "x-order": 2 + "x-order": 1 }, "enable_updates": { "type": "boolean", @@ -245,20 +515,16 @@ "x-order": 1 } }, - "x-order": 4 + "x-order": 2 }, "pmm_public_address": { "description": "PMM Server public address.", "type": "string", - "x-order": 12 - }, - "remove_pmm_public_address": { - "type": "boolean", - "x-order": 13 + "x-order": 8 }, "ssh_key": { "type": "string", - "x-order": 6 + "x-order": 4 }, "stt_check_intervals": { "description": "STTCheckIntervals represents intervals between STT checks.", @@ -280,7 +546,7 @@ "x-order": 0 } }, - "x-order": 14 + "x-order": 9 } } } @@ -414,8 +680,8 @@ }, "x-order": 14 }, - "updates_disabled": { - "description": "True if updates are disabled.", + "updates_enabled": { + "description": "True if updates are enabled.", "type": "boolean", "x-order": 0 } @@ -607,8 +873,8 @@ }, "x-order": 14 }, - "updates_disabled": { - "description": "True if updates are disabled.", + "updates_enabled": { + "description": "True if updates are enabled.", "type": "boolean", "x-order": 0 } diff --git a/api/server/v1/server.pb.go b/api/server/v1/server.pb.go index a1ec1f5538..b67622f47c 100644 --- a/api/server/v1/server.pb.go +++ b/api/server/v1/server.pb.go @@ -16,7 +16,11 @@ import ( 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/fieldmaskpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" + _ "google.golang.org/protobuf/types/known/wrapperspb" + + common "github.com/percona/pmm/api/common" ) const ( @@ -926,8 +930,8 @@ type Settings struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // True if updates are disabled. - UpdatesDisabled bool `protobuf:"varint,1,opt,name=updates_disabled,json=updatesDisabled,proto3" json:"updates_disabled,omitempty"` + // True if updates are enabled. + UpdatesEnabled bool `protobuf:"varint,1,opt,name=updates_enabled,json=updatesEnabled,proto3" json:"updates_enabled,omitempty"` // True if telemetry is enabled. TelemetryEnabled bool `protobuf:"varint,2,opt,name=telemetry_enabled,json=telemetryEnabled,proto3" json:"telemetry_enabled,omitempty"` MetricsResolutions *MetricsResolutions `protobuf:"bytes,3,opt,name=metrics_resolutions,json=metricsResolutions,proto3" json:"metrics_resolutions,omitempty"` @@ -990,9 +994,9 @@ func (*Settings) Descriptor() ([]byte, []int) { return file_server_v1_server_proto_rawDescGZIP(), []int{15} } -func (x *Settings) GetUpdatesDisabled() bool { +func (x *Settings) GetUpdatesEnabled() bool { if x != nil { - return x.UpdatesDisabled + return x.UpdatesEnabled } return false } @@ -1199,40 +1203,27 @@ type ChangeSettingsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - EnableUpdates bool `protobuf:"varint,28,opt,name=enable_updates,json=enableUpdates,proto3" json:"enable_updates,omitempty"` - DisableUpdates bool `protobuf:"varint,29,opt,name=disable_updates,json=disableUpdates,proto3" json:"disable_updates,omitempty"` - EnableTelemetry bool `protobuf:"varint,1,opt,name=enable_telemetry,json=enableTelemetry,proto3" json:"enable_telemetry,omitempty"` - DisableTelemetry bool `protobuf:"varint,2,opt,name=disable_telemetry,json=disableTelemetry,proto3" json:"disable_telemetry,omitempty"` + EnableUpdates *bool `protobuf:"varint,28,opt,name=enable_updates,json=enableUpdates,proto3,oneof" json:"enable_updates,omitempty"` + EnableTelemetry *bool `protobuf:"varint,1,opt,name=enable_telemetry,json=enableTelemetry,proto3,oneof" json:"enable_telemetry,omitempty"` MetricsResolutions *MetricsResolutions `protobuf:"bytes,3,opt,name=metrics_resolutions,json=metricsResolutions,proto3" json:"metrics_resolutions,omitempty"` // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. DataRetention *durationpb.Duration `protobuf:"bytes,4,opt,name=data_retention,json=dataRetention,proto3" json:"data_retention,omitempty"` - SshKey string `protobuf:"bytes,5,opt,name=ssh_key,json=sshKey,proto3" json:"ssh_key,omitempty"` - AwsPartitions []string `protobuf:"bytes,6,rep,name=aws_partitions,json=awsPartitions,proto3" json:"aws_partitions,omitempty"` + SshKey *string `protobuf:"bytes,5,opt,name=ssh_key,json=sshKey,proto3,oneof" json:"ssh_key,omitempty"` + AwsPartitions *common.StringArray `protobuf:"bytes,6,opt,name=aws_partitions,json=awsPartitions,proto3,oneof" json:"aws_partitions,omitempty"` // Enable Security Threat Tool. - EnableStt bool `protobuf:"varint,11,opt,name=enable_stt,json=enableStt,proto3" json:"enable_stt,omitempty"` - // Disable Security Threat Tool. - DisableStt bool `protobuf:"varint,12,opt,name=disable_stt,json=disableStt,proto3" json:"disable_stt,omitempty"` + EnableStt *bool `protobuf:"varint,11,opt,name=enable_stt,json=enableStt,proto3,oneof" json:"enable_stt,omitempty"` // Enable Alerting. - EnableAlerting bool `protobuf:"varint,13,opt,name=enable_alerting,json=enableAlerting,proto3" json:"enable_alerting,omitempty"` - // Disable Alerting. - DisableAlerting bool `protobuf:"varint,14,opt,name=disable_alerting,json=disableAlerting,proto3" json:"disable_alerting,omitempty"` + EnableAlerting *bool `protobuf:"varint,13,opt,name=enable_alerting,json=enableAlerting,proto3,oneof" json:"enable_alerting,omitempty"` // PMM Server public address. - PmmPublicAddress string `protobuf:"bytes,19,opt,name=pmm_public_address,json=pmmPublicAddress,proto3" json:"pmm_public_address,omitempty"` - RemovePmmPublicAddress bool `protobuf:"varint,20,opt,name=remove_pmm_public_address,json=removePmmPublicAddress,proto3" json:"remove_pmm_public_address,omitempty"` + PmmPublicAddress *string `protobuf:"bytes,19,opt,name=pmm_public_address,json=pmmPublicAddress,proto3,oneof" json:"pmm_public_address,omitempty"` // Intervals between STT check runs. SttCheckIntervals *STTCheckIntervals `protobuf:"bytes,21,opt,name=stt_check_intervals,json=sttCheckIntervals,proto3" json:"stt_check_intervals,omitempty"` // Enable Azure Discover. - EnableAzurediscover bool `protobuf:"varint,22,opt,name=enable_azurediscover,json=enableAzurediscover,proto3" json:"enable_azurediscover,omitempty"` - // Disable Azure Discover. - DisableAzurediscover bool `protobuf:"varint,23,opt,name=disable_azurediscover,json=disableAzurediscover,proto3" json:"disable_azurediscover,omitempty"` + EnableAzurediscover *bool `protobuf:"varint,22,opt,name=enable_azurediscover,json=enableAzurediscover,proto3,oneof" json:"enable_azurediscover,omitempty"` // Enable Backup Management. - EnableBackupManagement bool `protobuf:"varint,24,opt,name=enable_backup_management,json=enableBackupManagement,proto3" json:"enable_backup_management,omitempty"` - // Disable Backup Management. - DisableBackupManagement bool `protobuf:"varint,25,opt,name=disable_backup_management,json=disableBackupManagement,proto3" json:"disable_backup_management,omitempty"` + EnableBackupManagement *bool `protobuf:"varint,24,opt,name=enable_backup_management,json=enableBackupManagement,proto3,oneof" json:"enable_backup_management,omitempty"` // Enable Access Control - EnableAccessControl bool `protobuf:"varint,30,opt,name=enable_access_control,json=enableAccessControl,proto3" json:"enable_access_control,omitempty"` - // Disable Access Control - DisableAccessControl bool `protobuf:"varint,31,opt,name=disable_access_control,json=disableAccessControl,proto3" json:"disable_access_control,omitempty"` + EnableAccessControl *bool `protobuf:"varint,30,opt,name=enable_access_control,json=enableAccessControl,proto3,oneof" json:"enable_access_control,omitempty"` } func (x *ChangeSettingsRequest) Reset() { @@ -1268,29 +1259,15 @@ func (*ChangeSettingsRequest) Descriptor() ([]byte, []int) { } func (x *ChangeSettingsRequest) GetEnableUpdates() bool { - if x != nil { - return x.EnableUpdates - } - return false -} - -func (x *ChangeSettingsRequest) GetDisableUpdates() bool { - if x != nil { - return x.DisableUpdates + if x != nil && x.EnableUpdates != nil { + return *x.EnableUpdates } return false } func (x *ChangeSettingsRequest) GetEnableTelemetry() bool { - if x != nil { - return x.EnableTelemetry - } - return false -} - -func (x *ChangeSettingsRequest) GetDisableTelemetry() bool { - if x != nil { - return x.DisableTelemetry + if x != nil && x.EnableTelemetry != nil { + return *x.EnableTelemetry } return false } @@ -1310,13 +1287,13 @@ func (x *ChangeSettingsRequest) GetDataRetention() *durationpb.Duration { } func (x *ChangeSettingsRequest) GetSshKey() string { - if x != nil { - return x.SshKey + if x != nil && x.SshKey != nil { + return *x.SshKey } return "" } -func (x *ChangeSettingsRequest) GetAwsPartitions() []string { +func (x *ChangeSettingsRequest) GetAwsPartitions() *common.StringArray { if x != nil { return x.AwsPartitions } @@ -1324,47 +1301,26 @@ func (x *ChangeSettingsRequest) GetAwsPartitions() []string { } func (x *ChangeSettingsRequest) GetEnableStt() bool { - if x != nil { - return x.EnableStt - } - return false -} - -func (x *ChangeSettingsRequest) GetDisableStt() bool { - if x != nil { - return x.DisableStt + if x != nil && x.EnableStt != nil { + return *x.EnableStt } return false } func (x *ChangeSettingsRequest) GetEnableAlerting() bool { - if x != nil { - return x.EnableAlerting - } - return false -} - -func (x *ChangeSettingsRequest) GetDisableAlerting() bool { - if x != nil { - return x.DisableAlerting + if x != nil && x.EnableAlerting != nil { + return *x.EnableAlerting } return false } func (x *ChangeSettingsRequest) GetPmmPublicAddress() string { - if x != nil { - return x.PmmPublicAddress + if x != nil && x.PmmPublicAddress != nil { + return *x.PmmPublicAddress } return "" } -func (x *ChangeSettingsRequest) GetRemovePmmPublicAddress() bool { - if x != nil { - return x.RemovePmmPublicAddress - } - return false -} - func (x *ChangeSettingsRequest) GetSttCheckIntervals() *STTCheckIntervals { if x != nil { return x.SttCheckIntervals @@ -1373,43 +1329,22 @@ func (x *ChangeSettingsRequest) GetSttCheckIntervals() *STTCheckIntervals { } func (x *ChangeSettingsRequest) GetEnableAzurediscover() bool { - if x != nil { - return x.EnableAzurediscover - } - return false -} - -func (x *ChangeSettingsRequest) GetDisableAzurediscover() bool { - if x != nil { - return x.DisableAzurediscover + if x != nil && x.EnableAzurediscover != nil { + return *x.EnableAzurediscover } return false } func (x *ChangeSettingsRequest) GetEnableBackupManagement() bool { - if x != nil { - return x.EnableBackupManagement - } - return false -} - -func (x *ChangeSettingsRequest) GetDisableBackupManagement() bool { - if x != nil { - return x.DisableBackupManagement + if x != nil && x.EnableBackupManagement != nil { + return *x.EnableBackupManagement } return false } func (x *ChangeSettingsRequest) GetEnableAccessControl() bool { - if x != nil { - return x.EnableAccessControl - } - return false -} - -func (x *ChangeSettingsRequest) GetDisableAccessControl() bool { - if x != nil { - return x.DisableAccessControl + if x != nil && x.EnableAccessControl != nil { + return *x.EnableAccessControl } return false } @@ -1552,384 +1487,384 @@ var File_server_v1_server_proto protoreflect.FileDescriptor var file_server_v1_server_proto_rawDesc = []byte{ 0x0a, 0x16, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 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, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, - 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x0b, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, - 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x22, 0x26, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x22, 0xdd, 0x01, 0x0a, 0x0f, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x07, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x64, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x12, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, - 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x13, - 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x1b, 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x13, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x6e, 0x6c, - 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x8a, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x2e, - 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x29, - 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, 0x65, 0x77, 0x73, 0x55, 0x72, - 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x22, 0x14, 0x0a, 0x12, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, - 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, + 0x2e, 0x76, 0x31, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 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, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 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, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, + 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x26, 0x0a, 0x0e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, + 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x75, 0x6d, 0x6d, + 0x79, 0x22, 0xdd, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, + 0x30, 0x0a, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x12, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, + 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x73, 0x5f, + 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x4e, 0x65, 0x77, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, + 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x53, + 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x22, 0x66, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, + 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, - 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, - 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x66, 0x0a, 0x14, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, - 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x02, 0x68, - 0x72, 0x18, 0x01, 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, 0x02, 0x68, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6d, 0x72, 0x18, 0x02, 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, 0x02, 0x6d, - 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6c, 0x72, 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, 0x02, 0x6c, 0x72, 0x22, 0xe3, 0x01, 0x0a, - 0x11, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 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, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, - 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x61, - 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 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, 0x72, 0x61, - 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x46, 0x0a, 0x11, 0x66, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 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, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x22, 0xed, 0x06, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x29, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, - 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 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, 0x0d, 0x64, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x73, 0x68, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, - 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x74, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x73, 0x74, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x65, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, - 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x13, 0x73, 0x74, - 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2f, 0x0a, - 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x74, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x32, - 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, - 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, 0x04, 0x08, 0x0e, - 0x10, 0x0f, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x22, 0xd4, 0x08, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x1c, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, - 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 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, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, - 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, - 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x53, 0x74, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, - 0x74, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x74, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, - 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, - 0x10, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x50, 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, + 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x12, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x02, 0x68, 0x72, 0x18, 0x01, 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, 0x02, 0x68, 0x72, 0x12, 0x29, 0x0a, + 0x02, 0x6d, 0x72, 0x18, 0x02, 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, 0x02, 0x6d, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6c, 0x72, 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, + 0x02, 0x6c, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x11, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, + 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, + 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, + 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x02, 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, 0x72, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x46, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 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, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xeb, 0x06, 0x0a, 0x08, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x2b, 0x0a, 0x11, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 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, + 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, + 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, + 0x0a, 0x0b, 0x73, 0x74, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x25, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, + 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, + 0x19, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x17, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x32, + 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x2f, 0x0a, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x12, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x15, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x4a, + 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0d, 0x10, + 0x0e, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xe8, 0x07, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, + 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 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, 0x0d, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, + 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, + 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0e, 0x61, + 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x03, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x04, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, + 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x31, + 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x70, 0x6d, + 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, - 0x31, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, - 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, 0x52, + 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x19, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x32, 0x0a, - 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, - 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, - 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, - 0x12, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x22, 0x49, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x22, 0x43, 0x0a, 0x17, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2a, 0xce, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, - 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, - 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, - 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, - 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, - 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x4d, 0x49, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, - 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, - 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, + 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x73, 0x68, 0x5f, + 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x73, 0x74, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x6d, + 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, + 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, + 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04, + 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, + 0x22, 0x49, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x17, 0x41, + 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, + 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xce, 0x01, 0x0a, + 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, 0x54, + 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, + 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, - 0x44, 0x4f, 0x10, 0x05, 0x32, 0xa2, 0x0d, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xa4, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc5, 0x01, 0x12, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, - 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, - 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, - 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x79, 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, - 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, - 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0xfd, - 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x9c, 0x01, 0x92, 0x41, 0x79, 0x12, 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, - 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, - 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, - 0x20, 0x61, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, - 0x27, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xa9, - 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x58, 0x92, 0x41, 0x39, 0x12, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, 0x29, 0x12, 0x0c, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, - 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, - 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, + 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, + 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x4d, 0x49, + 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, + 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0xbc, 0x0d, + 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x7f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x3d, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, + 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0xa4, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1b, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, + 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc5, 0x01, + 0x12, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6e, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, + 0x74, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x65, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, + 0x20, 0x79, 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, + 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x6f, + 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x20, + 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, + 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, + 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x92, 0x41, 0x79, 0x12, 0x10, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, + 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, + 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x39, 0x12, 0x0d, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, + 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, + 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xa3, 0x01, 0x0a, + 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, + 0x92, 0x41, 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, + 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, + 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2f, 0x47, 0x65, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, + 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x12, 0xa7, 0x01, 0x0a, - 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, - 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x10, 0x41, 0x57, 0x53, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, 0x57, 0x53, 0x20, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x1b, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, 0x32, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, - 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, - 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, - 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, - 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x5a, 0x18, 0x3a, 0x01, 0x2a, 0x32, + 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x10, 0x41, 0x57, + 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, 0x57, + 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x1a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, 0x32, + 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x41, 0x57, 0x53, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x90, 0x01, 0x0a, + 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, + 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, + 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1973,6 +1908,7 @@ var ( (*AWSInstanceCheckResponse)(nil), // 22: server.v1.AWSInstanceCheckResponse (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp (*durationpb.Duration)(nil), // 24: google.protobuf.Duration + (*common.StringArray)(nil), // 25: common.StringArray } ) @@ -1996,31 +1932,32 @@ var file_server_v1_server_proto_depIdxs = []int32{ 16, // 16: server.v1.GetSettingsResponse.settings:type_name -> server.v1.Settings 14, // 17: server.v1.ChangeSettingsRequest.metrics_resolutions:type_name -> server.v1.MetricsResolutions 24, // 18: server.v1.ChangeSettingsRequest.data_retention:type_name -> google.protobuf.Duration - 15, // 19: server.v1.ChangeSettingsRequest.stt_check_intervals:type_name -> server.v1.STTCheckIntervals - 16, // 20: server.v1.ChangeSettingsResponse.settings:type_name -> server.v1.Settings - 2, // 21: server.v1.ServerService.Version:input_type -> server.v1.VersionRequest - 4, // 22: server.v1.ServerService.Readiness:input_type -> server.v1.ReadinessRequest - 6, // 23: server.v1.ServerService.LeaderHealthCheck:input_type -> server.v1.LeaderHealthCheckRequest - 8, // 24: server.v1.ServerService.CheckUpdates:input_type -> server.v1.CheckUpdatesRequest - 10, // 25: server.v1.ServerService.StartUpdate:input_type -> server.v1.StartUpdateRequest - 12, // 26: server.v1.ServerService.UpdateStatus:input_type -> server.v1.UpdateStatusRequest - 17, // 27: server.v1.ServerService.GetSettings:input_type -> server.v1.GetSettingsRequest - 19, // 28: server.v1.ServerService.ChangeSettings:input_type -> server.v1.ChangeSettingsRequest - 21, // 29: server.v1.ServerService.AWSInstanceCheck:input_type -> server.v1.AWSInstanceCheckRequest - 3, // 30: server.v1.ServerService.Version:output_type -> server.v1.VersionResponse - 5, // 31: server.v1.ServerService.Readiness:output_type -> server.v1.ReadinessResponse - 7, // 32: server.v1.ServerService.LeaderHealthCheck:output_type -> server.v1.LeaderHealthCheckResponse - 9, // 33: server.v1.ServerService.CheckUpdates:output_type -> server.v1.CheckUpdatesResponse - 11, // 34: server.v1.ServerService.StartUpdate:output_type -> server.v1.StartUpdateResponse - 13, // 35: server.v1.ServerService.UpdateStatus:output_type -> server.v1.UpdateStatusResponse - 18, // 36: server.v1.ServerService.GetSettings:output_type -> server.v1.GetSettingsResponse - 20, // 37: server.v1.ServerService.ChangeSettings:output_type -> server.v1.ChangeSettingsResponse - 22, // 38: server.v1.ServerService.AWSInstanceCheck:output_type -> server.v1.AWSInstanceCheckResponse - 30, // [30:39] is the sub-list for method output_type - 21, // [21:30] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 25, // 19: server.v1.ChangeSettingsRequest.aws_partitions:type_name -> common.StringArray + 15, // 20: server.v1.ChangeSettingsRequest.stt_check_intervals:type_name -> server.v1.STTCheckIntervals + 16, // 21: server.v1.ChangeSettingsResponse.settings:type_name -> server.v1.Settings + 2, // 22: server.v1.ServerService.Version:input_type -> server.v1.VersionRequest + 4, // 23: server.v1.ServerService.Readiness:input_type -> server.v1.ReadinessRequest + 6, // 24: server.v1.ServerService.LeaderHealthCheck:input_type -> server.v1.LeaderHealthCheckRequest + 8, // 25: server.v1.ServerService.CheckUpdates:input_type -> server.v1.CheckUpdatesRequest + 10, // 26: server.v1.ServerService.StartUpdate:input_type -> server.v1.StartUpdateRequest + 12, // 27: server.v1.ServerService.UpdateStatus:input_type -> server.v1.UpdateStatusRequest + 17, // 28: server.v1.ServerService.GetSettings:input_type -> server.v1.GetSettingsRequest + 19, // 29: server.v1.ServerService.ChangeSettings:input_type -> server.v1.ChangeSettingsRequest + 21, // 30: server.v1.ServerService.AWSInstanceCheck:input_type -> server.v1.AWSInstanceCheckRequest + 3, // 31: server.v1.ServerService.Version:output_type -> server.v1.VersionResponse + 5, // 32: server.v1.ServerService.Readiness:output_type -> server.v1.ReadinessResponse + 7, // 33: server.v1.ServerService.LeaderHealthCheck:output_type -> server.v1.LeaderHealthCheckResponse + 9, // 34: server.v1.ServerService.CheckUpdates:output_type -> server.v1.CheckUpdatesResponse + 11, // 35: server.v1.ServerService.StartUpdate:output_type -> server.v1.StartUpdateResponse + 13, // 36: server.v1.ServerService.UpdateStatus:output_type -> server.v1.UpdateStatusResponse + 18, // 37: server.v1.ServerService.GetSettings:output_type -> server.v1.GetSettingsResponse + 20, // 38: server.v1.ServerService.ChangeSettings:output_type -> server.v1.ChangeSettingsResponse + 22, // 39: server.v1.ServerService.AWSInstanceCheck:output_type -> server.v1.AWSInstanceCheckResponse + 31, // [31:40] is the sub-list for method output_type + 22, // [22:31] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_server_v1_server_proto_init() } @@ -2294,6 +2231,7 @@ func file_server_v1_server_proto_init() { } } } + file_server_v1_server_proto_msgTypes[18].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/server/v1/server.pb.gw.go b/api/server/v1/server.pb.gw.go index f055d9ff27..79fe46963a 100644 --- a/api/server/v1/server.pb.gw.go +++ b/api/server/v1/server.pb.gw.go @@ -273,6 +273,38 @@ func local_request_ServerService_ChangeSettings_0(ctx context.Context, marshaler return msg, metadata, err } +func request_ServerService_ChangeSettings_1(ctx context.Context, marshaler runtime.Marshaler, client ServerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ChangeSettingsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ChangeSettings(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_ServerService_ChangeSettings_1(ctx context.Context, marshaler runtime.Marshaler, server ServerServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ChangeSettingsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ChangeSettings(ctx, &protoReq) + return msg, metadata, err +} + func request_ServerService_AWSInstanceCheck_0(ctx context.Context, marshaler runtime.Marshaler, client ServerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq AWSInstanceCheckRequest var metadata runtime.ServerMetadata @@ -502,6 +534,30 @@ func RegisterServerServiceHandlerServer(ctx context.Context, mux *runtime.ServeM forward_ServerService_ChangeSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle("PATCH", pattern_ServerService_ChangeSettings_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.v1.ServerService/ChangeSettings", runtime.WithHTTPPathPattern("/v1/Settings/Change")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ServerService_ChangeSettings_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ServerService_ChangeSettings_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle("POST", pattern_ServerService_AWSInstanceCheck_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -734,6 +790,27 @@ func RegisterServerServiceHandlerClient(ctx context.Context, mux *runtime.ServeM forward_ServerService_ChangeSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle("PATCH", pattern_ServerService_ChangeSettings_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.v1.ServerService/ChangeSettings", runtime.WithHTTPPathPattern("/v1/Settings/Change")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ServerService_ChangeSettings_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ServerService_ChangeSettings_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle("POST", pattern_ServerService_AWSInstanceCheck_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -775,6 +852,8 @@ var ( pattern_ServerService_ChangeSettings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "Settings", "Change"}, "")) + pattern_ServerService_ChangeSettings_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "Settings", "Change"}, "")) + pattern_ServerService_AWSInstanceCheck_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "AWSInstanceCheck"}, "")) ) @@ -795,5 +874,7 @@ var ( forward_ServerService_ChangeSettings_0 = runtime.ForwardResponseMessage + forward_ServerService_ChangeSettings_1 = runtime.ForwardResponseMessage + forward_ServerService_AWSInstanceCheck_0 = runtime.ForwardResponseMessage ) diff --git a/api/server/v1/server.pb.validate.go b/api/server/v1/server.pb.validate.go index 37641ce2ff..0d019013a0 100644 --- a/api/server/v1/server.pb.validate.go +++ b/api/server/v1/server.pb.validate.go @@ -1956,7 +1956,7 @@ func (m *Settings) validate(all bool) error { var errors []error - // no validation rules for UpdatesDisabled + // no validation rules for UpdatesEnabled // no validation rules for TelemetryEnabled @@ -2399,14 +2399,6 @@ func (m *ChangeSettingsRequest) validate(all bool) error { var errors []error - // no validation rules for EnableUpdates - - // no validation rules for DisableUpdates - - // no validation rules for EnableTelemetry - - // no validation rules for DisableTelemetry - if all { switch v := interface{}(m.GetMetricsResolutions()).(type) { case interface{ ValidateAll() error }: @@ -2465,20 +2457,6 @@ func (m *ChangeSettingsRequest) validate(all bool) error { } } - // no validation rules for SshKey - - // no validation rules for EnableStt - - // no validation rules for DisableStt - - // no validation rules for EnableAlerting - - // no validation rules for DisableAlerting - - // no validation rules for PmmPublicAddress - - // no validation rules for RemovePmmPublicAddress - if all { switch v := interface{}(m.GetSttCheckIntervals()).(type) { case interface{ ValidateAll() error }: @@ -2508,17 +2486,72 @@ func (m *ChangeSettingsRequest) validate(all bool) error { } } - // no validation rules for EnableAzurediscover + if m.EnableUpdates != nil { + // no validation rules for EnableUpdates + } + + if m.EnableTelemetry != nil { + // no validation rules for EnableTelemetry + } + + if m.SshKey != nil { + // no validation rules for SshKey + } + + if m.AwsPartitions != nil { + if all { + switch v := interface{}(m.GetAwsPartitions()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ChangeSettingsRequestValidationError{ + field: "AwsPartitions", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ChangeSettingsRequestValidationError{ + field: "AwsPartitions", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAwsPartitions()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ChangeSettingsRequestValidationError{ + field: "AwsPartitions", + reason: "embedded message failed validation", + cause: err, + } + } + } + } + + if m.EnableStt != nil { + // no validation rules for EnableStt + } - // no validation rules for DisableAzurediscover + if m.EnableAlerting != nil { + // no validation rules for EnableAlerting + } - // no validation rules for EnableBackupManagement + if m.PmmPublicAddress != nil { + // no validation rules for PmmPublicAddress + } - // no validation rules for DisableBackupManagement + if m.EnableAzurediscover != nil { + // no validation rules for EnableAzurediscover + } - // no validation rules for EnableAccessControl + if m.EnableBackupManagement != nil { + // no validation rules for EnableBackupManagement + } - // no validation rules for DisableAccessControl + if m.EnableAccessControl != nil { + // no validation rules for EnableAccessControl + } if len(errors) > 0 { return ChangeSettingsRequestMultiError(errors) diff --git a/api/server/v1/server.proto b/api/server/v1/server.proto index 65a591684e..4b085d0ad6 100644 --- a/api/server/v1/server.proto +++ b/api/server/v1/server.proto @@ -2,9 +2,12 @@ syntax = "proto3"; package server.v1; +import "common/common.proto"; import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; +import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; +import "google/protobuf/wrappers.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; import "validate/validate.proto"; @@ -126,8 +129,8 @@ message STTCheckIntervals { message Settings { reserved 7, 8, 13, 14; // Removed fields - // True if updates are disabled. - bool updates_disabled = 1; + // True if updates are enabled. + bool updates_enabled = 1; // True if telemetry is enabled. bool telemetry_enabled = 2; MetricsResolutions metrics_resolutions = 3; @@ -167,40 +170,27 @@ message GetSettingsResponse { message ChangeSettingsRequest { reserved 7, 8, 9, 10, 15, 16, 17, 18; //Removed fields - bool enable_updates = 28; - bool disable_updates = 29; - bool enable_telemetry = 1; - bool disable_telemetry = 2; + optional bool enable_updates = 28; + optional bool enable_telemetry = 1; MetricsResolutions metrics_resolutions = 3; // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. google.protobuf.Duration data_retention = 4; - string ssh_key = 5; - repeated string aws_partitions = 6; + optional string ssh_key = 5; + optional common.StringArray aws_partitions = 6; // Enable Security Threat Tool. - bool enable_stt = 11; - // Disable Security Threat Tool. - bool disable_stt = 12; + optional bool enable_stt = 11; // Enable Alerting. - bool enable_alerting = 13; - // Disable Alerting. - bool disable_alerting = 14; + optional bool enable_alerting = 13; // PMM Server public address. - string pmm_public_address = 19; - bool remove_pmm_public_address = 20; + optional string pmm_public_address = 19; // Intervals between STT check runs. STTCheckIntervals stt_check_intervals = 21; // Enable Azure Discover. - bool enable_azurediscover = 22; - // Disable Azure Discover. - bool disable_azurediscover = 23; + optional bool enable_azurediscover = 22; // Enable Backup Management. - bool enable_backup_management = 24; - // Disable Backup Management. - bool disable_backup_management = 25; + optional bool enable_backup_management = 24; // Enable Access Control - bool enable_access_control = 30; - // Disable Access Control - bool disable_access_control = 31; + optional bool enable_access_control = 30; } message ChangeSettingsResponse { @@ -293,6 +283,10 @@ service ServerService { option (google.api.http) = { post: "/v1/Settings/Change" body: "*" + additional_bindings { + patch: "/v1/Settings/Change" + body: "*" + } }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Change settings" diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index bc8bad3bd3..81da93d784 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -3002,17 +3002,9 @@ "type": "boolean", "x-order": 0 }, - "disable_updates": { - "type": "boolean", - "x-order": 1 - }, "enable_telemetry": { "type": "boolean", - "x-order": 2 - }, - "disable_telemetry": { - "type": "boolean", - "x-order": 3 + "x-order": 1 }, "metrics_resolutions": { "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", @@ -3034,52 +3026,341 @@ "x-order": 2 } }, - "x-order": 4 + "x-order": 2 }, "data_retention": { "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", "type": "string", - "x-order": 5 + "x-order": 3 }, "ssh_key": { "type": "string", - "x-order": 6 + "x-order": 4 }, "aws_partitions": { - "type": "array", - "items": { - "type": "string" + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 0 + } }, - "x-order": 7 + "x-order": 5 }, "enable_stt": { "description": "Enable Security Threat Tool.", "type": "boolean", - "x-order": 8 + "x-order": 6 }, - "disable_stt": { - "description": "Disable Security Threat Tool.", + "enable_alerting": { + "description": "Enable Alerting.", "type": "boolean", + "x-order": 7 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 8 + }, + "stt_check_intervals": { + "description": "STTCheckIntervals represents intervals between STT checks.", + "type": "object", + "properties": { + "standard_interval": { + "description": "Standard check interval.", + "type": "string", + "x-order": 0 + }, + "rare_interval": { + "description": "Interval for rare check runs.", + "type": "string", + "x-order": 1 + }, + "frequent_interval": { + "description": "Interval for frequent check runs.", + "type": "string", + "x-order": 2 + } + }, "x-order": 9 }, - "enable_alerting": { - "description": "Enable Alerting.", + "enable_azurediscover": { + "description": "Enable Azure Discover.", "type": "boolean", "x-order": 10 }, - "disable_alerting": { - "description": "Disable Alerting.", + "enable_backup_management": { + "description": "Enable Backup Management.", "type": "boolean", "x-order": 11 }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", + "enable_access_control": { + "type": "boolean", + "title": "Enable Access Control", "x-order": 12 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "settings": { + "description": "Settings represents PMM Server settings.", + "type": "object", + "properties": { + "updates_enabled": { + "description": "True if updates are enabled.", + "type": "boolean", + "x-order": 0 + }, + "telemetry_enabled": { + "description": "True if telemetry is enabled.", + "type": "boolean", + "x-order": 1 + }, + "metrics_resolutions": { + "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", + "type": "object", + "properties": { + "hr": { + "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 0 + }, + "mr": { + "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 1 + }, + "lr": { + "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 2 + } + }, + "x-order": 2 + }, + "data_retention": { + "type": "string", + "x-order": 3 + }, + "ssh_key": { + "type": "string", + "x-order": 4 + }, + "aws_partitions": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 5 + }, + "stt_enabled": { + "description": "True if Security Threat Tool is enabled.", + "type": "boolean", + "x-order": 6 + }, + "platform_email": { + "description": "Percona Platform user's email, if this PMM instance is linked to the Platform.", + "type": "string", + "x-order": 7 + }, + "alerting_enabled": { + "description": "True if Alerting is enabled.", + "type": "boolean", + "x-order": 8 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 9 + }, + "stt_check_intervals": { + "description": "STTCheckIntervals represents intervals between STT checks.", + "type": "object", + "properties": { + "standard_interval": { + "description": "Standard check interval.", + "type": "string", + "x-order": 0 + }, + "rare_interval": { + "description": "Interval for rare check runs.", + "type": "string", + "x-order": 1 + }, + "frequent_interval": { + "description": "Interval for frequent check runs.", + "type": "string", + "x-order": 2 + } + }, + "x-order": 10 + }, + "backup_management_enabled": { + "description": "True if Backup Management is enabled.", + "type": "boolean", + "x-order": 11 + }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 12 + }, + "connected_to_platform": { + "type": "boolean", + "title": "True if the PMM instance is connected to Platform", + "x-order": 13 + }, + "telemetry_summaries": { + "type": "array", + "title": "Includes list of collected telemetry", + "items": { + "type": "string" + }, + "x-order": 14 + }, + "enable_access_control": { + "description": "True if Access Control is enabled.", + "type": "boolean", + "x-order": 15 + }, + "default_role_id": { + "description": "Default Access Control role ID for new users.", + "type": "integer", + "format": "int64", + "x-order": 16 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string", + "x-order": 0 + } + }, + "additionalProperties": false + }, + "x-order": 2 + } + } + } + } + } + }, + "patch": { + "description": "Changes PMM Server settings.", + "tags": [ + "ServerService" + ], + "summary": "Change settings", + "operationId": "ChangeSettings2", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "enable_updates": { + "type": "boolean", + "x-order": 0 }, - "remove_pmm_public_address": { + "enable_telemetry": { "type": "boolean", - "x-order": 13 + "x-order": 1 + }, + "metrics_resolutions": { + "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", + "type": "object", + "properties": { + "hr": { + "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 0 + }, + "mr": { + "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 1 + }, + "lr": { + "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 2 + } + }, + "x-order": 2 + }, + "data_retention": { + "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", + "type": "string", + "x-order": 3 + }, + "ssh_key": { + "type": "string", + "x-order": 4 + }, + "aws_partitions": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 0 + } + }, + "x-order": 5 + }, + "enable_stt": { + "description": "Enable Security Threat Tool.", + "type": "boolean", + "x-order": 6 + }, + "enable_alerting": { + "description": "Enable Alerting.", + "type": "boolean", + "x-order": 7 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 8 }, "stt_check_intervals": { "description": "STTCheckIntervals represents intervals between STT checks.", @@ -3101,37 +3382,22 @@ "x-order": 2 } }, - "x-order": 14 + "x-order": 9 }, "enable_azurediscover": { "description": "Enable Azure Discover.", "type": "boolean", - "x-order": 15 - }, - "disable_azurediscover": { - "description": "Disable Azure Discover.", - "type": "boolean", - "x-order": 16 + "x-order": 10 }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", - "x-order": 17 - }, - "disable_backup_management": { - "description": "Disable Backup Management.", - "type": "boolean", - "x-order": 18 + "x-order": 11 }, "enable_access_control": { "type": "boolean", "title": "Enable Access Control", - "x-order": 19 - }, - "disable_access_control": { - "type": "boolean", - "title": "Disable Access Control", - "x-order": 20 + "x-order": 12 } } } @@ -3147,8 +3413,8 @@ "description": "Settings represents PMM Server settings.", "type": "object", "properties": { - "updates_disabled": { - "description": "True if updates are disabled.", + "updates_enabled": { + "description": "True if updates are enabled.", "type": "boolean", "x-order": 0 }, @@ -3340,8 +3606,8 @@ "description": "Settings represents PMM Server settings.", "type": "object", "properties": { - "updates_disabled": { - "description": "True if updates are disabled.", + "updates_enabled": { + "description": "True if updates are enabled.", "type": "boolean", "x-order": 0 }, diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 0f0386a131..2b1b44222b 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -151,17 +151,9 @@ "type": "boolean", "x-order": 0 }, - "disable_updates": { - "type": "boolean", - "x-order": 1 - }, "enable_telemetry": { "type": "boolean", - "x-order": 2 - }, - "disable_telemetry": { - "type": "boolean", - "x-order": 3 + "x-order": 1 }, "metrics_resolutions": { "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", @@ -183,52 +175,341 @@ "x-order": 2 } }, - "x-order": 4 + "x-order": 2 }, "data_retention": { "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", "type": "string", - "x-order": 5 + "x-order": 3 }, "ssh_key": { "type": "string", - "x-order": 6 + "x-order": 4 }, "aws_partitions": { - "type": "array", - "items": { - "type": "string" + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 0 + } }, - "x-order": 7 + "x-order": 5 }, "enable_stt": { "description": "Enable Security Threat Tool.", "type": "boolean", - "x-order": 8 + "x-order": 6 }, - "disable_stt": { - "description": "Disable Security Threat Tool.", + "enable_alerting": { + "description": "Enable Alerting.", "type": "boolean", + "x-order": 7 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 8 + }, + "stt_check_intervals": { + "description": "STTCheckIntervals represents intervals between STT checks.", + "type": "object", + "properties": { + "standard_interval": { + "description": "Standard check interval.", + "type": "string", + "x-order": 0 + }, + "rare_interval": { + "description": "Interval for rare check runs.", + "type": "string", + "x-order": 1 + }, + "frequent_interval": { + "description": "Interval for frequent check runs.", + "type": "string", + "x-order": 2 + } + }, "x-order": 9 }, - "enable_alerting": { - "description": "Enable Alerting.", + "enable_azurediscover": { + "description": "Enable Azure Discover.", "type": "boolean", "x-order": 10 }, - "disable_alerting": { - "description": "Disable Alerting.", + "enable_backup_management": { + "description": "Enable Backup Management.", "type": "boolean", "x-order": 11 }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", + "enable_access_control": { + "type": "boolean", + "title": "Enable Access Control", "x-order": 12 + } + } + } + } + ], + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "type": "object", + "properties": { + "settings": { + "description": "Settings represents PMM Server settings.", + "type": "object", + "properties": { + "updates_enabled": { + "description": "True if updates are enabled.", + "type": "boolean", + "x-order": 0 + }, + "telemetry_enabled": { + "description": "True if telemetry is enabled.", + "type": "boolean", + "x-order": 1 + }, + "metrics_resolutions": { + "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", + "type": "object", + "properties": { + "hr": { + "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 0 + }, + "mr": { + "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 1 + }, + "lr": { + "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 2 + } + }, + "x-order": 2 + }, + "data_retention": { + "type": "string", + "x-order": 3 + }, + "ssh_key": { + "type": "string", + "x-order": 4 + }, + "aws_partitions": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 5 + }, + "stt_enabled": { + "description": "True if Security Threat Tool is enabled.", + "type": "boolean", + "x-order": 6 + }, + "platform_email": { + "description": "Percona Platform user's email, if this PMM instance is linked to the Platform.", + "type": "string", + "x-order": 7 + }, + "alerting_enabled": { + "description": "True if Alerting is enabled.", + "type": "boolean", + "x-order": 8 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 9 + }, + "stt_check_intervals": { + "description": "STTCheckIntervals represents intervals between STT checks.", + "type": "object", + "properties": { + "standard_interval": { + "description": "Standard check interval.", + "type": "string", + "x-order": 0 + }, + "rare_interval": { + "description": "Interval for rare check runs.", + "type": "string", + "x-order": 1 + }, + "frequent_interval": { + "description": "Interval for frequent check runs.", + "type": "string", + "x-order": 2 + } + }, + "x-order": 10 + }, + "backup_management_enabled": { + "description": "True if Backup Management is enabled.", + "type": "boolean", + "x-order": 11 + }, + "azurediscover_enabled": { + "description": "True if Azure Discover is enabled.", + "type": "boolean", + "x-order": 12 + }, + "connected_to_platform": { + "type": "boolean", + "title": "True if the PMM instance is connected to Platform", + "x-order": 13 + }, + "telemetry_summaries": { + "type": "array", + "title": "Includes list of collected telemetry", + "items": { + "type": "string" + }, + "x-order": 14 + }, + "enable_access_control": { + "description": "True if Access Control is enabled.", + "type": "boolean", + "x-order": 15 + }, + "default_role_id": { + "description": "Default Access Control role ID for new users.", + "type": "integer", + "format": "int64", + "x-order": 16 + } + }, + "x-order": 0 + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "x-order": 0 + }, + "message": { + "type": "string", + "x-order": 1 + }, + "details": { + "type": "array", + "items": { + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", + "type": "object", + "properties": { + "@type": { + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", + "type": "string", + "x-order": 0 + } + }, + "additionalProperties": false + }, + "x-order": 2 + } + } + } + } + } + }, + "patch": { + "description": "Changes PMM Server settings.", + "tags": [ + "ServerService" + ], + "summary": "Change settings", + "operationId": "ChangeSettings2", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "enable_updates": { + "type": "boolean", + "x-order": 0 }, - "remove_pmm_public_address": { + "enable_telemetry": { "type": "boolean", - "x-order": 13 + "x-order": 1 + }, + "metrics_resolutions": { + "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", + "type": "object", + "properties": { + "hr": { + "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 0 + }, + "mr": { + "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 1 + }, + "lr": { + "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", + "type": "string", + "x-order": 2 + } + }, + "x-order": 2 + }, + "data_retention": { + "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", + "type": "string", + "x-order": 3 + }, + "ssh_key": { + "type": "string", + "x-order": 4 + }, + "aws_partitions": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "string" + }, + "x-order": 0 + } + }, + "x-order": 5 + }, + "enable_stt": { + "description": "Enable Security Threat Tool.", + "type": "boolean", + "x-order": 6 + }, + "enable_alerting": { + "description": "Enable Alerting.", + "type": "boolean", + "x-order": 7 + }, + "pmm_public_address": { + "description": "PMM Server public address.", + "type": "string", + "x-order": 8 }, "stt_check_intervals": { "description": "STTCheckIntervals represents intervals between STT checks.", @@ -250,37 +531,22 @@ "x-order": 2 } }, - "x-order": 14 + "x-order": 9 }, "enable_azurediscover": { "description": "Enable Azure Discover.", "type": "boolean", - "x-order": 15 - }, - "disable_azurediscover": { - "description": "Disable Azure Discover.", - "type": "boolean", - "x-order": 16 + "x-order": 10 }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", - "x-order": 17 - }, - "disable_backup_management": { - "description": "Disable Backup Management.", - "type": "boolean", - "x-order": 18 + "x-order": 11 }, "enable_access_control": { "type": "boolean", "title": "Enable Access Control", - "x-order": 19 - }, - "disable_access_control": { - "type": "boolean", - "title": "Disable Access Control", - "x-order": 20 + "x-order": 12 } } } @@ -296,8 +562,8 @@ "description": "Settings represents PMM Server settings.", "type": "object", "properties": { - "updates_disabled": { - "description": "True if updates are disabled.", + "updates_enabled": { + "description": "True if updates are enabled.", "type": "boolean", "x-order": 0 }, @@ -489,8 +755,8 @@ "description": "Settings represents PMM Server settings.", "type": "object", "properties": { - "updates_disabled": { - "description": "True if updates are disabled.", + "updates_enabled": { + "description": "True if updates are enabled.", "type": "boolean", "x-order": 0 }, diff --git a/descriptor.bin b/descriptor.bin index bf7d2a9c780293e09047b251440d644bc14d238a..279a8f86158d42524fd3ddba0e8b2b4c09420675 100644 GIT binary patch delta 13229 zcmbVS4RBo5b>92*wA#Ir_46dzvLwsT@}In{WGw!S!GPo#%Q41^Fod6gwAy`=7FN4r z->z*rrfV1T8)66$9x#-UFi_$G1rHNbh9P87kA;<$CZ?znxt{*CB~?fc#nvOQgx zpD*M$tN#rx6bq$-6IE3Idf9kgshG{rjueZjMQ6E;9!TZNp5G@>wC7WbD5jIiMQ1zf1+YAM< zdZ)`!b)b5B@4IJv6n`7=H-^9Q)AwwbBfWhOZkO(Cp)i~CHuDmu%QKs2vR*DTIiK?H z2vTvYYt0%NznX^jV#Mi?^$V%eoLLGJ!Na{)j}!8YQ!K{C&BMWu^ivIPh+M{l>zz9KsRlPjcJpAPQ%675;6P+`g-2IAb@(k$C3y#;zZ8*Q3DNz0 z(wz!dHRTq)g`($s`I7IZT;D6Xg&EghoS!b_vT2uB>2he2?o6TRdWTZ;3psC_lrH_@ znQd(?gkl@Qryz&z+h%%aYQZ&AWbK-gAqELdl)?d_Oho!M)U!o62Y0 zsp%=HT<~3RmgYRe17FHuz#tSS6>|nc+TodsnTCuEg_wP4dTIz>aRgl2K&%@MmVGbd zmI|)F;H9%Oixi9Uvcf7jJzsrb^jDzTzTQ z^Myu7pd>VT4v+jWJd9a%+ z9Na_;SgV&n`OD!!g5K_>$+|Bq(*5k52b;7i9lCTOU-Ay|{-#_U3(bt^VI}?o#H!&f z6eX>HP;ZHw^%2=z2|LNFp`92R-%ar<##gsOjp2>t-;u#muuUTUFOFkFPGu})J`cB}7kn0wvDFJC;Nw3Br+W)hTQj#oSedcKCG{A90 z8X(>}oCDZ@B$BpJp;JMQR5>IL7oA(2iZChpAYEI)spPY5;Dd71%@jQ4THZ?&Fcq^% zbV|WRvdlh}3JZfd?|_#(=KxiP+}(LMox*7#C)|mh*X>`55PDhcJ;PAAu1vOwz=UQ( z-AQ-4jCh@`R=T+?q94YG6<3tXY~C+OW~Y8l>jE(p({v#10`QMatD|K3icJf)k5~IHS-I0TOVQ@|ojneBwhxaGK6} zsUnu0DWuEus7HL#fvTkSV73IWQKB+lI+s!yYdi)J4Y>%n#Bl-?A?8W9LT0>~8OktZ zBvI!qY_nM*6355%on-_*BjGSmI17NHdI#nHC!+233eESKwDkGVnC+}6C_5YS{V?@> z_uyO>JE5}|Ndh0GTS^tNVyxWw#P1!d^I9rp_%uPb5x%dtO43}JSsK5g!piF zG?4a7iur8z01%dZ(ww@5Fdbt}Sz20!mlk2F!K#S6ZdioV+uU2W+-iz2iWE|{y6yi5 zL+6{azC`tKjcP0aO`PsbYNDH^?jr1aZ=o)?KS|AQy8l*8kQgr>$sKkC(_y>(+ZG@C zgcd|~AZq~R?&^BE(buhuPN1+|smV+3L9~6izC93@dr1rfvgjs%r~- zof@6A-YUl&@co=trwUwVIjZYYA@Bk3^C{OmP{@@jZ@7peS*V83dpKs)B8As63RoK5 zc)nC^lc67XlpNRw4AkT-5t2^0T7BQ-KtU9 z7~8*poLg0}?1v$y$q8;^O_o+$P2I!bl1Xm|HIB@ihYJ|rT(CxJTe(v+Xvq>T3@N;3U}fB9lMpv>xE}+6Idw~g%`-*Z?dcj-989O?EiV@=1Y&uGl8kas zy|5(dQq4QW;H0j$l%D2FUegJynuKegnHw(_aN@k`E%$mH4vJjS-R^F=%v8VeIXr2( z3;f^hm%77xLRTE4jAg@%w2n$9>o4R|i<7k8#~xYPQAuSoIKw{lSJiODfxLA1Y9h|N zH>G`?;`5p-6z-tl`)D#vr@(+3+BGjtw1}Zv>+0Q!YNcV}1?lG~y32;!PKU>*4Pwb9Is>*bA6h16JaN?;z7|T7OUzX0RMn;%1L3~BXOfWePh}(N13ngUyH-Kr z*P8;d`tI$N>Tsp#&6aV|(F{Z3aiwGc2=hZnO*U*J`}D_b+I9R)w^zNWRr7$Y;Kjf% zO{$;aDqWNBoWa}O3okQS;=0$Br;R4Ggpr{5w>%0=(<9uhMY|(XL(#z92Gx$Uy24WMmUkZjewC6Ai% zQgKlk91{~QYG%KgApUD*J27R`K|CcNsPxJP-=CYj!&~gChmH7{H4(+Y9&eGDuawQH zgZ?CHPKlq_{H`dN8i(75^hcVSZ!%+b6U)Fn9`cd`yuoYl{8Fi_kyl|)#MRh!rBXdH zC4(zw}zzQ6?5Y}HKJ+&M1o(> z$bIz}%MLFe9GjKx!PKm*?;UHHXjf)O4wuoDWc@Tk=#4g;HQFxQ%uu)|qf*8ub);ElXY zKQJfX5aR9ASKKal)r)Th_ZH-5#qGh53i6V^;cX&ua~J+I+`jq1mdz$bH>->dRxZdh z@`Y>Y!&4-3%Hr>B!O`i4#->&D`KOLPm_;@O-`o}NT#?`rd|r!1Ht|nw z3OOsSdVHa4j&ue)?v%5Y=K2-%b*`Sj&b3$@=$ji6P}pLvF_Z;r9li-NBc@uzDeNAo zUd<@L*t*))j3C;qK0RfDvCUd(D4OeCB`ZoLzVJCACoRSaIqSgbfKxGIRqd9mmDpfx zw|Wc(#`eC|nh|U6P~RG{ntCvHSo}SaC@^;P^vZF3DvKf(U6Iwnt3^59+=VZd>&%zR z?x4w+8-m~axWSbP9)yzK;B&rA20!!Tt=*ku7auYOobT;gDc3U-boT|Pe7SM7Pk9Co zT6$madd+Wvzi(g@e=7xGu8FKu-%2TxYhuggRnQ~oTj|=MrzA%MZ(OzxH?uH?A-uND zVPVU$H$=`?!en9twznU`76}goUn$9Ti2*Cdk{AQWK)lsZ&@<59AunNmOeKPkO7hY~ z!dj*|$el!UhoQiqSkWc7Gd~uY493gy%FW4;pFBu5tDsmGEi#FqJRw*B)Q~mUy(UQA zDOU%7TbAXKAkosn^6mp&QqjP=Tkp(jRmcLiTOB)2AZ>6l^+9J`uVuw78FyQ{lLUcmgA+8zAj zki00dJLD(3yY-&M*zRuZ*%i!>J=+spyC|f+_Z(Mzs2SqG6N2{41Cv#sga9FOnX`fE~m_?hjua_|eE2Qn*w~5iojyrV| zkyX4^aWGB9x_MiqWABgLq{1UHz8~8{=Rs0?yW)j^KwJt zR;>qP;J8)m0R=s`YP*ee3MR?!>M{IALQaNKWPLJ}BI}dddXr;MN3zO#6S$_46m*cA z$a*G79+B&|X3%sI-e3$`Gy0!OfC7KUVGN`>Xw3ivx3V;*W`g^V$Zd%k?M0JCUd(7O zK!JY-UJNilQe-ap$0IV4nA0iJ#3?e@(5P)wip({)$m)(;<#1olxmeBP0e zpOhR4^^=cBpnogk*y2QwipW=ksiSf;%3+<|f~s&-#9HMlBI1sHOjuq0t?q<3j}}T_ z3~)c{(?2FURpZ|h2Uag3nHRH3av0IKj|;1Zt{lZO?mIK)VF%AAJMiMAx_Dey*h@-x z;*S~pE9Aw>?yf^svF$D77stB#~UeVB{MX*;Ofm`gl1?TP))}WrW zP%J=p7!soQ3DhR#3$_g;_F0L7x?fmBda@3pAiJ5Yv=CT=?%8CfnL9bCWl_T(5LTz2 zMCl?jW=M!WAW*E8SpX+URBL4xyblU%y`HRxCXgmv^*q~{PF5P3*+E|<4)h*3FD1jp`{Q-dd}4x@zHCq!H) zfYktz6Qa9U?>LIyBSG_VIW+i4)e5Sg{fI#EQEQArNyt4e5=nUx z%K`hJ2>S1lmkd5p^$tbAenO!2Q{FW~Xobjg0)R`U69Uf*lyX8Y;(K187Bpd^&56DsBEK&LPqks{ z1%a|kIow7d@FGx+6@o$@f>b#S61*>7A{y2Hfrh;o1i{=9{A6#0e2kiYjSl ziMQfVa-I|&3a3CZbCqOfkV-L*@JZ37ki&_iYg$4wFJ=`l_Wz{l?bA-s@vbGAx3{mN znGx5M!tK}0bg*klX2z^ijDvkrtlOY@=|tC(%!^s(rR{rJSnCuo{ZmdN)%H1r*cH%? zs?LChs+UEpcA0ncWwB4xGE`C9NN56Ytz!tvJ(j$;CHuNfEzNsL0n zxPx@GUl+K!a!T;c1f=nvQ2ljtR>2ERuM20TVTPvH1#Y&=d+?qT))u*2sUlbhZB*66 zsZ*kHm6oM#KPCE-hJ>n9LiZ~UE&L5(xxsI~AU9T`Pz1^-io(tt)re9`ydhe3>RE*K zZ-`Z^rOQDmo6pqO`suypHjhh(!9jX^^5%_PuFpkx~ zWw0L;5PQpDKS+qZMcBWA7l@kiHhHl7gj|E`98<==g#EXxYoQ|YwrDl>sffHy_BXL2 z6p?q(3IxA8A=iyHLJ=sVs1b_ZsVbt<@{VX#J%wXYX?aJSH^}b?j)l_luCUJQUV)GY zzj;{pRGOd-Lq=N@w7px^Mpfrs(W(jn#G&n7DgXqP?N0RDBJ#%?D%-*NZ4smQ7~5{A zBm5nMz@QK{kje;1@P0=D@NhjbL+y7A0(Usk_eA7-T5Shd-xIObavRikklHiB+mFc0 zvu8~Gz#w?eh`2h6AffGyz|E9W9VGJLj97VvY?E;&|1j2!vwTK$Z|4fr>Db>FxYtvK z>4c{53ta4XNegc`(I1M)sUYl=fb{_+@M+eweP*%uZLQcyzNB)LfC&PqTp#@o=0Qh(02hO z7!ywP17ZE0sOvs0(6R^fkIHXWJ`hnxLz;&ZA7~6C5>9*|&bwSYLHPIA!oEN|A+!@b zq?`ap^lyaynq8|$D=kVcb_ZobL4gTOUc}?X*5#??RR;la#P;{NI ztrGfuC@$MCl?k9)^zViJ6PRe{SXjypGg#&Nsj&Ycbi`su^w2JLq|S+cB&>gjBbT_r zfyd=Y>Ujc#!9m*tkq$0Ex8F-^jWk2S0i2`4@ln@6=1s0`6x3;Vx9 zCv5G69#l>c*MAH9C@v`~FKl)~58?d+itC-|-InzboH*YNe)46xt#UVTTE`zRlJ?zJ z7>Rl~akmvl0;M2&+_LY3dbJ((+6g_VoFK0IE&B_h6ZPzb9vWpQqE7ULWd(3z*bTn& zguJ|R!U`i1g%c+%1+Z|KO2G*$j0DO^^kM99=tNXIp$C-{#PyhEKM^_+Whe9yI!q{T zaH3CH){Agr&<$=5fE3>A#0tc&*O?Lf7OK5f}w4V`GvPUu19 z1aW=MvR??DXkaJw5MIMz2Pftw%X%G747ow;lX7e2B`eC!8co89m#h_hu_F>rykuSa z8SMnhRP^hX{c`9;Ogo_ml@rAE3eHXFM2wwKL*W;(AFPmFioq2w?~gnaxC*4aR9gCeMxS zK|vxN5|bz!1%_lo*(4zl10KeC5;7hHVh}lr%BQoFPxv6Nl*5%4tM4$ku_u!BnxK#_h_6!9mqT#bH3Uml!*_B__1#SDvAo zyLuDWXXUQ!ey$W3Ds=2~YpI0s4xcfk>hGSWn&}m=#e2*4?cTk9=+Rv}`d4n-wm&;C zpzfsF{n_1nf0Es*zj%f!5|t)KwOw1UlZUBIr;bvWn6K9#rH1eKRyZL~4(-oEK|fsg ztA$jRS2NX+sxjdzopI$T)JE><>)$!F?}5HOecMs>J%g&7YT>Uh z9HZ*yRIQ=bxPbqUyFmZlQJSXvj!^a7MO2*^)!&bY-P*r*&*1*OyHZVmsmd7dnf&A! zy(PrO$%Dt~-XbxsKYEt_O03t7&rz3`>J}M2@EmZxcDX{PNYiz3P^jwt=!PicFuxTuDT$t#M;h>DiTnN&hW3GMRQk zJP^xdeTYCTYs8r~PgA6#<#L)c6@geTQy~JeyuN|flk|MlqAJp$+fUK@L{(5hGsyEy zEo$_!Q#3PEBLjBhH3X@NmxTzDYbq)!WB4%D>VG&z9hurZpDR-vuX20=er>9jS`8lx z>UHO7YU`=D`VpTCRNv6*_!9j3S?xp+DU{b3X%_fD>T%S@pqlPR9Km~*)-Rlzeh~KcyzU=?o36oGruHd{kyv&2pKd%$?oA$KAufb0hVpWK5bH zr05YWd&-+1S*Q~)&?Bw$gIYtyvo4Ob7%Cr>#X;IoedTpU?quqgjF0uMpxIP0ro6i% zciSq)uzpuiPfH;+##LOVYc(y;ER(*`gf%dh#Y#d1S<8}TbdTY~v_e0v>3cmZ@_eq{ zikLaLh{&gAMcU>Kl-Cn^z~&9W>IoX?4#WvK?(YBh(C!`{rPj<^cbEdnyRkNI?joe~maWBIY%-3x-Rtz&C^i3Zox2tRpZ@5& z2Gf_o=Y3t*o-z9tSJ4L}7-6^-agZJi>dgL-@*ax(z}AVd{t)(uZwqmqHt1Hf@4S!cYk1|d7^?Y#g(jGed__ZvP;yY=bw^gw2Jp3jxq zo#(U0-Qce=d}!RO=_Oj5*_-Ecx%cMztZ}d5OE00kfyk5k;7hb7F@ToQh8PLfIHbRP ziP|$mE(X>RW2nBvCET=H~c5B*AFAfA-4;zP^1kPV6YvuFm9TBlq2%`+qbV^KUOvPa#JDpLY?E_YZ5U#@l6UIhD%>l7V z))nX(A?G+_6s~}E2Ii97>459oL$hIbbUI&5qN74qIipu(U=TvM9u*k5HZ8gyAZD&j z3+^!?Tb;28kpL-###)>y4>3X=6Dl1-ggPc#W|-@p+ z50~Sjs+#`V)C=?Pgr+fir1OM8ORx$t2)z>`UK2vNoDg*l=I|#aM%PKL$7s&HlZ7mp zVctoB5n>|*a5>2?{6>|OapgTHWV4Q4qLzh#cq-s99r`_Byx#f7;rpCuOw)YhiwW?& z-gSvO;YfJG=Y_0rObi6T%C-=~@p+NypvA@!&HJ>Tc$K<3PZxBei+iUzyupHW8gt_U9gKr3?rz>xh^ucP3sHQg#s!*~<#N-Q z3Juq^Kjs>Q*J{f}ivza+Lo3J4DL$R!qO#hNxh+hEh779}fy+EDQnrVvIKTQ&g@y~O z~s@Dl}YJ4VSm? z4S}~cQwe^tU}!t9;_b@;$84JeMk(Il$Fsf&{0nq-=ZjY?hM_NSz%NA1m5s+EV68nh zNh;KISOCE(3iL8QaCIWzn}uTVWDv5 zyvyOR076j#?XUoZ>*a7*0K)aMNX+h_!~9c5vB<0X_8W94R|Lna;i!NCj#tA;0SL#d z!c7XrJ^ETWDS!|K&~`#VxLyk<1t46ng_A-_Y~=NDQUF0cAW^q{@)$y04;u)~2z5Q2 z6o3eIohLH*vu+yI0w- zX8PJis?tB2p!g#0>oA6a_zvC-Cl5Rk=%&C+K-vUCU!TOD>o+E-zMJ3)6nb)FpDdgf zg6AZkmS*FL#{M>Tysm;J=qnRcy{H)eSPT8R%fB5?BPF@Zza35^CDG;Ianq1S)g6Il( ze$1k65i6DVsgNyoDU-K^qF zzYzg{8}qyh?xCNDBM=B%3ur3~2=3?M1O!CX&+P@B_X3N77nD?F}P1m~8B+nxo8aJK}0>a%7*T=QF^b~%+(+`y|r03`{Z8O($-N};9nJr}i2O>IU8U9P_adm`ZxcR$N%OxF@}KqNS7~wXE8&-N zB3?(-uSCN1euj|om1w&ow4zgeExbi6gRS1RPv4#HmXg-rQ~o~+?+?NUCuTUOg8b6Q zXt-Dt%Kt{le-qKVNr7KKy5SoAI`@t6&5UO|M0_L4%&Q$ki1B80~x+|mz>2C4jSh5Qd_Se;&%?c1g|U#E4sZ-sAOe36w$*|#D! z&t>IV^{u$;VX`SOar{3C?>nTZFtw0YMz~mD{k!n~oEIXE5Vv%%5fWAYZ6OcIXkAxY zx4ua$bGLj*Ld0RIW;hW%KM%{fJx&B}uYW{(M{(V3 zB|Im>Em{%GIwrlp1ZVT zD>o*6(;C$|2)AfO WFzbf&ewh~$7!kZQ+4oBtt^Pmvd&LC+ diff --git a/managed/models/database.go b/managed/models/database.go index 79d0dfb2a2..6291ffc2d4 100644 --- a/managed/models/database.go +++ b/managed/models/database.go @@ -962,6 +962,22 @@ var databaseSchema = [][]string{ 88: { `UPDATE settings SET settings = settings - 'alert_manager_url'`, }, + 89: { + `UPDATE settings SET settings = settings || jsonb_set(settings, '{alerting,enabled}', to_jsonb( NOT ((settings->'alerting'->'disabled')::boolean)));`, + `UPDATE settings SET settings = settings #- '{alerting, disabled}';`, + + `UPDATE settings SET settings = settings || jsonb_set(settings, '{updates,enabled}', to_jsonb( NOT ((settings->'updates'->'disabled')::boolean)));`, + `UPDATE settings SET settings = settings #- '{updates, disabled}';`, + + `UPDATE settings SET settings = settings || jsonb_set(settings, '{telemetry,enabled}', to_jsonb( NOT ((settings->'telemetry'->'disabled')::boolean)));`, + `UPDATE settings SET settings = settings #- '{telemetry, disabled}';`, + + `UPDATE settings SET settings = settings || jsonb_set(settings, '{backup_management,enabled}', to_jsonb( NOT ((settings->'backup_management'->'disabled')::boolean)));`, + `UPDATE settings SET settings = settings #- '{backup_management, disabled}';`, + + `UPDATE settings SET settings = settings || jsonb_set(settings, '{sass,enabled}', to_jsonb( NOT ((settings->'sass'->'stt_disabled')::boolean)));`, + `UPDATE settings SET settings = settings #- '{sass, stt_disabled}';`, + }, } // ^^^ Avoid default values in schema definition. ^^^ diff --git a/managed/models/role_helpers.go b/managed/models/role_helpers.go index da1c25057b..30ea14938a 100644 --- a/managed/models/role_helpers.go +++ b/managed/models/role_helpers.go @@ -199,7 +199,7 @@ func ChangeDefaultRole(tx *reform.TX, roleID int) error { } var p ChangeSettingsParams - p.DefaultRoleID = roleID + p.DefaultRoleID = &roleID _, err := UpdateSettings(tx, &p) diff --git a/managed/models/settings.go b/managed/models/settings.go index 49619ac57b..08ead86d32 100644 --- a/managed/models/settings.go +++ b/managed/models/settings.go @@ -21,6 +21,17 @@ import ( "github.com/aws/aws-sdk-go/aws/endpoints" ) +const ( + AdvisorsEnabledDefault = true + AlertingEnabledDefault = true + TelemetryEnabledDefault = true + UpdatesEnabledDefault = true + BackupManagementEnabledDefault = true + VictoriaMetricsCacheEnabledDefault = false + AzureDiscoverEnabledDefault = false + AccessControlEnabledDefault = false +) + // MetricsResolutions contains standard VictoriaMetrics metrics resolutions. type MetricsResolutions struct { HR time.Duration `json:"hr"` @@ -28,32 +39,26 @@ type MetricsResolutions struct { LR time.Duration `json:"lr"` } -// SaaS contains settings related to the SaaS platform. -type SaaS struct { +type Advisors struct { // Advisor checks disabled, false by default. - STTDisabled bool `json:"stt_disabled"` + Enabled *bool `json:"enabled"` // List of disabled STT checks DisabledSTTChecks []string `json:"disabled_stt_checks"` // STT check intervals STTCheckIntervals STTCheckIntervals `json:"stt_check_intervals"` } -// Alerting contains settings related to Percona Alerting. -type Alerting struct { - Disabled bool `json:"disabled"` -} - // Settings contains PMM Server settings. type Settings struct { PMMPublicAddress string `json:"pmm_public_address"` Updates struct { - Disabled bool `json:"disabled"` + Enabled *bool `json:"enabled"` } `json:"updates"` Telemetry struct { - Disabled bool `json:"disabled"` - UUID string `json:"uuid"` + Enabled *bool `json:"enabled"` + UUID string `json:"uuid"` } `json:"telemetry"` MetricsResolutions MetricsResolutions `json:"metrics_resolutions"` @@ -67,19 +72,21 @@ type Settings struct { SSHKey string `json:"ssh_key"` VictoriaMetrics struct { - CacheEnabled bool `json:"cache_enabled"` + CacheEnabled *bool `json:"cache_enabled"` } `json:"victoria_metrics"` - SaaS SaaS `json:"sass"` // sic :( + SaaS Advisors `json:"sass"` // sic :( - Alerting Alerting `json:"alerting"` + Alerting struct { + Enabled *bool `json:"enabled"` + } `json:"alerting"` Azurediscover struct { - Enabled bool `json:"enabled"` + Enabled *bool `json:"enabled"` } `json:"azure"` BackupManagement struct { - Disabled bool `json:"disabled"` + Enabled *bool `json:"enabled"` } `json:"backup_management"` // PMMServerID is generated on the first start of PMM server. @@ -91,10 +98,74 @@ type Settings struct { // AccessControl holds information about access control. AccessControl struct { // Enabled is true if access control is enabled. - Enabled bool `json:"enabled"` + Enabled *bool `json:"enabled"` } `json:"access_control"` } +// IsAlertingEnabled returns true if alerting is enabled. +func (s *Settings) IsAlertingEnabled() bool { + if s.Alerting.Enabled != nil { + return *s.Alerting.Enabled + } + return AlertingEnabledDefault +} + +// IsTelemetryEnabled returns true if telemetry is enabled. +func (s *Settings) IsTelemetryEnabled() bool { + if s.Telemetry.Enabled != nil { + return *s.Telemetry.Enabled + } + return TelemetryEnabledDefault +} + +// IsUpdatesEnabled returns true if updates are enabled. +func (s *Settings) IsUpdatesEnabled() bool { + if s.Updates.Enabled != nil { + return *s.Updates.Enabled + } + return UpdatesEnabledDefault +} + +// IsBackupManagementEnabled returns true if backup management is enabled. +func (s *Settings) IsBackupManagementEnabled() bool { + if s.BackupManagement.Enabled != nil { + return *s.BackupManagement.Enabled + } + return BackupManagementEnabledDefault +} + +// IsAdvisorsEnabled returns true if advisors are enabled. +func (s *Settings) IsAdvisorsEnabled() bool { + if s.SaaS.Enabled != nil { + return *s.SaaS.Enabled + } + + return AdvisorsEnabledDefault +} + +// IsAzureDiscoverEnabled returns true if Azure discovery is enabled. +func (s *Settings) IsAzureDiscoverEnabled() bool { + if s.Azurediscover.Enabled != nil { + return *s.Azurediscover.Enabled + } + return AzureDiscoverEnabledDefault +} + +func (s *Settings) IsAccessControlEnabled() bool { + if s.AccessControl.Enabled != nil { + return *s.AccessControl.Enabled + } + return AccessControlEnabledDefault +} + +// IsVictoriaMetricsCacheEnabled returns true if VictoriaMetrics cache is enabled. +func (s *Settings) IsVictoriaMetricsCacheEnabled() bool { + if s.VictoriaMetrics.CacheEnabled != nil { + return *s.VictoriaMetrics.CacheEnabled + } + return VictoriaMetricsCacheEnabledDefault +} + // STTCheckIntervals represents intervals between STT checks. type STTCheckIntervals struct { StandardInterval time.Duration `json:"standard_interval"` @@ -136,12 +207,4 @@ func (s *Settings) fillDefaults() { if s.SaaS.STTCheckIntervals.FrequentInterval == 0 { s.SaaS.STTCheckIntervals.FrequentInterval = 4 * time.Hour } - - // AWSInstanceChecked is false by default - // SSHKey is empty by default - // SaaS.STTDisabled is false by default - // Alerting.Disabled is false by default - // VictoriaMetrics CacheEnable is false by default - // PMMPublicAddress is empty by default - // Azurediscover.Enabled is false by default } diff --git a/managed/models/settings_helpers.go b/managed/models/settings_helpers.go index ff91017456..afcfd1d169 100644 --- a/managed/models/settings_helpers.go +++ b/managed/models/settings_helpers.go @@ -20,6 +20,7 @@ import ( "fmt" "time" + "github.com/AlekSi/pointer" "github.com/google/uuid" "github.com/pkg/errors" "gopkg.in/reform.v1" @@ -49,11 +50,9 @@ func GetSettings(q reform.DBTX) (*Settings, error) { // ChangeSettingsParams contains values to change data in settings table. type ChangeSettingsParams struct { - DisableUpdates bool - EnableUpdates bool + EnableUpdates *bool - DisableTelemetry bool - EnableTelemetry bool + EnableTelemetry *bool MetricsResolutions MetricsResolutions @@ -61,12 +60,11 @@ type ChangeSettingsParams struct { AWSPartitions []string - SSHKey string + SSHKey *string // Enable Security Threat Tool - EnableSTT bool - // Disable Security Threat Tool - DisableSTT bool + EnableSTT *bool + // List of STT checks to disable DisableSTTChecks []string // List of STT checks to enable @@ -75,36 +73,24 @@ type ChangeSettingsParams struct { STTCheckIntervals STTCheckIntervals // Enable Azure Discover features. - EnableAzurediscover bool - // Disable Azure Discover features. - DisableAzurediscover bool - + EnableAzurediscover *bool // Enable Percona Alerting features. - EnableAlerting bool - // Disable Percona Alerting features. - DisableAlerting bool + EnableAlerting *bool // Enable Access Control features. - EnableAccessControl bool - // Disable Access Control features. - DisableAccessControl bool + EnableAccessControl *bool // EnableVMCache enables caching for vmdb search queries - EnableVMCache bool - // DisableVMCache disables caching for vmdb search queries - DisableVMCache bool + EnableVMCache *bool // PMM Server public address. - PMMPublicAddress string - RemovePMMPublicAddress bool + PMMPublicAddress *string // Enable Backup Management features. - EnableBackupManagement bool - // Disable Backup Management features. - DisableBackupManagement bool + EnableBackupManagement *bool // DefaultRoleID sets a default role to be assigned to new users. - DefaultRoleID int + DefaultRoleID *int } // SetPMMServerID should be run on start up to generate unique PMM Server ID. @@ -127,13 +113,13 @@ func UpdateSettings(q reform.DBTX, params *ChangeSettingsParams) (*Settings, err return nil, NewInvalidArgumentError(err.Error()) } - if params.DefaultRoleID != 0 { + if params.DefaultRoleID != nil { tx, ok := q.(*reform.TX) if !ok { return nil, fmt.Errorf("%w: changing Role ID requires a *reform.TX", ErrTxRequired) } - if err := lockRoleForChange(tx, params.DefaultRoleID); err != nil { + if err := lockRoleForChange(tx, *params.DefaultRoleID); err != nil { return nil, err } } @@ -143,18 +129,16 @@ func UpdateSettings(q reform.DBTX, params *ChangeSettingsParams) (*Settings, err return nil, err } - if params.DisableUpdates { - settings.Updates.Disabled = true - } - if params.EnableUpdates { - settings.Updates.Disabled = false - } - if params.DisableTelemetry { - settings.Telemetry.Disabled = true - settings.Telemetry.UUID = "" + if params.EnableUpdates != nil { + settings.Updates.Enabled = params.EnableUpdates } - if params.EnableTelemetry { - settings.Telemetry.Disabled = false + + if params.EnableTelemetry != nil { + settings.Telemetry.Enabled = params.EnableTelemetry + + if !*settings.Telemetry.Enabled { + settings.Telemetry.UUID = "" + } } if params.MetricsResolutions.LR != 0 { settings.MetricsResolutions.LR = params.MetricsResolutions.LR @@ -169,18 +153,16 @@ func UpdateSettings(q reform.DBTX, params *ChangeSettingsParams) (*Settings, err settings.DataRetention = params.DataRetention } - if len(params.AWSPartitions) != 0 { + if params.AWSPartitions != nil { settings.AWSPartitions = deduplicateStrings(params.AWSPartitions) } - if params.SSHKey != "" { - settings.SSHKey = params.SSHKey - } - if params.DisableSTT { - settings.SaaS.STTDisabled = true + if params.SSHKey != nil { + settings.SSHKey = pointer.GetString(params.SSHKey) } - if params.EnableSTT { - settings.SaaS.STTDisabled = false + + if params.EnableSTT != nil { + settings.SaaS.Enabled = params.EnableSTT } if params.STTCheckIntervals.RareInterval != 0 { @@ -212,54 +194,32 @@ func UpdateSettings(q reform.DBTX, params *ChangeSettingsParams) (*Settings, err settings.SaaS.DisabledSTTChecks = res } - if params.DisableVMCache { - settings.VictoriaMetrics.CacheEnabled = false + if params.EnableVMCache != nil { + settings.VictoriaMetrics.CacheEnabled = params.EnableVMCache } - if params.EnableVMCache { - settings.VictoriaMetrics.CacheEnabled = true + if params.PMMPublicAddress != nil { + settings.PMMPublicAddress = pointer.GetString(params.PMMPublicAddress) } - if params.PMMPublicAddress != "" { - settings.PMMPublicAddress = params.PMMPublicAddress + if params.EnableAzurediscover != nil { + settings.Azurediscover.Enabled = params.EnableAzurediscover } - if params.RemovePMMPublicAddress { - settings.PMMPublicAddress = "" + if params.EnableAlerting != nil { + settings.Alerting.Enabled = params.EnableAlerting } - if params.DisableAzurediscover { - settings.Azurediscover.Enabled = false - } - if params.EnableAzurediscover { - settings.Azurediscover.Enabled = true + if params.EnableAccessControl != nil { + settings.AccessControl.Enabled = params.EnableAccessControl } - if params.DisableAlerting { - settings.Alerting.Disabled = true + if params.EnableBackupManagement != nil { + settings.BackupManagement.Enabled = params.EnableBackupManagement } - if params.EnableAlerting { - settings.Alerting.Disabled = false - } - - if params.DisableAccessControl { - settings.AccessControl.Enabled = false - } - if params.EnableAccessControl { - settings.AccessControl.Enabled = true - } - - if params.DisableBackupManagement { - settings.BackupManagement.Disabled = true - } - - if params.EnableBackupManagement { - settings.BackupManagement.Disabled = false - } - - if params.DefaultRoleID != 0 { - settings.DefaultRoleID = params.DefaultRoleID + if params.DefaultRoleID != nil { + settings.DefaultRoleID = *params.DefaultRoleID } err = SaveSettings(q, settings) @@ -280,24 +240,6 @@ func lockRoleForChange(tx *reform.TX, roleID int) error { // ValidateSettings validates settings changes. func ValidateSettings(params *ChangeSettingsParams) error { //nolint:cyclop - if params.EnableUpdates && params.DisableUpdates { - return errors.New("both enable_updates and disable_updates are present") - } - if params.EnableTelemetry && params.DisableTelemetry { - return errors.New("both enable_telemetry and disable_telemetry are present") - } - if params.EnableSTT && params.DisableSTT { - return errors.New("both enable_stt and disable_stt are present") - } - if params.EnableVMCache && params.DisableVMCache { - return errors.New("both enable_vm_cache and disable_vm_cache are present") - } - if params.EnableAlerting && params.DisableAlerting { - return errors.New("both enable_alerting and disable_alerting are present") - } - if params.EnableBackupManagement && params.DisableBackupManagement { - return errors.New("both enable_backup_management and disable_backup_management are present") - } // TODO: consider refactoring this and the validation for STT check intervals checkCases := []struct { dur time.Duration @@ -366,10 +308,6 @@ func ValidateSettings(params *ChangeSettingsParams) error { //nolint:cyclop return err } - if params.PMMPublicAddress != "" && params.RemovePMMPublicAddress { - return errors.New("both pmm_public_address and remove_pmm_public_address are present") - } - return nil } diff --git a/managed/models/settings_helpers_test.go b/managed/models/settings_helpers_test.go index 654fd226ae..2f2db79b67 100644 --- a/managed/models/settings_helpers_test.go +++ b/managed/models/settings_helpers_test.go @@ -19,6 +19,7 @@ import ( "testing" "time" + "github.com/AlekSi/pointer" "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -44,7 +45,7 @@ func TestSettings(t *testing.T) { }, DataRetention: 30 * 24 * time.Hour, AWSPartitions: []string{"aws"}, - SaaS: models.SaaS{ + SaaS: models.Advisors{ STTCheckIntervals: models.STTCheckIntervals{ StandardInterval: 24 * time.Hour, RareInterval: 78 * time.Hour, @@ -68,7 +69,7 @@ func TestSettings(t *testing.T) { }, DataRetention: 30 * 24 * time.Hour, AWSPartitions: []string{"aws"}, - SaaS: models.SaaS{ + SaaS: models.Advisors{ STTCheckIntervals: models.STTCheckIntervals{ StandardInterval: 24 * time.Hour, RareInterval: 78 * time.Hour, @@ -147,106 +148,84 @@ func TestSettings(t *testing.T) { t.Run("Updates validation", func(t *testing.T) { ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - DisableUpdates: false, + EnableUpdates: pointer.ToBool(true), }) require.NoError(t, err) - assert.False(t, ns.Updates.Disabled) - - _, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableUpdates: true, - DisableUpdates: true, - }) - var errInvalidArgument *models.InvalidArgumentError - assert.True(t, errors.As(err, &errInvalidArgument)) - assert.EqualError(t, err, `invalid argument: both enable_updates and disable_updates are present`) + assert.True(t, *ns.Updates.Enabled) ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - DisableUpdates: true, + EnableUpdates: pointer.ToBool(false), }) require.NoError(t, err) - assert.True(t, ns.Updates.Disabled) + assert.False(t, *ns.Updates.Enabled) }) - t.Run("Telemetry and STT validation", func(t *testing.T) { + t.Run("Telemetry and Advisors validation", func(t *testing.T) { // ensure initial default state ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableTelemetry: true, - EnableSTT: true, + EnableTelemetry: pointer.ToBool(true), + EnableSTT: pointer.ToBool(true), }) require.NoError(t, err) - assert.False(t, ns.Telemetry.Disabled) - assert.False(t, ns.SaaS.STTDisabled) - - _, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableTelemetry: true, - DisableTelemetry: true, - }) - var errInvalidArgument *models.InvalidArgumentError - assert.True(t, errors.As(err, &errInvalidArgument)) - assert.EqualError(t, err, `invalid argument: both enable_telemetry and disable_telemetry are present`) - - _, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableSTT: true, - DisableSTT: true, - }) - assert.True(t, errors.As(err, &errInvalidArgument)) - assert.EqualError(t, err, `invalid argument: both enable_stt and disable_stt are present`) + assert.True(t, *ns.Telemetry.Enabled) + assert.True(t, *ns.SaaS.Enabled) // disable telemetry, enable STT ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - DisableTelemetry: true, - EnableSTT: true, + EnableTelemetry: pointer.ToBool(false), + EnableSTT: pointer.ToBool(true), }) require.NoError(t, err) - assert.True(t, ns.Telemetry.Disabled) - assert.False(t, ns.SaaS.STTDisabled) + assert.False(t, *ns.Telemetry.Enabled) + assert.True(t, *ns.SaaS.Enabled) // disable STT, enable Telemetry ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableTelemetry: true, - DisableSTT: true, + EnableTelemetry: pointer.ToBool(true), + EnableSTT: pointer.ToBool(false), }) require.NoError(t, err) - assert.False(t, ns.Telemetry.Disabled) - assert.True(t, ns.SaaS.STTDisabled) + assert.False(t, *ns.Telemetry.Enabled) + assert.True(t, *ns.SaaS.Enabled) // enable both ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableSTT: true, - EnableTelemetry: true, + EnableSTT: pointer.ToBool(true), + EnableTelemetry: pointer.ToBool(true), }) require.NoError(t, err) - assert.False(t, ns.Telemetry.Disabled) - assert.False(t, ns.SaaS.STTDisabled) + assert.True(t, *ns.Telemetry.Enabled) + assert.True(t, *ns.SaaS.Enabled) // disable STT ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - DisableSTT: true, + EnableSTT: pointer.ToBool(false), }) require.NoError(t, err) - assert.False(t, ns.Telemetry.Disabled) - assert.True(t, ns.SaaS.STTDisabled) + assert.True(t, *ns.Telemetry.Enabled) + assert.False(t, *ns.SaaS.Enabled) + // enable STT ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableSTT: true, + EnableSTT: pointer.ToBool(true), }) require.NoError(t, err) - assert.False(t, ns.Telemetry.Disabled) - assert.False(t, ns.SaaS.STTDisabled) + assert.True(t, *ns.Telemetry.Enabled) + assert.True(t, *ns.SaaS.Enabled) // restore initial default state ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableTelemetry: true, - EnableSTT: true, + EnableSTT: pointer.ToBool(true), + EnableTelemetry: pointer.ToBool(true), }) require.NoError(t, err) - assert.False(t, ns.Telemetry.Disabled) - assert.False(t, ns.SaaS.STTDisabled) + assert.True(t, *ns.Telemetry.Enabled) + assert.True(t, *ns.SaaS.Enabled) }) t.Run("Check that telemetry disabling resets telemetry UUID", func(t *testing.T) { ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - EnableTelemetry: true, + EnableTelemetry: pointer.ToBool(true), }) require.NoError(t, err) @@ -260,7 +239,7 @@ func TestSettings(t *testing.T) { assert.Equal(t, uuid, ns.Telemetry.UUID) ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ - DisableTelemetry: true, + EnableTelemetry: pointer.ToBool(false), }) require.NoError(t, err) assert.Empty(t, ns.Telemetry.UUID) @@ -288,32 +267,33 @@ func TestSettings(t *testing.T) { }) t.Run("enable azure discover", func(t *testing.T) { - _, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{DisableAzurediscover: true}) + s, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAzurediscover: pointer.ToBool(false)}) require.NoError(t, err) + assert.False(t, *s.Azurediscover.Enabled) - ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAzurediscover: true}) + ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAzurediscover: pointer.ToBool(true)}) require.NoError(t, err) - assert.True(t, ns.Azurediscover.Enabled) + assert.True(t, *ns.Azurediscover.Enabled) }) t.Run("enable Access Control", func(t *testing.T) { - s, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{DisableAccessControl: true}) + s, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAccessControl: pointer.ToBool(false)}) require.NoError(t, err) - assert.False(t, s.AccessControl.Enabled) + assert.False(t, *s.AccessControl.Enabled) - ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAccessControl: true}) + ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAccessControl: pointer.ToBool(true)}) require.NoError(t, err) - assert.True(t, ns.AccessControl.Enabled) + assert.True(t, *ns.AccessControl.Enabled) }) t.Run("disable percona alerting", func(t *testing.T) { - s, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{DisableAlerting: true}) + s, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAlerting: pointer.ToBool(false)}) require.NoError(t, err) - assert.True(t, s.Alerting.Disabled) + assert.False(t, *s.Alerting.Enabled) - ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAlerting: true}) + ns, err := models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{EnableAlerting: pointer.ToBool(true)}) require.NoError(t, err) - assert.False(t, ns.Alerting.Disabled) + assert.True(t, *ns.Alerting.Enabled) }) t.Run("Set PMM server ID", func(t *testing.T) { diff --git a/managed/services/checks/checks.go b/managed/services/checks/checks.go index e20af49f7c..30f3b0d55c 100644 --- a/managed/services/checks/checks.go +++ b/managed/services/checks/checks.go @@ -253,7 +253,7 @@ func (s *Service) GetSecurityCheckResults() ([]services.CheckResult, error) { return nil, err } - if settings.SaaS.STTDisabled { + if !settings.IsAdvisorsEnabled() { return nil, services.ErrAdvisorsDisabled } @@ -267,7 +267,7 @@ func (s *Service) GetChecksResults(_ context.Context, serviceID string) ([]servi return nil, err } - if settings.SaaS.STTDisabled { + if settings.IsAdvisorsEnabled() { return nil, services.ErrAdvisorsDisabled } @@ -282,7 +282,7 @@ func (s *Service) runChecksGroup(ctx context.Context, intervalGroup check.Interv return errors.WithStack(err) } - if settings.SaaS.STTDisabled { + if !settings.IsAdvisorsEnabled() { return services.ErrAdvisorsDisabled } @@ -298,7 +298,7 @@ func (s *Service) StartChecks(checkNames []string) error { return errors.WithStack(err) } - if settings.SaaS.STTDisabled { + if !settings.IsAdvisorsEnabled() { return services.ErrAdvisorsDisabled } @@ -1452,7 +1452,7 @@ func (s *Service) downloadAdvisors(ctx context.Context) ([]check.Advisor, error) return nil, err } - if settings.Telemetry.Disabled { + if !settings.IsTelemetryEnabled() { s.l.Debug("Advisors downloading skipped due to disabled telemetry.") return nil, nil } diff --git a/managed/services/checks/checks_test.go b/managed/services/checks/checks_test.go index b38f0b1d4e..48feb1613d 100644 --- a/managed/services/checks/checks_test.go +++ b/managed/services/checks/checks_test.go @@ -100,7 +100,7 @@ func TestDownloadAdvisors(t *testing.T) { t.Run("disabled telemetry", func(t *testing.T) { _, err := models.UpdateSettings(db.Querier, &models.ChangeSettingsParams{ - DisableTelemetry: true, + EnableTelemetry: pointer.ToBool(false), }) require.NoError(t, err) @@ -403,7 +403,7 @@ func TestGetSecurityCheckResults(t *testing.T) { settings, err := models.GetSettings(db) require.NoError(t, err) - settings.SaaS.STTDisabled = true + settings.SaaS.Enabled = pointer.ToBool(true) err = models.SaveSettings(db, settings) require.NoError(t, err) @@ -448,7 +448,7 @@ func TestStartChecks(t *testing.T) { settings, err := models.GetSettings(db) require.NoError(t, err) - settings.SaaS.STTDisabled = true + settings.SaaS.Enabled = pointer.ToBool(true) err = models.SaveSettings(db, settings) require.NoError(t, err) @@ -823,7 +823,7 @@ func TestGetFailedChecks(t *testing.T) { settings, err := models.GetSettings(db) require.NoError(t, err) - settings.SaaS.STTDisabled = true + settings.SaaS.Enabled = pointer.ToBool(true) err = models.SaveSettings(db, settings) require.NoError(t, err) diff --git a/managed/services/grafana/access_control_cache.go b/managed/services/grafana/access_control_cache.go index 96502298c5..67f7a85f65 100644 --- a/managed/services/grafana/access_control_cache.go +++ b/managed/services/grafana/access_control_cache.go @@ -64,7 +64,7 @@ func (a *accessControl) reload() (bool, error) { return false, err } - a.enabled = settings.AccessControl.Enabled + a.enabled = settings.IsAccessControlEnabled() a.lastUpdated = time.Now() return a.enabled, nil diff --git a/managed/services/management/alerting/service.go b/managed/services/management/alerting/service.go index eabad36af5..a742f2a93c 100644 --- a/managed/services/management/alerting/service.go +++ b/managed/services/management/alerting/service.go @@ -108,7 +108,7 @@ func (s *Service) Enabled() bool { s.l.WithError(err).Error("can't get settings") return false } - return !settings.Alerting.Disabled + return settings.IsAlertingEnabled() } // GetTemplates return collected templates. @@ -306,7 +306,7 @@ func (s *Service) downloadTemplates(ctx context.Context) ([]*models.Template, er return nil, err } - if settings.Telemetry.Disabled { + if !settings.IsTelemetryEnabled() { s.l.Debug("Alert templates downloading skipped due to disabled telemetry.") return nil, nil } @@ -418,7 +418,7 @@ func (s *Service) ListTemplates(ctx context.Context, req *alerting.ListTemplates return nil, err } - if settings.Alerting.Disabled { + if !settings.IsAlertingEnabled() { return nil, services.ErrAlertingDisabled } @@ -483,7 +483,7 @@ func (s *Service) CreateTemplate(ctx context.Context, req *alerting.CreateTempla return nil, err } - if settings.Alerting.Disabled { + if !settings.IsAlertingEnabled() { return nil, services.ErrAlertingDisabled } @@ -537,7 +537,7 @@ func (s *Service) UpdateTemplate(ctx context.Context, req *alerting.UpdateTempla return nil, err } - if settings.Alerting.Disabled { + if !settings.IsAlertingEnabled() { return nil, services.ErrAlertingDisabled } @@ -588,7 +588,7 @@ func (s *Service) DeleteTemplate(ctx context.Context, req *alerting.DeleteTempla return nil, err } - if settings.Alerting.Disabled { + if !settings.IsAlertingEnabled() { return nil, services.ErrAlertingDisabled } @@ -685,7 +685,7 @@ func (s *Service) CreateRule(ctx context.Context, req *alerting.CreateRuleReques return nil, err } - if settings.Alerting.Disabled { + if !settings.IsAlertingEnabled() { return nil, services.ErrAlertingDisabled } diff --git a/managed/services/management/azure_database.go b/managed/services/management/azure_database.go index a375fdfa84..76a169a6b5 100644 --- a/managed/services/management/azure_database.go +++ b/managed/services/management/azure_database.go @@ -83,7 +83,7 @@ func (s *AzureDatabaseService) Enabled() bool { s.l.WithError(err).Error("can't get settings") return false } - return settings.Azurediscover.Enabled + return settings.IsAzureDiscoverEnabled() } // AzureDatabaseInstanceData reflects Azure Database Instance Data of Discovery Response. diff --git a/managed/services/management/backup/artifacts_service.go b/managed/services/management/backup/artifacts_service.go index d61a441c78..6548ebdebe 100644 --- a/managed/services/management/backup/artifacts_service.go +++ b/managed/services/management/backup/artifacts_service.go @@ -59,7 +59,7 @@ func (s *ArtifactsService) Enabled() bool { s.l.WithError(err).Error("can't get settings") return false } - return !settings.BackupManagement.Disabled + return settings.IsBackupManagementEnabled() } // ListArtifacts returns a list of all artifacts. diff --git a/managed/services/management/backup/locations_service.go b/managed/services/management/backup/locations_service.go index 49f6f4fcaa..576620f2c7 100644 --- a/managed/services/management/backup/locations_service.go +++ b/managed/services/management/backup/locations_service.go @@ -54,7 +54,7 @@ func (s *LocationsService) Enabled() bool { s.l.WithError(err).Error("can't get settings") return false } - return !settings.BackupManagement.Disabled + return settings.IsBackupManagementEnabled() } // ListLocations returns list of all available backup locations. diff --git a/managed/services/management/backup/restore_history_service.go b/managed/services/management/backup/restore_history_service.go index 582514909b..afb41427b7 100644 --- a/managed/services/management/backup/restore_history_service.go +++ b/managed/services/management/backup/restore_history_service.go @@ -51,7 +51,7 @@ func (s *RestoreHistoryService) Enabled() bool { s.l.WithError(err).Error("can't get settings") return false } - return !settings.BackupManagement.Disabled + return settings.IsBackupManagementEnabled() } // ListRestoreHistory returns a list of restore history. diff --git a/managed/services/management/role.go b/managed/services/management/role.go index d15b77bb23..e42379b031 100644 --- a/managed/services/management/role.go +++ b/managed/services/management/role.go @@ -54,7 +54,7 @@ func (r *RoleService) Enabled() bool { logrus.WithError(err).Error("cannot get settings") return false } - return settings.AccessControl.Enabled + return settings.IsAccessControlEnabled() } // CreateRole creates a new Role. diff --git a/managed/services/platform/platform.go b/managed/services/platform/platform.go index b0fb364467..7c0ca97cc1 100644 --- a/managed/services/platform/platform.go +++ b/managed/services/platform/platform.go @@ -117,7 +117,7 @@ func (s *Service) Connect(ctx context.Context, req *platformv1.ConnectRequest) ( return nil, err } - if !settings.SaaS.STTDisabled { + if !settings.IsAdvisorsEnabled() { s.checksService.CollectAdvisors(ctx) } @@ -175,7 +175,7 @@ func (s *Service) Disconnect(ctx context.Context, req *platformv1.DisconnectRequ return nil, err } - if !settings.SaaS.STTDisabled { + if !settings.IsAdvisorsEnabled() { s.checksService.CollectAdvisors(ctx) } diff --git a/managed/services/server/server.go b/managed/services/server/server.go index 2b7d957f26..51592f79b9 100644 --- a/managed/services/server/server.go +++ b/managed/services/server/server.go @@ -30,6 +30,7 @@ import ( "sync" "time" + "github.com/AlekSi/pointer" "github.com/google/uuid" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -254,7 +255,7 @@ func (s *Server) onlyInstalledVersionResponse(ctx context.Context) *serverv1.Che // CheckUpdates checks PMM Server updates availability. func (s *Server) CheckUpdates(ctx context.Context, req *serverv1.CheckUpdatesRequest) (*serverv1.CheckUpdatesResponse, error) { s.envRW.RLock() - updatesDisabled := s.envSettings.DisableUpdates + updatesEnabled := s.envSettings.EnableUpdates s.envRW.RUnlock() if req.OnlyInstalledVersion { @@ -285,7 +286,7 @@ func (s *Server) CheckUpdates(ctx context.Context, req *serverv1.CheckUpdatesReq LatestNewsUrl: v.LatestNewsURL, } - if updatesDisabled { + if updatesEnabled != nil && !*updatesEnabled { res.UpdateAvailable = false } @@ -307,11 +308,11 @@ func (s *Server) CheckUpdates(ctx context.Context, req *serverv1.CheckUpdatesReq // StartUpdate starts PMM Server update. func (s *Server) StartUpdate(ctx context.Context, req *serverv1.StartUpdateRequest) (*serverv1.StartUpdateResponse, error) { s.envRW.RLock() - updatesDisabled := s.envSettings.DisableUpdates + updatesEnabled := s.envSettings.EnableUpdates s.envRW.RUnlock() - if updatesDisabled { - return nil, status.Error(codes.FailedPrecondition, "Updates are disabled via DISABLE_UPDATES environment variable.") + if updatesEnabled != nil && !*updatesEnabled { + return nil, status.Error(codes.FailedPrecondition, "Updates are disabled via ENABLE_UPDATES environment variable.") } offset, err := s.supervisord.StartUpdate() @@ -420,8 +421,8 @@ func (s *Server) readUpdateAuthToken() (string, error) { // Checking if PMM is connected to Platform is separated from settings for security and concurrency reasons. func (s *Server) convertSettings(settings *models.Settings, connectedToPlatform bool) *serverv1.Settings { res := &serverv1.Settings{ - UpdatesDisabled: settings.Updates.Disabled, - TelemetryEnabled: !settings.Telemetry.Disabled, + UpdatesEnabled: settings.IsUpdatesEnabled(), + TelemetryEnabled: settings.IsTelemetryEnabled(), MetricsResolutions: &serverv1.MetricsResolutions{ Hr: durationpb.New(settings.MetricsResolutions.HR), Mr: durationpb.New(settings.MetricsResolutions.MR), @@ -435,17 +436,17 @@ func (s *Server) convertSettings(settings *models.Settings, connectedToPlatform DataRetention: durationpb.New(settings.DataRetention), SshKey: settings.SSHKey, AwsPartitions: settings.AWSPartitions, - SttEnabled: !settings.SaaS.STTDisabled, - AzurediscoverEnabled: settings.Azurediscover.Enabled, + SttEnabled: settings.IsAdvisorsEnabled(), + AzurediscoverEnabled: settings.IsAzureDiscoverEnabled(), PmmPublicAddress: settings.PMMPublicAddress, - AlertingEnabled: !settings.Alerting.Disabled, - BackupManagementEnabled: !settings.BackupManagement.Disabled, + AlertingEnabled: settings.IsAlertingEnabled(), + BackupManagementEnabled: settings.IsBackupManagementEnabled(), ConnectedToPlatform: connectedToPlatform, TelemetrySummaries: s.telemetryService.GetSummaries(), - EnableAccessControl: settings.AccessControl.Enabled, + EnableAccessControl: settings.IsAccessControlEnabled(), DefaultRoleId: uint32(settings.DefaultRoleID), } @@ -472,35 +473,28 @@ func (s *Server) GetSettings(ctx context.Context, req *serverv1.GetSettingsReque func (s *Server) validateChangeSettingsRequest(ctx context.Context, req *serverv1.ChangeSettingsRequest) error { metricsRes := req.MetricsResolutions - if req.PmmPublicAddress != "" && req.RemovePmmPublicAddress { - return status.Error(codes.InvalidArgument, "Both pmm_public_address and remove_pmm_public_address are present.") - } - - if req.SshKey != "" { - if err := s.validateSSHKey(ctx, req.SshKey); err != nil { + if req.SshKey != nil { + if err := s.validateSSHKey(ctx, *req.SshKey); err != nil { return err } } // check request parameters compatibility with environment variables - if req.EnableUpdates && s.envSettings.DisableUpdates { - return status.Error(codes.FailedPrecondition, "Updates are disabled via DISABLE_UPDATES environment variable.") + if req.EnableUpdates != nil && s.envSettings.EnableUpdates != nil && *req.EnableUpdates != *s.envSettings.EnableUpdates { + return status.Error(codes.FailedPrecondition, "Updates are configured via ENABLE_UPDATES environment variable.") } - // ignore req.DisableTelemetry and req.DisableStt even if they are present since that will not change anything - if req.EnableTelemetry && s.envSettings.DisableTelemetry { - return status.Error(codes.FailedPrecondition, "Telemetry is disabled via DISABLE_TELEMETRY environment variable.") + if req.EnableTelemetry != nil && s.envSettings.EnableTelemetry != nil && *req.EnableTelemetry != *s.envSettings.EnableTelemetry { + return status.Error(codes.FailedPrecondition, "Telemetry is configured via ENABLE_TELEMETRY environment variable.") } - // ignore req.EnableAlerting even if they are present since that will not change anything - if req.DisableAlerting && s.envSettings.EnableAlerting { - return status.Error(codes.FailedPrecondition, "Alerting is enabled via ENABLE_ALERTING environment variable.") + if req.EnableAlerting != nil && s.envSettings.EnableAlerting != nil && *req.EnableAlerting != *s.envSettings.EnableAlerting { + return status.Error(codes.FailedPrecondition, "Alerting is configured via ENABLE_ALERTING environment variable.") } - // ignore req.DisableAzurediscover even if they are present since that will not change anything - if req.DisableAzurediscover && s.envSettings.EnableAzurediscover { - return status.Error(codes.FailedPrecondition, "Azure Discover is enabled via ENABLE_AZUREDISCOVER environment variable.") + if req.EnableAzurediscover != nil && s.envSettings.EnableAzurediscover != nil && *req.EnableAzurediscover != *s.envSettings.EnableAzurediscover { + return status.Error(codes.FailedPrecondition, "Azure Discover is configured via ENABLE_AZUREDISCOVER environment variable.") } if !canUpdateDurationSetting(metricsRes.GetHr().AsDuration(), s.envSettings.MetricsResolutions.HR) { @@ -526,7 +520,6 @@ func (s *Server) validateChangeSettingsRequest(ctx context.Context, req *serverv func (s *Server) ChangeSettings(ctx context.Context, req *serverv1.ChangeSettingsRequest) (*serverv1.ChangeSettingsResponse, error) { s.envRW.RLock() defer s.envRW.RUnlock() - if err := s.validateChangeSettingsRequest(ctx, req); err != nil { return nil, err } @@ -541,10 +534,14 @@ func (s *Server) ChangeSettings(ctx context.Context, req *serverv1.ChangeSetting metricsRes := req.MetricsResolutions sttCheckIntervals := req.SttCheckIntervals settingsParams := &models.ChangeSettingsParams{ - DisableUpdates: req.DisableUpdates, - EnableUpdates: req.EnableUpdates, - DisableTelemetry: req.DisableTelemetry, - EnableTelemetry: req.EnableTelemetry, + EnableUpdates: req.EnableUpdates, + EnableTelemetry: req.EnableTelemetry, + EnableSTT: req.EnableStt, + EnableAzurediscover: req.EnableAzurediscover, + PMMPublicAddress: req.PmmPublicAddress, + EnableAlerting: req.EnableAlerting, + EnableBackupManagement: req.EnableBackupManagement, + EnableAccessControl: req.EnableAccessControl, STTCheckIntervals: models.STTCheckIntervals{ RareInterval: sttCheckIntervals.GetRareInterval().AsDuration(), StandardInterval: sttCheckIntervals.GetStandardInterval().AsDuration(), @@ -555,23 +552,12 @@ func (s *Server) ChangeSettings(ctx context.Context, req *serverv1.ChangeSetting MR: metricsRes.GetMr().AsDuration(), LR: metricsRes.GetLr().AsDuration(), }, - DataRetention: req.DataRetention.AsDuration(), - AWSPartitions: req.AwsPartitions, - SSHKey: req.SshKey, - EnableSTT: req.EnableStt, - DisableSTT: req.DisableStt, - EnableAzurediscover: req.EnableAzurediscover, - DisableAzurediscover: req.DisableAzurediscover, - PMMPublicAddress: req.PmmPublicAddress, - RemovePMMPublicAddress: req.RemovePmmPublicAddress, - - EnableAlerting: req.EnableAlerting, - DisableAlerting: req.DisableAlerting, - EnableBackupManagement: req.EnableBackupManagement, - DisableBackupManagement: req.DisableBackupManagement, + DataRetention: req.DataRetention.AsDuration(), + SSHKey: req.SshKey, + } - EnableAccessControl: req.EnableAccessControl, - DisableAccessControl: req.DisableAccessControl, + if req.AwsPartitions != nil { + settingsParams.AWSPartitions = req.AwsPartitions.Values } var errInvalidArgument *models.InvalidArgumentError @@ -585,8 +571,8 @@ func (s *Server) ChangeSettings(ctx context.Context, req *serverv1.ChangeSetting } // absent value means "do not change" - if req.SshKey != "" { - if err = s.writeSSHKey(req.SshKey); err != nil { + if req.SshKey != nil { + if err = s.writeSSHKey(pointer.GetString(req.SshKey)); err != nil { return errors.WithStack(err) } } @@ -611,7 +597,7 @@ func (s *Server) ChangeSettings(ctx context.Context, req *serverv1.ChangeSetting // When STT moved from disabled state to enabled force checks download and execution. var sttStarted bool - if oldSettings.SaaS.STTDisabled && !newSettings.SaaS.STTDisabled { + if !oldSettings.IsAdvisorsEnabled() && newSettings.IsAdvisorsEnabled() { sttStarted = true if err := s.checksService.StartChecks(nil); err != nil { s.l.Error(err) @@ -619,13 +605,13 @@ func (s *Server) ChangeSettings(ctx context.Context, req *serverv1.ChangeSetting } // When STT moved from enabled state to disabled drop all existing STT alerts. - if !oldSettings.SaaS.STTDisabled && newSettings.SaaS.STTDisabled { + if oldSettings.IsAdvisorsEnabled() && !newSettings.IsAdvisorsEnabled() { s.checksService.CleanupAlerts() } // When telemetry state is switched force alert templates and STT checks files collection. // If telemetry switched off that will drop previously downloaded files. - if oldSettings.Telemetry.Disabled != newSettings.Telemetry.Disabled { + if oldSettings.IsTelemetryEnabled() != newSettings.IsTelemetryEnabled() { s.templatesService.CollectTemplates(ctx) if !sttStarted { s.checksService.CollectAdvisors(ctx) diff --git a/managed/services/supervisord/supervisord.go b/managed/services/supervisord/supervisord.go index 8460060cfa..1d681cce84 100644 --- a/managed/services/supervisord/supervisord.go +++ b/managed/services/supervisord/supervisord.go @@ -424,7 +424,7 @@ func (s *Service) marshalConfig(tmpl *template.Template, settings *models.Settin "DataRetentionHours": int(settings.DataRetention.Hours()), "DataRetentionDays": int(settings.DataRetention.Hours() / 24), "VMAlertFlags": s.vmParams.VMAlertFlags, - "VMDBCacheDisable": !settings.VictoriaMetrics.CacheEnabled, + "VMDBCacheDisable": !settings.IsVictoriaMetricsCacheEnabled(), "VMURL": s.vmParams.URL(), "ExternalVM": s.vmParams.ExternalVM(), "InterfaceToBind": envvars.GetInterfaceToBind(), @@ -500,8 +500,8 @@ func (s *Service) addClusterParams(templateParams map[string]interface{}) { } templateParams["HANodes"] = strings.Join(nodes, ",") } - //- GF_UNIFIED_ALERTING_HA_ADVERTISE_ADDRESS=172.20.0.5:9095 - //- GF_UNIFIED_ALERTING_HA_PEERS=pmm-server-active:9095,pmm-server-passive:9095 + // - GF_UNIFIED_ALERTING_HA_ADVERTISE_ADDRESS=172.20.0.5:9095 + // - GF_UNIFIED_ALERTING_HA_PEERS=pmm-server-active:9095,pmm-server-passive:9095 } // saveConfigAndReload saves given supervisord program configuration to file and reloads it. diff --git a/managed/services/supervisord/supervisord_test.go b/managed/services/supervisord/supervisord_test.go index 1aea3d39cc..5891f4b68e 100644 --- a/managed/services/supervisord/supervisord_test.go +++ b/managed/services/supervisord/supervisord_test.go @@ -51,7 +51,7 @@ func TestConfig(t *testing.T) { settings := &models.Settings{ DataRetention: 30 * 24 * time.Hour, } - settings.VictoriaMetrics.CacheEnabled = false + settings.VictoriaMetrics.CacheEnabled = pointer.ToBool(false) for _, tmpl := range templates.Templates() { n := tmpl.Name() diff --git a/managed/services/telemetry/telemetry.go b/managed/services/telemetry/telemetry.go index 8ad88470ab..215d3a744a 100644 --- a/managed/services/telemetry/telemetry.go +++ b/managed/services/telemetry/telemetry.go @@ -128,7 +128,7 @@ func (s *Service) Run(ctx context.Context) { s.l.Debugf("Failed to retrieve settings: %s.", err) return } - if settings.Telemetry.Disabled { + if !settings.IsTelemetryEnabled() { s.l.Info("Disabled via settings.") return } diff --git a/managed/utils/envvars/parser.go b/managed/utils/envvars/parser.go index b9a669e491..8f987c2517 100644 --- a/managed/utils/envvars/parser.go +++ b/managed/utils/envvars/parser.go @@ -24,6 +24,7 @@ import ( "strings" "time" + "github.com/AlekSi/pointer" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -55,9 +56,9 @@ func (e InvalidDurationError) Error() string { return string(e) } // In case of error, the docker run terminates. // Short description of environment variables: // - PATH, HOSTNAME, TERM, HOME are default environment variables that will be ignored; -// - DISABLE_UPDATES is a boolean flag to enable or disable pmm-server update; -// - DISABLE_TELEMETRY is a boolean flag to enable or disable pmm telemetry (and disable STT if telemetry is disabled); -// - DISABLE_ALERTING disables Percona Alerting; +// - ENABLE_UPDATES is a boolean flag to enable or disable pmm-server update; +// - ENABLE_TELEMETRY is a boolean flag to enable or disable pmm telemetry (and disable STT if telemetry is disabled); +// - ENABLE_ALERTING disables Percona Alerting; // - METRICS_RESOLUTION, METRICS_RESOLUTION_MR, METRICS_RESOLUTION_HR, METRICS_RESOLUTION_LR are durations of metrics resolution; // - DATA_RETENTION is the duration of how long keep time-series data in ClickHouse; // - ENABLE_AZUREDISCOVER enables Azure Discover; @@ -95,16 +96,18 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin case "PERCONA_TEST_PMM_CLICKHOUSE_DATABASE", "PERCONA_TEST_PMM_CLICKHOUSE_ADDR", "PERCONA_TEST_PMM_CLICKHOUSE_BLOCK_SIZE", "PERCONA_TEST_PMM_CLICKHOUSE_POOL_SIZE": //nolint:lll // skip env variables for external clickhouse continue - case "DISABLE_UPDATES": - envSettings.DisableUpdates, err = strconv.ParseBool(v) + case "ENABLE_UPDATES": + b, err := strconv.ParseBool(v) if err != nil { err = fmt.Errorf("invalid value %q for environment variable %q", v, k) } - case "DISABLE_TELEMETRY": - envSettings.DisableTelemetry, err = strconv.ParseBool(v) + envSettings.EnableUpdates = &b + case "ENABLE_TELEMETRY": + b, err := strconv.ParseBool(v) if err != nil { err = fmt.Errorf("invalid value %q for environment variable %q", v, k) } + envSettings.EnableTelemetry = &b case "METRICS_RESOLUTION", "METRICS_RESOLUTION_HR": if envSettings.MetricsResolutions.HR, err = parseStringDuration(v); err != nil { err = formatEnvVariableError(err, env, v) @@ -122,29 +125,31 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin err = formatEnvVariableError(err, env, v) } case "ENABLE_VM_CACHE": - envSettings.EnableVMCache, err = strconv.ParseBool(v) + b, err := strconv.ParseBool(v) if err != nil { err = fmt.Errorf("invalid value %q for environment variable %q", v, k) } - if !envSettings.EnableVMCache { - // disable cache explicitly - envSettings.DisableVMCache = true - } - case "DISABLE_ALERTING": - envSettings.DisableAlerting, err = strconv.ParseBool(v) + envSettings.EnableVMCache = &b + case "ENABLE_ALERTING": + b, err := strconv.ParseBool(v) if err != nil { err = fmt.Errorf("invalid value %q for environment variable %q", v, k) } + envSettings.EnableAlerting = &b + case "ENABLE_AZUREDISCOVER": - envSettings.EnableAzurediscover, err = strconv.ParseBool(v) + b, err := strconv.ParseBool(v) if err != nil { err = fmt.Errorf("invalid value %q for environment variable %q", v, k) } - case "DISABLE_BACKUP_MANAGEMENT": - envSettings.DisableBackupManagement, err = strconv.ParseBool(v) + envSettings.EnableAzurediscover = &b + + case "ENABLE_BACKUP_MANAGEMENT": + b, err := strconv.ParseBool(v) if err != nil { err = fmt.Errorf("invalid value %q for environment variable %q", v, k) } + envSettings.EnableBackupManagement = &b case "PERCONA_TEST_AUTH_HOST", "PERCONA_TEST_CHECKS_HOST", "PERCONA_TEST_TELEMETRY_HOST", "PERCONA_TEST_SAAS_HOST": warns = append(warns, fmt.Sprintf("environment variable %q is removed and replaced by %q", k, envPlatformAddress)) @@ -153,7 +158,7 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin warns = append(warns, fmt.Sprintf("environment variable %q is removed and replaced by %q", k, envPlatformPublicKey)) case "PMM_PUBLIC_ADDRESS": - envSettings.PMMPublicAddress = v + envSettings.PMMPublicAddress = pointer.ToString(v) case "PMM_VM_URL": _, err = url.Parse(v) @@ -171,13 +176,14 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin continue case envEnableAccessControl: - envSettings.EnableAccessControl, err = strconv.ParseBool(v) + b, err := strconv.ParseBool(v) if err != nil { err = fmt.Errorf("invalid value %q for environment variable %q", v, k) errs = append(errs, err) continue } - envSettings.DisableAccessControl = !envSettings.EnableAccessControl + + envSettings.EnableAccessControl = &b case envPlatformAPITimeout: // This variable is not part of the settings and is parsed separately. From 602448cc65d3e9961c936a7c4fb9cb800ced0c74 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Mon, 18 Dec 2023 17:52:32 +0200 Subject: [PATCH 02/20] PMM-8019 Fixes --- api-tests/server/settings_test.go | 85 +--- api/common/common.pb.go | 29 +- api/common/common.pb.validate.go | 2 +- api/common/common.proto | 2 +- api/server/v1/server.pb.go | 742 +++++++++++++++--------------- api/server/v1/server.proto | 4 +- descriptor.bin | Bin 707834 -> 699916 bytes 7 files changed, 406 insertions(+), 458 deletions(-) diff --git a/api-tests/server/settings_test.go b/api-tests/server/settings_test.go index 17fa8140dc..a7eb4b7bb1 100644 --- a/api-tests/server/settings_test.go +++ b/api-tests/server/settings_test.go @@ -53,7 +53,7 @@ func TestSettings(t *testing.T) { assert.Equal(t, expectedSTTCheckIntervals, res.Payload.Settings.SttCheckIntervals) assert.Equal(t, "2592000s", res.Payload.Settings.DataRetention) assert.Equal(t, []string{"aws"}, res.Payload.Settings.AWSPartitions) - assert.False(t, res.Payload.Settings.UpdatesDisabled) + assert.True(t, res.Payload.Settings.UpdatesEnabled) assert.True(t, res.Payload.Settings.AlertingEnabled) t.Run("ChangeSettings", func(t *testing.T) { @@ -64,16 +64,16 @@ func TestSettings(t *testing.T) { defer restoreSettingsDefaults(t) res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableUpdates: true, + EnableUpdates: false, }, Context: pmmapitests.Context, }) require.NoError(t, err) - assert.True(t, res.Payload.Settings.UpdatesDisabled) + assert.False(t, res.Payload.Settings.UpdatesEnabled) resg, err := serverClient.Default.ServerService.GetSettings(nil) require.NoError(t, err) - assert.True(t, resg.Payload.Settings.UpdatesDisabled) + assert.False(t, resg.Payload.Settings.UpdatesEnabled) res, err = serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ @@ -82,26 +82,11 @@ func TestSettings(t *testing.T) { Context: pmmapitests.Context, }) require.NoError(t, err) - assert.False(t, res.Payload.Settings.UpdatesDisabled) + assert.True(t, res.Payload.Settings.UpdatesEnabled) resg, err = serverClient.Default.ServerService.GetSettings(nil) require.NoError(t, err) - assert.False(t, resg.Payload.Settings.UpdatesDisabled) - }) - - t.Run("InvalidBothEnableAndDisableUpdates", func(t *testing.T) { - defer restoreSettingsDefaults(t) - - res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ - Body: server.ChangeSettingsBody{ - EnableUpdates: true, - DisableUpdates: true, - }, - Context: pmmapitests.Context, - }) - pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument, - `Invalid argument: both enable_updates and disable_updates are present.`) - assert.Empty(t, res) + assert.True(t, resg.Payload.Settings.UpdatesEnabled) }) }) @@ -110,7 +95,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableAlerting: true, + EnableAlerting: false, }, Context: pmmapitests.Context, }) @@ -118,21 +103,6 @@ func TestSettings(t *testing.T) { assert.False(t, res.Payload.Settings.AlertingEnabled) }) - t.Run("InvalidBothEnableAndDisableAdvisors", func(t *testing.T) { - defer restoreSettingsDefaults(t) - - res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ - Body: server.ChangeSettingsBody{ - EnableStt: true, - DisableStt: true, - }, - Context: pmmapitests.Context, - }) - pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument, - `Invalid argument: both enable_stt and disable_stt are present.`) - assert.Empty(t, res) - }) - t.Run("EnableAdviorsAndEnableTelemetry", func(t *testing.T) { defer restoreSettingsDefaults(t) @@ -158,8 +128,8 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, - DisableTelemetry: true, + EnableStt: true, + EnableTelemetry: false, }, Context: pmmapitests.Context, }) @@ -173,7 +143,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableStt: true, + EnableStt: false, EnableTelemetry: true, }, Context: pmmapitests.Context, @@ -193,8 +163,8 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableStt: true, - DisableTelemetry: true, + EnableStt: false, + EnableTelemetry: false, }, Context: pmmapitests.Context, }) @@ -241,7 +211,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableStt: true, + EnableStt: false, }, Context: pmmapitests.Context, }) @@ -291,7 +261,7 @@ func TestSettings(t *testing.T) { t.Run("DisableTelemetryWhileAdvisorsEnabled", func(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableTelemetry: true, + EnableTelemetry: false, }, Context: pmmapitests.Context, }) @@ -306,7 +276,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableTelemetry: true, + EnableTelemetry: false, }, Context: pmmapitests.Context, }) @@ -357,27 +327,12 @@ func TestSettings(t *testing.T) { }) }) - t.Run("InvalidBothEnableAndDisableTelemetry", func(t *testing.T) { - defer restoreSettingsDefaults(t) - - res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ - Body: server.ChangeSettingsBody{ - EnableTelemetry: true, - DisableTelemetry: true, - }, - Context: pmmapitests.Context, - }) - pmmapitests.AssertAPIErrorf(t, err, 400, codes.InvalidArgument, - `Invalid argument: both enable_telemetry and disable_telemetry are present.`) - assert.Empty(t, res) - }) - t.Run("InvalidPartition", func(t *testing.T) { defer restoreSettingsDefaults(t) res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - AWSPartitions: []string{"aws-123"}, + AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{Values: []string{"aws-123"}}, }, Context: pmmapitests.Context, }) @@ -392,7 +347,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ // We're expecting that 10 elements will be more than number of default partitions, which currently equals 6. - AWSPartitions: []string{"aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws"}, + AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{Values: []string{"aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws", "aws"}}, }, Context: pmmapitests.Context, }) @@ -575,14 +530,14 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - DisableTelemetry: true, + EnableTelemetry: false, MetricsResolutions: &server.ChangeSettingsParamsBodyMetricsResolutions{ Hr: "2s", Mr: "15s", Lr: "120s", // 2 minutes }, - DataRetention: "864000s", // 240 hours - AWSPartitions: []string{"aws-cn", "aws", "aws-cn"}, // duplicates are ok + DataRetention: "864000s", // 240 hours + AWSPartitions: &server.ChangeSettingsParamsBodyAWSPartitions{Values: []string{"aws-cn", "aws", "aws-cn"}}, // duplicates are ok }, Context: pmmapitests.Context, }) diff --git a/api/common/common.pb.go b/api/common/common.pb.go index de8e255afe..6b790592ae 100644 --- a/api/common/common.pb.go +++ b/api/common/common.pb.go @@ -4,7 +4,7 @@ // protoc (unknown) // source: common/common.proto -package common +package commonv1 import ( reflect "reflect" @@ -72,18 +72,19 @@ var File_common_common_proto protoreflect.FileDescriptor var file_common_common_proto_rawDesc = []byte{ 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x25, 0x0a, - 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x42, 0x74, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, - 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0xca, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xe2, 0x02, 0x12, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, + 0x22, 0x25, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x8d, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, + 0x56, 0x31, 0xe2, 0x02, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -101,7 +102,7 @@ func file_common_common_proto_rawDescGZIP() []byte { var ( file_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 1) file_common_common_proto_goTypes = []interface{}{ - (*StringArray)(nil), // 0: common.StringArray + (*StringArray)(nil), // 0: common.v1.StringArray } ) diff --git a/api/common/common.pb.validate.go b/api/common/common.pb.validate.go index 1c35c6ce91..5fe2354850 100644 --- a/api/common/common.pb.validate.go +++ b/api/common/common.pb.validate.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-validate. DO NOT EDIT. // source: common/common.proto -package common +package commonv1 import ( "bytes" diff --git a/api/common/common.proto b/api/common/common.proto index a2d3c71cd8..be48660f43 100644 --- a/api/common/common.proto +++ b/api/common/common.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package common; +package common.v1; message StringArray { repeated string values = 1; diff --git a/api/server/v1/server.pb.go b/api/server/v1/server.pb.go index b67622f47c..46a8c98bba 100644 --- a/api/server/v1/server.pb.go +++ b/api/server/v1/server.pb.go @@ -16,9 +16,7 @@ import ( 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/fieldmaskpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - _ "google.golang.org/protobuf/types/known/wrapperspb" common "github.com/percona/pmm/api/common" ) @@ -1492,379 +1490,375 @@ var file_server_v1_server_proto_rawDesc = []byte{ 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 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, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 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, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, - 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, - 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x26, 0x0a, 0x0e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, - 0x75, 0x6d, 0x6d, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x75, 0x6d, 0x6d, - 0x79, 0x22, 0xdd, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x2e, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x30, 0x0a, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 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, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, + 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x84, 0x01, 0x0a, 0x0b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, + 0x6c, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x26, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x75, 0x6d, + 0x6d, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x22, + 0xdd, 0x01, 0x0a, 0x0f, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, + 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x30, 0x0a, + 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x12, + 0x4e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x12, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, + 0x12, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x61, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x34, + 0x0a, 0x16, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, + 0x6f, 0x6e, 0x6c, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x12, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x4c, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x13, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x14, 0x6f, 0x6e, 0x6c, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x73, 0x5f, - 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x4e, 0x65, 0x77, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x53, - 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x22, 0x66, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, - 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, - 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x12, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x02, 0x68, 0x72, 0x18, 0x01, 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, 0x02, 0x68, 0x72, 0x12, 0x29, 0x0a, - 0x02, 0x6d, 0x72, 0x18, 0x02, 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, 0x02, 0x6d, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6c, 0x72, 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, - 0x02, 0x6c, 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x11, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, - 0x6e, 0x64, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, - 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, - 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x18, 0x02, 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, 0x72, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x46, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, + 0x0a, 0x0f, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x73, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4e, + 0x65, 0x77, 0x73, 0x55, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x53, 0x0a, 0x13, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x22, 0x66, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, + 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, 0x5f, 0x6f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6c, 0x6f, 0x67, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x29, 0x0a, 0x02, 0x68, 0x72, 0x18, 0x01, 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, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xeb, 0x06, 0x0a, 0x08, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x2b, 0x0a, 0x11, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 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, - 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, - 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0d, 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x74, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, - 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, - 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, - 0x19, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x17, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x7a, 0x75, - 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x32, - 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x2f, 0x0a, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x12, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x4a, - 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0d, 0x10, - 0x0e, 0x4a, 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xe8, 0x07, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, - 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 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, 0x0d, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, - 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, - 0x52, 0x06, 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0e, 0x61, - 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x03, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, - 0x48, 0x04, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, - 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x31, - 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x70, 0x6d, - 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, - 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, - 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, 0x52, - 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, - 0x1e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x73, 0x68, 0x5f, - 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x74, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x6d, - 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, - 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x68, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6d, + 0x72, 0x18, 0x02, 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, 0x02, 0x6d, 0x72, 0x12, 0x29, 0x0a, 0x02, 0x6c, 0x72, 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, 0x02, 0x6c, + 0x72, 0x22, 0xe3, 0x01, 0x0a, 0x11, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x6e, 0x64, + 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 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, 0x10, 0x73, + 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, + 0x3e, 0x0a, 0x0d, 0x72, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x02, 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, 0x72, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, + 0x46, 0x0a, 0x11, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 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, 0x10, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xeb, 0x06, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2b, 0x0a, + 0x11, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 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, 0x0d, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, + 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x73, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, + 0x77, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, + 0x73, 0x74, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x73, 0x74, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, + 0x0e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x2c, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x6d, 0x6d, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, + 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x2f, 0x0a, 0x13, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x74, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x4a, 0x04, 0x08, + 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, + 0x04, 0x08, 0x0e, 0x10, 0x0f, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x46, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x22, 0xeb, 0x07, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, + 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x1c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 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, 0x0d, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x07, 0x73, + 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, + 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x61, 0x77, 0x73, + 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x03, 0x52, 0x0d, 0x61, 0x77, 0x73, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, + 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x48, 0x04, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0e, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, + 0x31, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x70, + 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, + 0x74, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, + 0x12, 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, + 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x16, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, - 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04, - 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, - 0x22, 0x49, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x17, 0x41, - 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xce, 0x01, 0x0a, - 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, 0x54, - 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, - 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, - 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, - 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, - 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x4d, 0x49, - 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, - 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0xbc, 0x0d, - 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x7f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x3d, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, - 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0xa4, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1b, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, - 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc5, 0x01, - 0x12, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x72, - 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6e, - 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, - 0x74, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x20, 0x79, 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, - 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x6f, - 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x20, - 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, - 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x92, 0x41, 0x79, 0x12, 0x10, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, - 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, - 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x39, 0x12, 0x0d, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, - 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, - 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xa3, 0x01, 0x0a, - 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, - 0x92, 0x41, 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, - 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, - 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2f, 0x47, 0x65, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, - 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, - 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x5a, 0x18, 0x3a, 0x01, 0x2a, 0x32, - 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x10, 0x41, 0x57, - 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, 0x57, - 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x1a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, 0x32, - 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x41, 0x57, 0x53, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x90, 0x01, 0x0a, - 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, - 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, - 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x73, 0x68, + 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, + 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, + 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, + 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, 0x08, 0x12, 0x10, + 0x13, 0x22, 0x49, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x17, + 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, + 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xce, 0x01, + 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, + 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, + 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, + 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, + 0x5f, 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, + 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x4d, + 0x49, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, + 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0xbc, + 0x0d, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x7f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x3d, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x1a, 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0xa4, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, + 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, + 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc5, + 0x01, 0x12, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, + 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, + 0x6e, 0x74, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x79, 0x20, 0x79, 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x41, 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, + 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, + 0x20, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, + 0x31, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x92, 0x41, 0x79, 0x12, + 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, + 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, + 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x39, 0x12, + 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, + 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, + 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xa3, 0x01, + 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x52, 0x92, 0x41, 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, + 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, + 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, + 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, + 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x5a, 0x18, 0x3a, 0x01, 0x2a, + 0x32, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x10, 0x41, + 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, + 0x57, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x1a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, + 0x32, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x41, 0x57, 0x53, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x90, 0x01, + 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, + 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1908,7 +1902,7 @@ var ( (*AWSInstanceCheckResponse)(nil), // 22: server.v1.AWSInstanceCheckResponse (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp (*durationpb.Duration)(nil), // 24: google.protobuf.Duration - (*common.StringArray)(nil), // 25: common.StringArray + (*common.StringArray)(nil), // 25: common.v1.StringArray } ) @@ -1932,7 +1926,7 @@ var file_server_v1_server_proto_depIdxs = []int32{ 16, // 16: server.v1.GetSettingsResponse.settings:type_name -> server.v1.Settings 14, // 17: server.v1.ChangeSettingsRequest.metrics_resolutions:type_name -> server.v1.MetricsResolutions 24, // 18: server.v1.ChangeSettingsRequest.data_retention:type_name -> google.protobuf.Duration - 25, // 19: server.v1.ChangeSettingsRequest.aws_partitions:type_name -> common.StringArray + 25, // 19: server.v1.ChangeSettingsRequest.aws_partitions:type_name -> common.v1.StringArray 15, // 20: server.v1.ChangeSettingsRequest.stt_check_intervals:type_name -> server.v1.STTCheckIntervals 16, // 21: server.v1.ChangeSettingsResponse.settings:type_name -> server.v1.Settings 2, // 22: server.v1.ServerService.Version:input_type -> server.v1.VersionRequest diff --git a/api/server/v1/server.proto b/api/server/v1/server.proto index 4b085d0ad6..b13b53ca51 100644 --- a/api/server/v1/server.proto +++ b/api/server/v1/server.proto @@ -5,9 +5,7 @@ package server.v1; import "common/common.proto"; import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; -import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; import "validate/validate.proto"; @@ -176,7 +174,7 @@ message ChangeSettingsRequest { // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. google.protobuf.Duration data_retention = 4; optional string ssh_key = 5; - optional common.StringArray aws_partitions = 6; + optional common.v1.StringArray aws_partitions = 6; // Enable Security Threat Tool. optional bool enable_stt = 11; // Enable Alerting. diff --git a/descriptor.bin b/descriptor.bin index 279a8f86158d42524fd3ddba0e8b2b4c09420675..a6726d84c011601586ebd1b85f55403098d858b2 100644 GIT binary patch delta 6106 zcmY*de~eUD6`phF&YL%9mYLbNKUj8W*;&|KmSJ~Uej_dj+fs@^QyYp_Y)cX74=F`k zv0~B@vbB}0h?H`-ltL@N)>&j*U?k6$-!U+1rxJ2~BMMrNm%o*&%Gzs%6p^NmB? zNfQS-ch}b*ymRwiUwP=>hwgn~(}PW3iMq4X8~fq}=T|?{yHb-H%URZ`gh~X-F{+DeI3<7twMR$+ zb#yu+rgHHVSyXgH0x{QCazuc<8tC?lS-E$rPFk5-G#**;H50WlMr+v-$OI?lFscGbQe{gU~LT-Y0m{U@>%t zFnRQ1vD1kth!ndgGb23(x-Bt*@PATECENT)UI-nM)o3?+pWwk8+Ldo3F$P9^CKn;- zwATh!M+Leg(HH7SwhpZH1n4Ny=~4~N4W=~0&HcbAOqWvx0=Fv@J{}MhyYP5(Y$T?- z%{_bg6Xk9-#^%I>$Y8EMLg06gZQ}Wsk0&pipYGvLO)bZK@lwt;IKDi2xoI5lB^vER4&hJX7LEw*Gr>i3&?4Tg1~rzd8b z++JSOIo%&;sd(1eiHVjfTVS?dvQ#h7a})D~`h~KG@wtAxtztUR1Bpdp71J0W@LPBQ zR?||&1!kP#1?2_Gvz{;p#)5QBgkWnyzQEU6KBg9$ZH5;QE{yq7yM<}HC80>*FD!+5 z{Xk!rxGBu*gLR!>D9UQyl@^QBUoV!n9X1pbYd z509G-AK*`yH^+P__vV-{9yeRQ(z!rCl=y~ulg?cTc-ANkL6?PVKeC<_mv-x`Qq{6mau!}Y#kq-(!>3h506_-Qja7Kn)eR!)Qa2^c`zUG3tW`{aZW0#X+oiN%li8t*s^|IX~Vti zH?Dh-6U|#^D|J2wJT#%2F>UEO}HvnLL1QGfu;j#&nqx^tauP_woTcrBj zWD=o(%@$Vj()55^CP&kj-P7x0aVb4Us=-a_l!bl-5&9V6_6^gb0RrOs4by`AIH^uI znSv4^N6^k@%e4`P)Z-MCA_%F+X<~;x>3MnD9p=#Yd0y|1YQ1pr=^c~~T!@E|9n{ds zci4L2DjYU^h}ZNE6S_m_5O<;;rp(v~B4n7Fi*6xti|sV#5cl=(tY*P=rgsukYI1bP>#c9TBA6K4S8seq$&X#Ieh78jdA>@FH#;%PP(m%(nc@dWoGknx1O zN!2+f?gqg6NfAWgZYuZiEE|YEzQ-It%yWA8RDGhM>phf?3YbO69-7$6(`^V^@LrQY z!ZUmKRzuK>^})L`WA|jK=#xqp`V3ZX&To;%e9?QxEA3J zJLICT~Y0FK2HT_*{&F^HIxQ8Nb= z61ip`U@PiVgs)V)9qb1OVB}nS`>E)hf(xZn6pV|=P&!5UiVdBEdz#ctJ2@CAY3{(0 zR0y2F_F!JR~?%Eu-v%GgNTJ?g|jrF!?y82q4S?J`ULk3oU1DM zP&ijDh+G8cD2TR@Tm;!fUbskw@YNtt zaxYw@DZTb%KTx0^(%AFDV|k%o4hfS zNXDW1Hs$P)|;QfO1JLG|rww&F5JoE-m zKE^2U-X-;WN;aP-yf~ZUX?~^hE_t?n$vjNF>za;0n0S|_3^)_guzo{&hBHCVgdGY^ zfZ_d?^zUL5q{W0AT4g<`z`H`~Pw;RA%D#lFo!13{42@ucZGTn@Cy{ZV10LK^T;e zNc|TkCY8(wXLwrWBl7GUk4(bEN3L-Qgo%%6>Yy`$R_=XF`d_gL?M%4A(1fu5P5M8v z32jZdA^d~@;Z)#lQ)-7wHusmzlP~hT$~H7tSN{}DY*TS1qz7+PaV5~dz3oariqDsD zIa1Dq8w^bd>sv~H8?111rmP7!G-yqDfj6wwlQ1#8WNtdk1C?PFSHgpdVHLJe7?w6Z ztl~;|kpGU-yJ8cbGvNk96TXY$EMUxWUkbu%1==P;4S?O}HWaGKD-iF-Mg;1rvQG z^U6y+_r9abvu{^22@^-vSo=*T5GIbQPkhFi@F9Op>E~k;zBAzlLleR}uJp;+gl|pA M(D}R0@l%ce1G|X9@Bjb+ delta 12234 zcmbVS4RBo5b>92-X|;Q0OY)QCA6b^KCI86sO8();M%cy{7~2^C6pTwk9c#7wWNldO ziv6)I$IdgL@)u)VAb!9wlq3TI52ToJFvCznCu9;b>11eT+8LT@S~}C8v~(svw4{^F z^gHL?_uk5;nQ57EX3xFnp7Y&v&;8E1PdWY5{{Mb@)v0MQZB56g?dgV#i8GtT_x;B< zCFV6IvZaZMQqg~HQ{pDk^57?%68P7Me@XmHUHW8`e6Fkekxfz^E|m@!+|`riQnfT% z8(Te=cMG{g6Pe20ekNtjU$R7|ZlLwcuy=XlTsv|cyDYq z51OBPaA~ZE2c;9IpL%dv4B)VQsS~H4dT@E{dLCTn#ObFVToK#JgH2AHe(J%#*kX@I z7dvtMmanI!WyhSvFGTFuLUev3twzFKji|CaS#~RKv070XRdK7TG^Q$36QiX@n~ptFxLaU9d6lGBV(6&(w6f@RVhul zs$42n)r4EAWDdK4ml;u+Vor^Wjz|rmqM%tFcLN<@sX+mQFr3!PIV>`O$Gl(~Yh<{H z)dxpM27!trpy&XxZvd=S+?=YGRAti5=EtTe7PV0m4#rx6|4da?#!IzAPL0BB*{#;f zMJyX7^}`gpNw=J-=1WCSAyyNmTpmmHd{NaVbD63e=?q>5qEIQR@yrnywz9QKwKSn_ zxqa^*nB19Aos zO9e!yg5>l#JIBSV3D5_>0**#G}y^JZfwVPY%sf{T33nJb0( z)6Oy!VGO#*vhF0rDg!KJDpfUEs^lsAh(NrI)ZCyd)iRQo5_abpPJyo-rK~EAQUcPs zl3l|=bpDrJr8IfK{(`Gz(g4>HX@Gc}%h`wXMDh!ldMjw5Nny z$#*-T56V%ME8)BdTG7oCF_rU3bV|V~^30g3rOAPUd&DhVae=%+wX>+Q8Qca$BcpEH zcKiOB3}Lp#=$VGXedY3H1SWJ7+D@y{8sc@iS*Z$nL_drV8}_uxe6dn>v1@&EIAm@n zI}Rhc{E>XFmMH|>D1)09k{WWlR4Zp)Hvd`MF(ftNR>w=ZG)@RHDO0ZIi+PV}2q2~q zab}@GA|&uE=YggH_4u(R>xCQKE8gwvf>r8z2S| z4Jw3N;yQtf5c9P1$c;NTMj3{TB1B&eKK3KNzokCfnYj z*?e!1mKDAe{i0AKFG(}|W{T_wd55&qv5;4^8yx&%6p^sd zOt{E7s?VC%KaEW>(>uMVM-^ zF5*gsML0X8?pk{=D8eXGNY&`r{|}DV1Z91O>2-Ccu>mx3rZcIFZl1b}uL zHM`lKgP5RYym=&d*b$6|?eg#2e257xi0(l2{%1g3n^yHGw-!~N+Hs;w?mL-r(H4N* zsngUfOr&tcEthGmI*yz&{lpBWqjuI5d}06!riW(S@CDyORQ7TXWDI-Q9@tYfpY**?s6Adk2K9j_{0>BTMnYql^f+CZ+*-XTUXq$JSCkDww<#Iq_wbx}gps6(V zyBw2Duz5=8N;LyRq)JEwWoAIaLex6gsW=eFdV~|1i`)s z{jh17LCQLzbS9t`<`nV@RW3K2vp`ZS9?ei&5S3_pyBLDZB9+QV^4JRjHq{){1|%$J z3P&?j0ijM2cSqsl1j*I1R0gnBTo$S*xc)d}I>D`|*VKZ{c;r>|c@;`oefKWUBd+j4 zMI1HNZbn6X;zY{=FNb?q#B)jaDfON1-RRS}^NJc9ihI!4=(LSCfpS5&SobleT^KJ> zp{;+k(RO-!)s1-Xfe^|W)2dO~*s*{AK5kW^vLB9ECJ=m^f-H?%P1D2RkxAbU>VQlH z*WFz2eOve6xPvbob)$&WzB~3)4$}4Ym{2MRVFk}_c3D9p7OVLzw$n$NWKNe=YJjNO zAhcsOeG#haBtBKl92LGXCv7IKbG;j))24oWYya)z=4EqSWoR(ZCW~!b5?N zP3pQ($umhq@h0ks?iXHUMMO3T>t~-TIjuXfz2)DpUWdZ0f`3_8-^@OzCQ*K1x}y4e zqD}Yc@`v-M$Kpx?NTodBmONgPoJxi%^{MT~si^~Q8DI1?-J6Y?{>uv*Fq}8BHNDLA z%h-@4)x`SGA63GpqXfF(Qw?gO`NRmupbwFhwE1GTP@^Y{Ucl(|*C73>RT&SUM|SQx zu=UoRHyzq~+x9zlZ`-qf#1u06E&@!njGh#=;soA6nbCra9X83h9TSfI3z3{7)6%wM zR?M+~C9JN_Zazt(aBQmXK!f1SmJOtBllqV)rI8y*ZkiK_u>C9H%nQUgiJc2a6U+-& z$sZl}zxsK3)L(Ivm?PPV{ziY{3k`k#=KC6z|M0)sJ1-r%Oa3G!{^imwu3RR>4gTbq zoR@4H)PD@P^!S+k2Pt2;mA=8pVy|2Ny>?@}zwfEWCjZ%c1p3_C+>uracDZBW*nLhG_@jj z)n+MU#D-#_20L6A|ejq`yePNf}hd&e~5R3V-#r`c7xvzPC zvP~{ENfGb#U#iIE{=sUh)j$55##Y(SGqBX>!)S3xOSU&0ipwu@W3~ z`+KT##c;QV2MyYPch@qbZ$ZDiZzaB8TG)lXB(_xGcig6ME=kUnTVO}fk@WhPs&e?| zUMtBfF$Rs^RC6G~PVXFt?O2YzJhn#LA#clZ+&!>kk)1xPqqD=`Iwd>TKt^=>j73P$ z?Mt=F3g2kDaIef3L|KR;NRK z!jf**k+Lk>c^Z*ACwKv*L2ICMiT}HMm=-8WMH|j7pV!`I*Lb(xG8!3!i{GnrVbN?1A!Jse(jV+C{0tvXbw6w|_ zSszow{@0JmZNtN%J_T>MkrNXZDQ$+8_M3Fm9J^C|*8rW)Y&Y)O zVqS>byVrm3xLoqNz2;sdDgEPnyO?*NPY1hqB{P_va^kne7V*KQpmbZZlg~#w_Ws!C zbetr{_v3u%x=4!C0e|zC19RueUe?FdoqpzoT)abC0%>w* zxQe26XSj+^=}xSo%i84Fcg04u_a8LUX7_Sf9Xj%)IVlW%(4i@m_Y#v`eQ)R$NI>XasQ!{vcG@a z_V*K|MaB1qq%_d+X)-9331WC;mdMYf6?mXRTzWM z;zE5dAi+iv_hJ|8V`|dB_+`1fe=^i3jFX{0VVs2i4%P?8vcJlcxAd1oeF}Fu)F+H( z*0=0t$37A}>Hn!GcQhXXXRLsYX2N*P|HP9k`;QqL7=w*t3)74k5^Nk>y@uO}W-@== z-*HL~_8$-R3FGmFn!ca`{o||Bat+%D#uNVYr{ua-CqjKPaw4=(7*D|d2E?(&Nt_a~ zulc_{C0Ea*CZ+{NLe#n}&1o~bzzf|-#O(DfYh^S)_lgeP3$>)c3o}GEh1oO#M!4;1 zKYpJa9GDi!E5<_cwx>no+(3lEX|bSF4)798KHz`hKDpX^AX-B39}tc6%@V{MBKU_9 zS@8Lwum;Seg%SXyBJ}gjvwObG%MATpH7P^lJYnhpBfF+2!`E0Qoc($oucb|}9 z>Jj0nKpUnW5xqrj8oP{_Sy=LvSiD4TJG2C?890>zoQi1fZ8!0xj! zF~>=~AY$JXf~V$S>IH!kN!dJyZuyG>eK;9}g!6)^vl$|EUtBMm^!Y)CzZV4x51DnG z#LFV~7sjju)t5zbk?ewd2l;c}f9oOH?VS%e&tcB17jgAjBp?pu)cJtqAYCT1uHif< z#S&U<0u70EBQcmIyPiYYd0w<@#)8Dkk;uvrH3(eh^J2c{5GO^?fO?U2F{^cP{^vzk zw*f&HyM_c6#p^{@#;i7sD}G)qU2b&gZr6*fi&@sC<9kI|OSLXP zg(2$WbExI;Fx{jJ31pahMYI~oe44L_CB4QJCSMJB&9MYR0WmOzUJPPriH_%0(W-AH zlo8`siPkhIK>U{B^lNO#BASD&NgX2Aek&k#h*(eU?Z=KrbT8g9r^2`I~|BH^|~N1b5Iswo#vKdH|E53p zQJLQOW@I4=3vWgNp+fMcaDo(~Lhzi#P>z) zhsJC>RKG8hi{%i^wv*ZS{gaQ$jo$kK;bRaw?~9baI}l;*eSudZr8-0$@cUxHW;sWu zSp2hOGcMozqH`0Mgbv64k-$TnN1!?%0PP>Wt~JBgnN`>#a;I*qLJcrqON0r&u8!byB6tiKoW&Pzhw z=K6zwBERE(C=yI+G!GCT8Y&_YAU+hUHX0B_V}C2`s|*NXK=6K7gZdSMAFGzmjae1rvkw|d+1h3S_ekA6vFK;ll~V`2R#fUH;k`X}U8?_-hRItUQ>EN6c# z+PH9#2oN8Owc88`ROQ5f2z+J@K*S9QGpIq3)-Q$qNeCj&Aj}XxK*2CnJ{8uzR=jhC z^8f1zxz_tsB)H+FNr3p&&NdexZesR0ai~;TlRx6uaBd_ zfG~p^1Zh2F*~kTA1cNX`XcS?%(MddQSuX;_fbtiflk2^wtppPWO#;Nz zR!6@H4AqCHt!s9f<7kBWXDs_`A&5o;!VGEnejx^Z#<5oL|f1{}EZd^pG#7=l&1hl~XMM From 3ce9f8bd63dd75dc969201fb24ec102079f088aa Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Mon, 18 Dec 2023 19:22:53 +0200 Subject: [PATCH 03/20] PMM-8019 Fix --- managed/services/platform/platform.go | 4 ++-- managed/utils/envvars/parser_test.go | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/managed/services/platform/platform.go b/managed/services/platform/platform.go index 7c0ca97cc1..e1e1cdc2a2 100644 --- a/managed/services/platform/platform.go +++ b/managed/services/platform/platform.go @@ -117,7 +117,7 @@ func (s *Service) Connect(ctx context.Context, req *platformv1.ConnectRequest) ( return nil, err } - if !settings.IsAdvisorsEnabled() { + if settings.IsAdvisorsEnabled() { s.checksService.CollectAdvisors(ctx) } @@ -175,7 +175,7 @@ func (s *Service) Disconnect(ctx context.Context, req *platformv1.DisconnectRequ return nil, err } - if !settings.IsAdvisorsEnabled() { + if settings.IsAdvisorsEnabled() { s.checksService.CollectAdvisors(ctx) } diff --git a/managed/utils/envvars/parser_test.go b/managed/utils/envvars/parser_test.go index 2d823ea055..a3cfcd3375 100644 --- a/managed/utils/envvars/parser_test.go +++ b/managed/utils/envvars/parser_test.go @@ -21,6 +21,7 @@ import ( "testing" "time" + "github.com/AlekSi/pointer" "github.com/stretchr/testify/assert" "github.com/percona/pmm/managed/models" @@ -41,10 +42,10 @@ func TestEnvVarValidator(t *testing.T) { "DATA_RETENTION=72h", } expectedEnvVars := &models.ChangeSettingsParams{ - DataRetention: 72 * time.Hour, - DisableTelemetry: true, - DisableSTT: false, - DisableUpdates: true, + DataRetention: 72 * time.Hour, + EnableTelemetry: pointer.ToBool(false), + EnableSTT: pointer.ToBool(true), + EnableUpdates: pointer.ToBool(false), MetricsResolutions: models.MetricsResolutions{ HR: 5 * time.Minute, MR: 5 * time.Second, From 4234ac287508d2ee05213adf2fece2de2acc48f9 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Mon, 18 Dec 2023 19:45:45 +0200 Subject: [PATCH 04/20] PMM-8019 Cleanup --- .../change_settings2_parameters.go | 144 --- .../change_settings2_responses.go | 1057 ----------------- .../server_service/server_service_client.go | 41 - api/server/v1/json/v1.json | 297 ----- api/server/v1/server.pb.go | 54 +- api/server/v1/server.pb.gw.go | 81 -- api/server/v1/server.proto | 4 - api/swagger/swagger-dev.json | 297 ----- api/swagger/swagger.json | 297 ----- descriptor.bin | Bin 699916 -> 699890 bytes 10 files changed, 26 insertions(+), 2246 deletions(-) delete mode 100644 api/server/v1/json/client/server_service/change_settings2_parameters.go delete mode 100644 api/server/v1/json/client/server_service/change_settings2_responses.go diff --git a/api/server/v1/json/client/server_service/change_settings2_parameters.go b/api/server/v1/json/client/server_service/change_settings2_parameters.go deleted file mode 100644 index 0fb64845cf..0000000000 --- a/api/server/v1/json/client/server_service/change_settings2_parameters.go +++ /dev/null @@ -1,144 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package server_service - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - "context" - "net/http" - "time" - - "github.com/go-openapi/errors" - "github.com/go-openapi/runtime" - cr "github.com/go-openapi/runtime/client" - "github.com/go-openapi/strfmt" -) - -// NewChangeSettings2Params creates a new ChangeSettings2Params object, -// with the default timeout for this client. -// -// Default values are not hydrated, since defaults are normally applied by the API server side. -// -// To enforce default values in parameter, use SetDefaults or WithDefaults. -func NewChangeSettings2Params() *ChangeSettings2Params { - return &ChangeSettings2Params{ - timeout: cr.DefaultTimeout, - } -} - -// NewChangeSettings2ParamsWithTimeout creates a new ChangeSettings2Params object -// with the ability to set a timeout on a request. -func NewChangeSettings2ParamsWithTimeout(timeout time.Duration) *ChangeSettings2Params { - return &ChangeSettings2Params{ - timeout: timeout, - } -} - -// NewChangeSettings2ParamsWithContext creates a new ChangeSettings2Params object -// with the ability to set a context for a request. -func NewChangeSettings2ParamsWithContext(ctx context.Context) *ChangeSettings2Params { - return &ChangeSettings2Params{ - Context: ctx, - } -} - -// NewChangeSettings2ParamsWithHTTPClient creates a new ChangeSettings2Params object -// with the ability to set a custom HTTPClient for a request. -func NewChangeSettings2ParamsWithHTTPClient(client *http.Client) *ChangeSettings2Params { - return &ChangeSettings2Params{ - HTTPClient: client, - } -} - -/* -ChangeSettings2Params contains all the parameters to send to the API endpoint - - for the change settings2 operation. - - Typically these are written to a http.Request. -*/ -type ChangeSettings2Params struct { - // Body. - Body ChangeSettings2Body - - timeout time.Duration - Context context.Context - HTTPClient *http.Client -} - -// WithDefaults hydrates default values in the change settings2 params (not the query body). -// -// All values with no default are reset to their zero value. -func (o *ChangeSettings2Params) WithDefaults() *ChangeSettings2Params { - o.SetDefaults() - return o -} - -// SetDefaults hydrates default values in the change settings2 params (not the query body). -// -// All values with no default are reset to their zero value. -func (o *ChangeSettings2Params) SetDefaults() { - // no default values defined for this parameter -} - -// WithTimeout adds the timeout to the change settings2 params -func (o *ChangeSettings2Params) WithTimeout(timeout time.Duration) *ChangeSettings2Params { - o.SetTimeout(timeout) - return o -} - -// SetTimeout adds the timeout to the change settings2 params -func (o *ChangeSettings2Params) SetTimeout(timeout time.Duration) { - o.timeout = timeout -} - -// WithContext adds the context to the change settings2 params -func (o *ChangeSettings2Params) WithContext(ctx context.Context) *ChangeSettings2Params { - o.SetContext(ctx) - return o -} - -// SetContext adds the context to the change settings2 params -func (o *ChangeSettings2Params) SetContext(ctx context.Context) { - o.Context = ctx -} - -// WithHTTPClient adds the HTTPClient to the change settings2 params -func (o *ChangeSettings2Params) WithHTTPClient(client *http.Client) *ChangeSettings2Params { - o.SetHTTPClient(client) - return o -} - -// SetHTTPClient adds the HTTPClient to the change settings2 params -func (o *ChangeSettings2Params) SetHTTPClient(client *http.Client) { - o.HTTPClient = client -} - -// WithBody adds the body to the change settings2 params -func (o *ChangeSettings2Params) WithBody(body ChangeSettings2Body) *ChangeSettings2Params { - o.SetBody(body) - return o -} - -// SetBody adds the body to the change settings2 params -func (o *ChangeSettings2Params) SetBody(body ChangeSettings2Body) { - o.Body = body -} - -// WriteToRequest writes these params to a swagger request -func (o *ChangeSettings2Params) WriteToRequest(r runtime.ClientRequest, reg strfmt.Registry) error { - if err := r.SetTimeout(o.timeout); err != nil { - return err - } - var res []error - if err := r.SetBodyParam(o.Body); err != nil { - return err - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} diff --git a/api/server/v1/json/client/server_service/change_settings2_responses.go b/api/server/v1/json/client/server_service/change_settings2_responses.go deleted file mode 100644 index 9f590c98aa..0000000000 --- a/api/server/v1/json/client/server_service/change_settings2_responses.go +++ /dev/null @@ -1,1057 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package server_service - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - "context" - "fmt" - "io" - "strconv" - - "github.com/go-openapi/errors" - "github.com/go-openapi/runtime" - "github.com/go-openapi/strfmt" - "github.com/go-openapi/swag" -) - -// ChangeSettings2Reader is a Reader for the ChangeSettings2 structure. -type ChangeSettings2Reader struct { - formats strfmt.Registry -} - -// ReadResponse reads a server response into the received o. -func (o *ChangeSettings2Reader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { - switch response.Code() { - case 200: - result := NewChangeSettings2OK() - if err := result.readResponse(response, consumer, o.formats); err != nil { - return nil, err - } - return result, nil - default: - result := NewChangeSettings2Default(response.Code()) - if err := result.readResponse(response, consumer, o.formats); err != nil { - return nil, err - } - if response.Code()/100 == 2 { - return result, nil - } - return nil, result - } -} - -// NewChangeSettings2OK creates a ChangeSettings2OK with default headers values -func NewChangeSettings2OK() *ChangeSettings2OK { - return &ChangeSettings2OK{} -} - -/* -ChangeSettings2OK describes a response with status code 200, with default header values. - -A successful response. -*/ -type ChangeSettings2OK struct { - Payload *ChangeSettings2OKBody -} - -func (o *ChangeSettings2OK) Error() string { - return fmt.Sprintf("[PATCH /v1/Settings/Change][%d] changeSettings2Ok %+v", 200, o.Payload) -} - -func (o *ChangeSettings2OK) GetPayload() *ChangeSettings2OKBody { - return o.Payload -} - -func (o *ChangeSettings2OK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(ChangeSettings2OKBody) - - // response payload - if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { - return err - } - - return nil -} - -// NewChangeSettings2Default creates a ChangeSettings2Default with default headers values -func NewChangeSettings2Default(code int) *ChangeSettings2Default { - return &ChangeSettings2Default{ - _statusCode: code, - } -} - -/* -ChangeSettings2Default describes a response with status code -1, with default header values. - -An unexpected error response. -*/ -type ChangeSettings2Default struct { - _statusCode int - - Payload *ChangeSettings2DefaultBody -} - -// Code gets the status code for the change settings2 default response -func (o *ChangeSettings2Default) Code() int { - return o._statusCode -} - -func (o *ChangeSettings2Default) Error() string { - return fmt.Sprintf("[PATCH /v1/Settings/Change][%d] ChangeSettings2 default %+v", o._statusCode, o.Payload) -} - -func (o *ChangeSettings2Default) GetPayload() *ChangeSettings2DefaultBody { - return o.Payload -} - -func (o *ChangeSettings2Default) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { - o.Payload = new(ChangeSettings2DefaultBody) - - // response payload - if err := consumer.Consume(response.Body(), o.Payload); err != nil && err != io.EOF { - return err - } - - return nil -} - -/* -ChangeSettings2Body change settings2 body -swagger:model ChangeSettings2Body -*/ -type ChangeSettings2Body struct { - // enable updates - EnableUpdates bool `json:"enable_updates,omitempty"` - - // enable telemetry - EnableTelemetry bool `json:"enable_telemetry,omitempty"` - - // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. - DataRetention string `json:"data_retention,omitempty"` - - // ssh key - SSHKey string `json:"ssh_key,omitempty"` - - // Enable Security Threat Tool. - EnableStt bool `json:"enable_stt,omitempty"` - - // Enable Alerting. - EnableAlerting bool `json:"enable_alerting,omitempty"` - - // PMM Server public address. - PMMPublicAddress string `json:"pmm_public_address,omitempty"` - - // Enable Azure Discover. - EnableAzurediscover bool `json:"enable_azurediscover,omitempty"` - - // Enable Backup Management. - EnableBackupManagement bool `json:"enable_backup_management,omitempty"` - - // Enable Access Control - EnableAccessControl bool `json:"enable_access_control,omitempty"` - - // aws partitions - AWSPartitions *ChangeSettings2ParamsBodyAWSPartitions `json:"aws_partitions,omitempty"` - - // metrics resolutions - MetricsResolutions *ChangeSettings2ParamsBodyMetricsResolutions `json:"metrics_resolutions,omitempty"` - - // stt check intervals - SttCheckIntervals *ChangeSettings2ParamsBodySttCheckIntervals `json:"stt_check_intervals,omitempty"` -} - -// Validate validates this change settings2 body -func (o *ChangeSettings2Body) Validate(formats strfmt.Registry) error { - var res []error - - if err := o.validateAWSPartitions(formats); err != nil { - res = append(res, err) - } - - if err := o.validateMetricsResolutions(formats); err != nil { - res = append(res, err) - } - - if err := o.validateSttCheckIntervals(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2Body) validateAWSPartitions(formats strfmt.Registry) error { - if swag.IsZero(o.AWSPartitions) { // not required - return nil - } - - if o.AWSPartitions != nil { - if err := o.AWSPartitions.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("body" + "." + "aws_partitions") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("body" + "." + "aws_partitions") - } - return err - } - } - - return nil -} - -func (o *ChangeSettings2Body) validateMetricsResolutions(formats strfmt.Registry) error { - if swag.IsZero(o.MetricsResolutions) { // not required - return nil - } - - if o.MetricsResolutions != nil { - if err := o.MetricsResolutions.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("body" + "." + "metrics_resolutions") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("body" + "." + "metrics_resolutions") - } - return err - } - } - - return nil -} - -func (o *ChangeSettings2Body) validateSttCheckIntervals(formats strfmt.Registry) error { - if swag.IsZero(o.SttCheckIntervals) { // not required - return nil - } - - if o.SttCheckIntervals != nil { - if err := o.SttCheckIntervals.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("body" + "." + "stt_check_intervals") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("body" + "." + "stt_check_intervals") - } - return err - } - } - - return nil -} - -// ContextValidate validate this change settings2 body based on the context it is used -func (o *ChangeSettings2Body) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := o.contextValidateAWSPartitions(ctx, formats); err != nil { - res = append(res, err) - } - - if err := o.contextValidateMetricsResolutions(ctx, formats); err != nil { - res = append(res, err) - } - - if err := o.contextValidateSttCheckIntervals(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2Body) contextValidateAWSPartitions(ctx context.Context, formats strfmt.Registry) error { - if o.AWSPartitions != nil { - if err := o.AWSPartitions.ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("body" + "." + "aws_partitions") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("body" + "." + "aws_partitions") - } - return err - } - } - - return nil -} - -func (o *ChangeSettings2Body) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { - if o.MetricsResolutions != nil { - if err := o.MetricsResolutions.ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("body" + "." + "metrics_resolutions") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("body" + "." + "metrics_resolutions") - } - return err - } - } - - return nil -} - -func (o *ChangeSettings2Body) contextValidateSttCheckIntervals(ctx context.Context, formats strfmt.Registry) error { - if o.SttCheckIntervals != nil { - if err := o.SttCheckIntervals.ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("body" + "." + "stt_check_intervals") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("body" + "." + "stt_check_intervals") - } - return err - } - } - - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2Body) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2Body) UnmarshalBinary(b []byte) error { - var res ChangeSettings2Body - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2DefaultBody change settings2 default body -swagger:model ChangeSettings2DefaultBody -*/ -type ChangeSettings2DefaultBody struct { - // code - Code int32 `json:"code,omitempty"` - - // message - Message string `json:"message,omitempty"` - - // details - Details []*ChangeSettings2DefaultBodyDetailsItems0 `json:"details"` -} - -// Validate validates this change settings2 default body -func (o *ChangeSettings2DefaultBody) Validate(formats strfmt.Registry) error { - var res []error - - if err := o.validateDetails(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2DefaultBody) validateDetails(formats strfmt.Registry) error { - if swag.IsZero(o.Details) { // not required - return nil - } - - for i := 0; i < len(o.Details); i++ { - if swag.IsZero(o.Details[i]) { // not required - continue - } - - if o.Details[i] != nil { - if err := o.Details[i].Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) - } - return err - } - } - - } - - return nil -} - -// ContextValidate validate this change settings2 default body based on the context it is used -func (o *ChangeSettings2DefaultBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := o.contextValidateDetails(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2DefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { - for i := 0; i < len(o.Details); i++ { - if o.Details[i] != nil { - if err := o.Details[i].ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("ChangeSettings2 default" + "." + "details" + "." + strconv.Itoa(i)) - } - return err - } - } - } - - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2DefaultBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2DefaultBody) UnmarshalBinary(b []byte) error { - var res ChangeSettings2DefaultBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2DefaultBodyDetailsItems0 `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// // or ... -// if (any.isSameTypeAs(Foo.getDefaultInstance())) { -// foo = any.unpack(Foo.getDefaultInstance()); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := anypb.New(foo) -// if err != nil { -// ... -// } -// ... -// foo := &pb.Foo{} -// if err := any.UnmarshalTo(foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -swagger:model ChangeSettings2DefaultBodyDetailsItems0 -*/ -type ChangeSettings2DefaultBodyDetailsItems0 struct { - // A URL/resource name that uniquely identifies the type of the serialized - // protocol buffer message. This string must contain at least - // one "/" character. The last segment of the URL's path must represent - // the fully qualified name of the type (as in - // `path/google.protobuf.Duration`). The name should be in a canonical form - // (e.g., leading "." is not accepted). - // - // In practice, teams usually precompile into the binary all types that they - // expect it to use in the context of Any. However, for URLs which use the - // scheme `http`, `https`, or no scheme, one can optionally set up a type - // server that maps type URLs to message definitions as follows: - // - // * If no scheme is provided, `https` is assumed. - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Note: this functionality is not currently available in the official - // protobuf release, and it is not used for type URLs beginning with - // type.googleapis.com. As of May 2023, there are no widely used type server - // implementations and no plans to implement one. - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - AtType string `json:"@type,omitempty"` -} - -// Validate validates this change settings2 default body details items0 -func (o *ChangeSettings2DefaultBodyDetailsItems0) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this change settings2 default body details items0 based on context it is used -func (o *ChangeSettings2DefaultBodyDetailsItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2DefaultBodyDetailsItems0) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2DefaultBodyDetailsItems0) UnmarshalBinary(b []byte) error { - var res ChangeSettings2DefaultBodyDetailsItems0 - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2OKBody change settings2 OK body -swagger:model ChangeSettings2OKBody -*/ -type ChangeSettings2OKBody struct { - // settings - Settings *ChangeSettings2OKBodySettings `json:"settings,omitempty"` -} - -// Validate validates this change settings2 OK body -func (o *ChangeSettings2OKBody) Validate(formats strfmt.Registry) error { - var res []error - - if err := o.validateSettings(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2OKBody) validateSettings(formats strfmt.Registry) error { - if swag.IsZero(o.Settings) { // not required - return nil - } - - if o.Settings != nil { - if err := o.Settings.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("changeSettings2Ok" + "." + "settings") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("changeSettings2Ok" + "." + "settings") - } - return err - } - } - - return nil -} - -// ContextValidate validate this change settings2 OK body based on the context it is used -func (o *ChangeSettings2OKBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := o.contextValidateSettings(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2OKBody) contextValidateSettings(ctx context.Context, formats strfmt.Registry) error { - if o.Settings != nil { - if err := o.Settings.ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("changeSettings2Ok" + "." + "settings") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("changeSettings2Ok" + "." + "settings") - } - return err - } - } - - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2OKBody) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2OKBody) UnmarshalBinary(b []byte) error { - var res ChangeSettings2OKBody - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2OKBodySettings Settings represents PMM Server settings. -swagger:model ChangeSettings2OKBodySettings -*/ -type ChangeSettings2OKBodySettings struct { - // True if updates are enabled. - UpdatesEnabled bool `json:"updates_enabled,omitempty"` - - // True if telemetry is enabled. - TelemetryEnabled bool `json:"telemetry_enabled,omitempty"` - - // data retention - DataRetention string `json:"data_retention,omitempty"` - - // ssh key - SSHKey string `json:"ssh_key,omitempty"` - - // aws partitions - AWSPartitions []string `json:"aws_partitions"` - - // True if Security Threat Tool is enabled. - SttEnabled bool `json:"stt_enabled,omitempty"` - - // Percona Platform user's email, if this PMM instance is linked to the Platform. - PlatformEmail string `json:"platform_email,omitempty"` - - // True if Alerting is enabled. - AlertingEnabled bool `json:"alerting_enabled,omitempty"` - - // PMM Server public address. - PMMPublicAddress string `json:"pmm_public_address,omitempty"` - - // True if Backup Management is enabled. - BackupManagementEnabled bool `json:"backup_management_enabled,omitempty"` - - // True if Azure Discover is enabled. - AzurediscoverEnabled bool `json:"azurediscover_enabled,omitempty"` - - // True if the PMM instance is connected to Platform - ConnectedToPlatform bool `json:"connected_to_platform,omitempty"` - - // Includes list of collected telemetry - TelemetrySummaries []string `json:"telemetry_summaries"` - - // True if Access Control is enabled. - EnableAccessControl bool `json:"enable_access_control,omitempty"` - - // Default Access Control role ID for new users. - DefaultRoleID int64 `json:"default_role_id,omitempty"` - - // metrics resolutions - MetricsResolutions *ChangeSettings2OKBodySettingsMetricsResolutions `json:"metrics_resolutions,omitempty"` - - // stt check intervals - SttCheckIntervals *ChangeSettings2OKBodySettingsSttCheckIntervals `json:"stt_check_intervals,omitempty"` -} - -// Validate validates this change settings2 OK body settings -func (o *ChangeSettings2OKBodySettings) Validate(formats strfmt.Registry) error { - var res []error - - if err := o.validateMetricsResolutions(formats); err != nil { - res = append(res, err) - } - - if err := o.validateSttCheckIntervals(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2OKBodySettings) validateMetricsResolutions(formats strfmt.Registry) error { - if swag.IsZero(o.MetricsResolutions) { // not required - return nil - } - - if o.MetricsResolutions != nil { - if err := o.MetricsResolutions.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") - } - return err - } - } - - return nil -} - -func (o *ChangeSettings2OKBodySettings) validateSttCheckIntervals(formats strfmt.Registry) error { - if swag.IsZero(o.SttCheckIntervals) { // not required - return nil - } - - if o.SttCheckIntervals != nil { - if err := o.SttCheckIntervals.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") - } - return err - } - } - - return nil -} - -// ContextValidate validate this change settings2 OK body settings based on the context it is used -func (o *ChangeSettings2OKBodySettings) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - var res []error - - if err := o.contextValidateMetricsResolutions(ctx, formats); err != nil { - res = append(res, err) - } - - if err := o.contextValidateSttCheckIntervals(ctx, formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (o *ChangeSettings2OKBodySettings) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { - if o.MetricsResolutions != nil { - if err := o.MetricsResolutions.ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "metrics_resolutions") - } - return err - } - } - - return nil -} - -func (o *ChangeSettings2OKBodySettings) contextValidateSttCheckIntervals(ctx context.Context, formats strfmt.Registry) error { - if o.SttCheckIntervals != nil { - if err := o.SttCheckIntervals.ContextValidate(ctx, formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") - } else if ce, ok := err.(*errors.CompositeError); ok { - return ce.ValidateName("changeSettings2Ok" + "." + "settings" + "." + "stt_check_intervals") - } - return err - } - } - - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2OKBodySettings) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2OKBodySettings) UnmarshalBinary(b []byte) error { - var res ChangeSettings2OKBodySettings - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2OKBodySettingsMetricsResolutions MetricsResolutions represents Prometheus exporters metrics resolutions. -swagger:model ChangeSettings2OKBodySettingsMetricsResolutions -*/ -type ChangeSettings2OKBodySettingsMetricsResolutions struct { - // High resolution. Should have a suffix in JSON: 1s, 1m, 1h. - Hr string `json:"hr,omitempty"` - - // Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h. - Mr string `json:"mr,omitempty"` - - // Low resolution. Should have a suffix in JSON: 1s, 1m, 1h. - Lr string `json:"lr,omitempty"` -} - -// Validate validates this change settings2 OK body settings metrics resolutions -func (o *ChangeSettings2OKBodySettingsMetricsResolutions) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this change settings2 OK body settings metrics resolutions based on context it is used -func (o *ChangeSettings2OKBodySettingsMetricsResolutions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2OKBodySettingsMetricsResolutions) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2OKBodySettingsMetricsResolutions) UnmarshalBinary(b []byte) error { - var res ChangeSettings2OKBodySettingsMetricsResolutions - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2OKBodySettingsSttCheckIntervals STTCheckIntervals represents intervals between STT checks. -swagger:model ChangeSettings2OKBodySettingsSttCheckIntervals -*/ -type ChangeSettings2OKBodySettingsSttCheckIntervals struct { - // Standard check interval. - StandardInterval string `json:"standard_interval,omitempty"` - - // Interval for rare check runs. - RareInterval string `json:"rare_interval,omitempty"` - - // Interval for frequent check runs. - FrequentInterval string `json:"frequent_interval,omitempty"` -} - -// Validate validates this change settings2 OK body settings stt check intervals -func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this change settings2 OK body settings stt check intervals based on context it is used -func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2OKBodySettingsSttCheckIntervals) UnmarshalBinary(b []byte) error { - var res ChangeSettings2OKBodySettingsSttCheckIntervals - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2ParamsBodyAWSPartitions change settings2 params body AWS partitions -swagger:model ChangeSettings2ParamsBodyAWSPartitions -*/ -type ChangeSettings2ParamsBodyAWSPartitions struct { - // values - Values []string `json:"values"` -} - -// Validate validates this change settings2 params body AWS partitions -func (o *ChangeSettings2ParamsBodyAWSPartitions) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this change settings2 params body AWS partitions based on context it is used -func (o *ChangeSettings2ParamsBodyAWSPartitions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2ParamsBodyAWSPartitions) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2ParamsBodyAWSPartitions) UnmarshalBinary(b []byte) error { - var res ChangeSettings2ParamsBodyAWSPartitions - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2ParamsBodyMetricsResolutions MetricsResolutions represents Prometheus exporters metrics resolutions. -swagger:model ChangeSettings2ParamsBodyMetricsResolutions -*/ -type ChangeSettings2ParamsBodyMetricsResolutions struct { - // High resolution. Should have a suffix in JSON: 1s, 1m, 1h. - Hr string `json:"hr,omitempty"` - - // Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h. - Mr string `json:"mr,omitempty"` - - // Low resolution. Should have a suffix in JSON: 1s, 1m, 1h. - Lr string `json:"lr,omitempty"` -} - -// Validate validates this change settings2 params body metrics resolutions -func (o *ChangeSettings2ParamsBodyMetricsResolutions) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this change settings2 params body metrics resolutions based on context it is used -func (o *ChangeSettings2ParamsBodyMetricsResolutions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2ParamsBodyMetricsResolutions) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2ParamsBodyMetricsResolutions) UnmarshalBinary(b []byte) error { - var res ChangeSettings2ParamsBodyMetricsResolutions - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} - -/* -ChangeSettings2ParamsBodySttCheckIntervals STTCheckIntervals represents intervals between STT checks. -swagger:model ChangeSettings2ParamsBodySttCheckIntervals -*/ -type ChangeSettings2ParamsBodySttCheckIntervals struct { - // Standard check interval. - StandardInterval string `json:"standard_interval,omitempty"` - - // Interval for rare check runs. - RareInterval string `json:"rare_interval,omitempty"` - - // Interval for frequent check runs. - FrequentInterval string `json:"frequent_interval,omitempty"` -} - -// Validate validates this change settings2 params body stt check intervals -func (o *ChangeSettings2ParamsBodySttCheckIntervals) Validate(formats strfmt.Registry) error { - return nil -} - -// ContextValidate validates this change settings2 params body stt check intervals based on context it is used -func (o *ChangeSettings2ParamsBodySttCheckIntervals) ContextValidate(ctx context.Context, formats strfmt.Registry) error { - return nil -} - -// MarshalBinary interface implementation -func (o *ChangeSettings2ParamsBodySttCheckIntervals) MarshalBinary() ([]byte, error) { - if o == nil { - return nil, nil - } - return swag.WriteJSON(o) -} - -// UnmarshalBinary interface implementation -func (o *ChangeSettings2ParamsBodySttCheckIntervals) UnmarshalBinary(b []byte) error { - var res ChangeSettings2ParamsBodySttCheckIntervals - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *o = res - return nil -} diff --git a/api/server/v1/json/client/server_service/server_service_client.go b/api/server/v1/json/client/server_service/server_service_client.go index 33f2e2e97a..27c192380b 100644 --- a/api/server/v1/json/client/server_service/server_service_client.go +++ b/api/server/v1/json/client/server_service/server_service_client.go @@ -32,8 +32,6 @@ type ClientService interface { ChangeSettings(params *ChangeSettingsParams, opts ...ClientOption) (*ChangeSettingsOK, error) - ChangeSettings2(params *ChangeSettings2Params, opts ...ClientOption) (*ChangeSettings2OK, error) - CheckUpdates(params *CheckUpdatesParams, opts ...ClientOption) (*CheckUpdatesOK, error) GetSettings(params *GetSettingsParams, opts ...ClientOption) (*GetSettingsOK, error) @@ -129,45 +127,6 @@ func (a *Client) ChangeSettings(params *ChangeSettingsParams, opts ...ClientOpti return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) } -/* -ChangeSettings2 changes settings - -Changes PMM Server settings. -*/ -func (a *Client) ChangeSettings2(params *ChangeSettings2Params, opts ...ClientOption) (*ChangeSettings2OK, error) { - // TODO: Validate the params before sending - if params == nil { - params = NewChangeSettings2Params() - } - op := &runtime.ClientOperation{ - ID: "ChangeSettings2", - Method: "PATCH", - PathPattern: "/v1/Settings/Change", - ProducesMediaTypes: []string{"application/json"}, - ConsumesMediaTypes: []string{"application/json"}, - Schemes: []string{"http", "https"}, - Params: params, - Reader: &ChangeSettings2Reader{formats: a.formats}, - Context: params.Context, - Client: params.HTTPClient, - } - for _, opt := range opts { - opt(op) - } - - result, err := a.transport.Submit(op) - if err != nil { - return nil, err - } - success, ok := result.(*ChangeSettings2OK) - if ok { - return success, nil - } - // unexpected success response - unexpectedSuccess := result.(*ChangeSettings2Default) - return nil, runtime.NewAPIError("unexpected success response: content available as default response in error", unexpectedSuccess, unexpectedSuccess.Code()) -} - /* CheckUpdates checks updates diff --git a/api/server/v1/json/v1.json b/api/server/v1/json/v1.json index da0e76e0c9..7f927acfe1 100644 --- a/api/server/v1/json/v1.json +++ b/api/server/v1/json/v1.json @@ -428,303 +428,6 @@ } } } - }, - "patch": { - "description": "Changes PMM Server settings.", - "tags": [ - "ServerService" - ], - "summary": "Change settings", - "operationId": "ChangeSettings2", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "aws_partitions": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 0 - } - }, - "x-order": 5 - }, - "data_retention": { - "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", - "type": "string", - "x-order": 3 - }, - "enable_access_control": { - "type": "boolean", - "title": "Enable Access Control", - "x-order": 12 - }, - "enable_alerting": { - "description": "Enable Alerting.", - "type": "boolean", - "x-order": 7 - }, - "enable_azurediscover": { - "description": "Enable Azure Discover.", - "type": "boolean", - "x-order": 10 - }, - "enable_backup_management": { - "description": "Enable Backup Management.", - "type": "boolean", - "x-order": 11 - }, - "enable_stt": { - "description": "Enable Security Threat Tool.", - "type": "boolean", - "x-order": 6 - }, - "enable_telemetry": { - "type": "boolean", - "x-order": 1 - }, - "enable_updates": { - "type": "boolean", - "x-order": 0 - }, - "metrics_resolutions": { - "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", - "type": "object", - "properties": { - "hr": { - "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 0 - }, - "lr": { - "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 2 - }, - "mr": { - "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 1 - } - }, - "x-order": 2 - }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", - "x-order": 8 - }, - "ssh_key": { - "type": "string", - "x-order": 4 - }, - "stt_check_intervals": { - "description": "STTCheckIntervals represents intervals between STT checks.", - "type": "object", - "properties": { - "frequent_interval": { - "description": "Interval for frequent check runs.", - "type": "string", - "x-order": 2 - }, - "rare_interval": { - "description": "Interval for rare check runs.", - "type": "string", - "x-order": 1 - }, - "standard_interval": { - "description": "Standard check interval.", - "type": "string", - "x-order": 0 - } - }, - "x-order": 9 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "settings": { - "description": "Settings represents PMM Server settings.", - "type": "object", - "properties": { - "alerting_enabled": { - "description": "True if Alerting is enabled.", - "type": "boolean", - "x-order": 8 - }, - "aws_partitions": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 5 - }, - "azurediscover_enabled": { - "description": "True if Azure Discover is enabled.", - "type": "boolean", - "x-order": 12 - }, - "backup_management_enabled": { - "description": "True if Backup Management is enabled.", - "type": "boolean", - "x-order": 11 - }, - "connected_to_platform": { - "type": "boolean", - "title": "True if the PMM instance is connected to Platform", - "x-order": 13 - }, - "data_retention": { - "type": "string", - "x-order": 3 - }, - "default_role_id": { - "description": "Default Access Control role ID for new users.", - "type": "integer", - "format": "int64", - "x-order": 16 - }, - "enable_access_control": { - "description": "True if Access Control is enabled.", - "type": "boolean", - "x-order": 15 - }, - "metrics_resolutions": { - "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", - "type": "object", - "properties": { - "hr": { - "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 0 - }, - "lr": { - "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 2 - }, - "mr": { - "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 1 - } - }, - "x-order": 2 - }, - "platform_email": { - "description": "Percona Platform user's email, if this PMM instance is linked to the Platform.", - "type": "string", - "x-order": 7 - }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", - "x-order": 9 - }, - "ssh_key": { - "type": "string", - "x-order": 4 - }, - "stt_check_intervals": { - "description": "STTCheckIntervals represents intervals between STT checks.", - "type": "object", - "properties": { - "frequent_interval": { - "description": "Interval for frequent check runs.", - "type": "string", - "x-order": 2 - }, - "rare_interval": { - "description": "Interval for rare check runs.", - "type": "string", - "x-order": 1 - }, - "standard_interval": { - "description": "Standard check interval.", - "type": "string", - "x-order": 0 - } - }, - "x-order": 10 - }, - "stt_enabled": { - "description": "True if Security Threat Tool is enabled.", - "type": "boolean", - "x-order": 6 - }, - "telemetry_enabled": { - "description": "True if telemetry is enabled.", - "type": "boolean", - "x-order": 1 - }, - "telemetry_summaries": { - "type": "array", - "title": "Includes list of collected telemetry", - "items": { - "type": "string" - }, - "x-order": 14 - }, - "updates_enabled": { - "description": "True if updates are enabled.", - "type": "boolean", - "x-order": 0 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "details": { - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - }, - "message": { - "type": "string", - "x-order": 1 - } - } - } - } - } } }, "/v1/Settings/Get": { diff --git a/api/server/v1/server.pb.go b/api/server/v1/server.pb.go index 46a8c98bba..3780d91856 100644 --- a/api/server/v1/server.pb.go +++ b/api/server/v1/server.pb.go @@ -1740,7 +1740,7 @@ var file_server_v1_server_proto_rawDesc = []byte{ 0x49, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0xbc, + 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0xa2, 0x0d, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, @@ -1825,40 +1825,38 @@ var file_server_v1_server_proto_rawDesc = []byte{ 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x67, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x12, 0xa7, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x5a, 0x18, 0x3a, 0x01, 0x2a, - 0x32, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x10, 0x41, - 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, - 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, - 0x57, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x1a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, - 0x32, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x41, 0x57, 0x53, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x90, 0x01, - 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, - 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, - 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, + 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0xb0, 0x01, 0x0a, 0x10, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, + 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, 0x57, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, + 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, 0x32, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, + 0x76, 0x31, 0x2f, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/server/v1/server.pb.gw.go b/api/server/v1/server.pb.gw.go index 79fe46963a..f055d9ff27 100644 --- a/api/server/v1/server.pb.gw.go +++ b/api/server/v1/server.pb.gw.go @@ -273,38 +273,6 @@ func local_request_ServerService_ChangeSettings_0(ctx context.Context, marshaler return msg, metadata, err } -func request_ServerService_ChangeSettings_1(ctx context.Context, marshaler runtime.Marshaler, client ServerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ChangeSettingsRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.ChangeSettings(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_ServerService_ChangeSettings_1(ctx context.Context, marshaler runtime.Marshaler, server ServerServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq ChangeSettingsRequest - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.ChangeSettings(ctx, &protoReq) - return msg, metadata, err -} - func request_ServerService_AWSInstanceCheck_0(ctx context.Context, marshaler runtime.Marshaler, client ServerServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq AWSInstanceCheckRequest var metadata runtime.ServerMetadata @@ -534,30 +502,6 @@ func RegisterServerServiceHandlerServer(ctx context.Context, mux *runtime.ServeM forward_ServerService_ChangeSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PATCH", pattern_ServerService_ChangeSettings_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/server.v1.ServerService/ChangeSettings", runtime.WithHTTPPathPattern("/v1/Settings/Change")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_ServerService_ChangeSettings_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_ServerService_ChangeSettings_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle("POST", pattern_ServerService_AWSInstanceCheck_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -790,27 +734,6 @@ func RegisterServerServiceHandlerClient(ctx context.Context, mux *runtime.ServeM forward_ServerService_ChangeSettings_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("PATCH", pattern_ServerService_ChangeSettings_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/server.v1.ServerService/ChangeSettings", runtime.WithHTTPPathPattern("/v1/Settings/Change")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_ServerService_ChangeSettings_1(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - - forward_ServerService_ChangeSettings_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle("POST", pattern_ServerService_AWSInstanceCheck_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -852,8 +775,6 @@ var ( pattern_ServerService_ChangeSettings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "Settings", "Change"}, "")) - pattern_ServerService_ChangeSettings_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "Settings", "Change"}, "")) - pattern_ServerService_AWSInstanceCheck_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "AWSInstanceCheck"}, "")) ) @@ -874,7 +795,5 @@ var ( forward_ServerService_ChangeSettings_0 = runtime.ForwardResponseMessage - forward_ServerService_ChangeSettings_1 = runtime.ForwardResponseMessage - forward_ServerService_AWSInstanceCheck_0 = runtime.ForwardResponseMessage ) diff --git a/api/server/v1/server.proto b/api/server/v1/server.proto index b13b53ca51..f652fb2cca 100644 --- a/api/server/v1/server.proto +++ b/api/server/v1/server.proto @@ -281,10 +281,6 @@ service ServerService { option (google.api.http) = { post: "/v1/Settings/Change" body: "*" - additional_bindings { - patch: "/v1/Settings/Change" - body: "*" - } }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Change settings" diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 81da93d784..37d9618b87 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -3279,303 +3279,6 @@ } } } - }, - "patch": { - "description": "Changes PMM Server settings.", - "tags": [ - "ServerService" - ], - "summary": "Change settings", - "operationId": "ChangeSettings2", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "enable_updates": { - "type": "boolean", - "x-order": 0 - }, - "enable_telemetry": { - "type": "boolean", - "x-order": 1 - }, - "metrics_resolutions": { - "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", - "type": "object", - "properties": { - "hr": { - "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 0 - }, - "mr": { - "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 1 - }, - "lr": { - "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 2 - }, - "data_retention": { - "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", - "type": "string", - "x-order": 3 - }, - "ssh_key": { - "type": "string", - "x-order": 4 - }, - "aws_partitions": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 0 - } - }, - "x-order": 5 - }, - "enable_stt": { - "description": "Enable Security Threat Tool.", - "type": "boolean", - "x-order": 6 - }, - "enable_alerting": { - "description": "Enable Alerting.", - "type": "boolean", - "x-order": 7 - }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", - "x-order": 8 - }, - "stt_check_intervals": { - "description": "STTCheckIntervals represents intervals between STT checks.", - "type": "object", - "properties": { - "standard_interval": { - "description": "Standard check interval.", - "type": "string", - "x-order": 0 - }, - "rare_interval": { - "description": "Interval for rare check runs.", - "type": "string", - "x-order": 1 - }, - "frequent_interval": { - "description": "Interval for frequent check runs.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 9 - }, - "enable_azurediscover": { - "description": "Enable Azure Discover.", - "type": "boolean", - "x-order": 10 - }, - "enable_backup_management": { - "description": "Enable Backup Management.", - "type": "boolean", - "x-order": 11 - }, - "enable_access_control": { - "type": "boolean", - "title": "Enable Access Control", - "x-order": 12 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "settings": { - "description": "Settings represents PMM Server settings.", - "type": "object", - "properties": { - "updates_enabled": { - "description": "True if updates are enabled.", - "type": "boolean", - "x-order": 0 - }, - "telemetry_enabled": { - "description": "True if telemetry is enabled.", - "type": "boolean", - "x-order": 1 - }, - "metrics_resolutions": { - "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", - "type": "object", - "properties": { - "hr": { - "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 0 - }, - "mr": { - "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 1 - }, - "lr": { - "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 2 - }, - "data_retention": { - "type": "string", - "x-order": 3 - }, - "ssh_key": { - "type": "string", - "x-order": 4 - }, - "aws_partitions": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 5 - }, - "stt_enabled": { - "description": "True if Security Threat Tool is enabled.", - "type": "boolean", - "x-order": 6 - }, - "platform_email": { - "description": "Percona Platform user's email, if this PMM instance is linked to the Platform.", - "type": "string", - "x-order": 7 - }, - "alerting_enabled": { - "description": "True if Alerting is enabled.", - "type": "boolean", - "x-order": 8 - }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", - "x-order": 9 - }, - "stt_check_intervals": { - "description": "STTCheckIntervals represents intervals between STT checks.", - "type": "object", - "properties": { - "standard_interval": { - "description": "Standard check interval.", - "type": "string", - "x-order": 0 - }, - "rare_interval": { - "description": "Interval for rare check runs.", - "type": "string", - "x-order": 1 - }, - "frequent_interval": { - "description": "Interval for frequent check runs.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 10 - }, - "backup_management_enabled": { - "description": "True if Backup Management is enabled.", - "type": "boolean", - "x-order": 11 - }, - "azurediscover_enabled": { - "description": "True if Azure Discover is enabled.", - "type": "boolean", - "x-order": 12 - }, - "connected_to_platform": { - "type": "boolean", - "title": "True if the PMM instance is connected to Platform", - "x-order": 13 - }, - "telemetry_summaries": { - "type": "array", - "title": "Includes list of collected telemetry", - "items": { - "type": "string" - }, - "x-order": 14 - }, - "enable_access_control": { - "description": "True if Access Control is enabled.", - "type": "boolean", - "x-order": 15 - }, - "default_role_id": { - "description": "Default Access Control role ID for new users.", - "type": "integer", - "format": "int64", - "x-order": 16 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } } }, "/v1/Settings/Get": { diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 2b1b44222b..fce857612a 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -428,303 +428,6 @@ } } } - }, - "patch": { - "description": "Changes PMM Server settings.", - "tags": [ - "ServerService" - ], - "summary": "Change settings", - "operationId": "ChangeSettings2", - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "enable_updates": { - "type": "boolean", - "x-order": 0 - }, - "enable_telemetry": { - "type": "boolean", - "x-order": 1 - }, - "metrics_resolutions": { - "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", - "type": "object", - "properties": { - "hr": { - "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 0 - }, - "mr": { - "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 1 - }, - "lr": { - "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 2 - }, - "data_retention": { - "description": "A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h.", - "type": "string", - "x-order": 3 - }, - "ssh_key": { - "type": "string", - "x-order": 4 - }, - "aws_partitions": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 0 - } - }, - "x-order": 5 - }, - "enable_stt": { - "description": "Enable Security Threat Tool.", - "type": "boolean", - "x-order": 6 - }, - "enable_alerting": { - "description": "Enable Alerting.", - "type": "boolean", - "x-order": 7 - }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", - "x-order": 8 - }, - "stt_check_intervals": { - "description": "STTCheckIntervals represents intervals between STT checks.", - "type": "object", - "properties": { - "standard_interval": { - "description": "Standard check interval.", - "type": "string", - "x-order": 0 - }, - "rare_interval": { - "description": "Interval for rare check runs.", - "type": "string", - "x-order": 1 - }, - "frequent_interval": { - "description": "Interval for frequent check runs.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 9 - }, - "enable_azurediscover": { - "description": "Enable Azure Discover.", - "type": "boolean", - "x-order": 10 - }, - "enable_backup_management": { - "description": "Enable Backup Management.", - "type": "boolean", - "x-order": 11 - }, - "enable_access_control": { - "type": "boolean", - "title": "Enable Access Control", - "x-order": 12 - } - } - } - } - ], - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "type": "object", - "properties": { - "settings": { - "description": "Settings represents PMM Server settings.", - "type": "object", - "properties": { - "updates_enabled": { - "description": "True if updates are enabled.", - "type": "boolean", - "x-order": 0 - }, - "telemetry_enabled": { - "description": "True if telemetry is enabled.", - "type": "boolean", - "x-order": 1 - }, - "metrics_resolutions": { - "description": "MetricsResolutions represents Prometheus exporters metrics resolutions.", - "type": "object", - "properties": { - "hr": { - "description": "High resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 0 - }, - "mr": { - "description": "Medium resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 1 - }, - "lr": { - "description": "Low resolution. Should have a suffix in JSON: 1s, 1m, 1h.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 2 - }, - "data_retention": { - "type": "string", - "x-order": 3 - }, - "ssh_key": { - "type": "string", - "x-order": 4 - }, - "aws_partitions": { - "type": "array", - "items": { - "type": "string" - }, - "x-order": 5 - }, - "stt_enabled": { - "description": "True if Security Threat Tool is enabled.", - "type": "boolean", - "x-order": 6 - }, - "platform_email": { - "description": "Percona Platform user's email, if this PMM instance is linked to the Platform.", - "type": "string", - "x-order": 7 - }, - "alerting_enabled": { - "description": "True if Alerting is enabled.", - "type": "boolean", - "x-order": 8 - }, - "pmm_public_address": { - "description": "PMM Server public address.", - "type": "string", - "x-order": 9 - }, - "stt_check_intervals": { - "description": "STTCheckIntervals represents intervals between STT checks.", - "type": "object", - "properties": { - "standard_interval": { - "description": "Standard check interval.", - "type": "string", - "x-order": 0 - }, - "rare_interval": { - "description": "Interval for rare check runs.", - "type": "string", - "x-order": 1 - }, - "frequent_interval": { - "description": "Interval for frequent check runs.", - "type": "string", - "x-order": 2 - } - }, - "x-order": 10 - }, - "backup_management_enabled": { - "description": "True if Backup Management is enabled.", - "type": "boolean", - "x-order": 11 - }, - "azurediscover_enabled": { - "description": "True if Azure Discover is enabled.", - "type": "boolean", - "x-order": 12 - }, - "connected_to_platform": { - "type": "boolean", - "title": "True if the PMM instance is connected to Platform", - "x-order": 13 - }, - "telemetry_summaries": { - "type": "array", - "title": "Includes list of collected telemetry", - "items": { - "type": "string" - }, - "x-order": 14 - }, - "enable_access_control": { - "description": "True if Access Control is enabled.", - "type": "boolean", - "x-order": 15 - }, - "default_role_id": { - "description": "Default Access Control role ID for new users.", - "type": "integer", - "format": "int64", - "x-order": 16 - } - }, - "x-order": 0 - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32", - "x-order": 0 - }, - "message": { - "type": "string", - "x-order": 1 - }, - "details": { - "type": "array", - "items": { - "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }", - "type": "object", - "properties": { - "@type": { - "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.", - "type": "string", - "x-order": 0 - } - }, - "additionalProperties": false - }, - "x-order": 2 - } - } - } - } - } } }, "/v1/Settings/Get": { diff --git a/descriptor.bin b/descriptor.bin index a6726d84c011601586ebd1b85f55403098d858b2..6802aa7b58caa3c66382b6ce00cb37fa673e0544 100644 GIT binary patch delta 317 zcmeCVqxI>wRznM83sVbo3rh=Y3tJ0&3r7p*7Ou%rjOVsbiQ-ZaU|h6)YZjL~E93I% zfAhJ*83U$=7I2xfNLVpyOXI91q z)5WH7<#^3zV&f9#;$&lBVrSWKYLAi-+YBZakRU%7D_Bs7Z4ML5e4v0J7du#B5(iw! zj*A5-1mrJbVp=`@%rq|B`bA7^VqCmny&OzJEQ^@L^R4r#>Sp~PBg9T(iL@0@^peVm2-F)*>SY&f+?Nr-I*6AMU?pNkbND8#maiDfZR zK#+?aEHH@!E@a2W0u%!BmoYJ|pT21tmu>wrCN?oHUa(#cCLxw(OyYVlE;ER083;9* zgGGpKITOn&xcwYZ`=Npm`$4K!GqJ3L+t0xQvL7Op#8yz0Uy^Ukbyl29qBJwLEH!U? J-gK@OF#!LjO1}UA From 802bd1fbf893ab47b00bba737ef5affe42090917 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Mon, 18 Dec 2023 20:04:56 +0200 Subject: [PATCH 05/20] PMM-8019 Fix tests --- .../management/alerting/service_test.go | 3 +- managed/services/server/server_test.go | 33 ++++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/managed/services/management/alerting/service_test.go b/managed/services/management/alerting/service_test.go index e6e5368e45..8ed48cc81f 100644 --- a/managed/services/management/alerting/service_test.go +++ b/managed/services/management/alerting/service_test.go @@ -21,6 +21,7 @@ import ( "testing" "time" + "github.com/AlekSi/pointer" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "gopkg.in/reform.v1" @@ -146,7 +147,7 @@ func TestDownloadTemplates(t *testing.T) { t.Run("with disabled telemetry", func(t *testing.T) { _, err := models.UpdateSettings(db.Querier, &models.ChangeSettingsParams{ - DisableTelemetry: true, + EnableTelemetry: pointer.ToBool(false), }) require.NoError(t, err) diff --git a/managed/services/server/server_test.go b/managed/services/server/server_test.go index 8e77f48ff2..ab66227b55 100644 --- a/managed/services/server/server_test.go +++ b/managed/services/server/server_test.go @@ -20,6 +20,7 @@ import ( "testing" "time" + "github.com/AlekSi/pointer" "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" @@ -99,8 +100,8 @@ func TestServer(t *testing.T) { "PMM_PUBLIC_ADDRESS=1.2.3.4:5678", }) require.Empty(t, errs) - assert.Equal(t, true, s.envSettings.DisableUpdates) - assert.Equal(t, true, s.envSettings.DisableTelemetry) + assert.Equal(t, false, s.envSettings.EnableUpdates) + assert.Equal(t, false, s.envSettings.EnableTelemetry) assert.Equal(t, time.Second, s.envSettings.MetricsResolutions.HR) assert.Equal(t, 2*time.Second, s.envSettings.MetricsResolutions.MR) assert.Equal(t, 3*time.Second, s.envSettings.MetricsResolutions.LR) @@ -116,7 +117,7 @@ func TestServer(t *testing.T) { "DATA_RETENTION=360H", }) require.Empty(t, errs) - assert.Equal(t, true, s.envSettings.DisableTelemetry) + assert.Equal(t, false, s.envSettings.EnableTelemetry) assert.Equal(t, 3*time.Second, s.envSettings.MetricsResolutions.HR) assert.Equal(t, 15*24*time.Hour, s.envSettings.DataRetention) }) @@ -128,7 +129,7 @@ func TestServer(t *testing.T) { }) require.Len(t, errs, 1) require.EqualError(t, errs[0], `failed to parse environment variable "DISABLE_TELEMETRY"`) - assert.False(t, s.envSettings.DisableTelemetry) + assert.True(t, *s.envSettings.EnableTelemetry) }) t.Run("InvalidValue", func(t *testing.T) { @@ -138,7 +139,7 @@ func TestServer(t *testing.T) { }) require.Len(t, errs, 1) require.EqualError(t, errs[0], `invalid value "" for environment variable "DISABLE_TELEMETRY"`) - assert.False(t, s.envSettings.DisableTelemetry) + assert.True(t, *s.envSettings.EnableTelemetry) }) t.Run("MetricsLessThenMin", func(t *testing.T) { @@ -193,29 +194,29 @@ func TestServer(t *testing.T) { ctx := context.TODO() - s.envSettings.DisableUpdates = true + s.envSettings.EnableUpdates = pointer.ToBool(true) expected := status.New(codes.FailedPrecondition, "Updates are disabled via DISABLE_UPDATES environment variable.") tests.AssertGRPCError(t, expected, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableUpdates: true, + EnableUpdates: pointer.ToBool(true), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - DisableUpdates: true, + EnableUpdates: pointer.ToBool(false), })) - s.envSettings.DisableTelemetry = true + s.envSettings.EnableTelemetry = pointer.ToBool(false) expected = status.New(codes.FailedPrecondition, "Telemetry is disabled via DISABLE_TELEMETRY environment variable.") tests.AssertGRPCError(t, expected, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableTelemetry: true, + EnableTelemetry: pointer.ToBool(true), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - DisableTelemetry: true, + EnableTelemetry: pointer.ToBool(false), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableStt: true, + EnableStt: pointer.ToBool(true), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - DisableStt: true, + EnableStt: pointer.ToBool(false), })) }) @@ -230,7 +231,7 @@ func TestServer(t *testing.T) { ctx := context.TODO() s, err := server.ChangeSettings(ctx, &serverv1.ChangeSettingsRequest{ - EnableTelemetry: true, + EnableTelemetry: pointer.ToBool(true), }) require.NoError(t, err) require.NotNil(t, s) @@ -248,13 +249,13 @@ func TestServer(t *testing.T) { ctx := context.TODO() s, err := server.ChangeSettings(ctx, &serverv1.ChangeSettingsRequest{ - DisableAlerting: true, + EnableAlerting: pointer.ToBool(false), }) require.NoError(t, err) require.NotNil(t, s) s, err = server.ChangeSettings(ctx, &serverv1.ChangeSettingsRequest{ - EnableAlerting: true, + EnableAlerting: pointer.ToBool(true), }) require.NoError(t, err) require.NotNil(t, s) From 14ea1c1129dc5e029a4638b98a94f4ec0ba06c26 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Mon, 18 Dec 2023 20:11:56 +0200 Subject: [PATCH 06/20] PMM-8019 Fixes --- api-tests/server/advisors_test.go | 3 +-- managed/services/grafana/auth_server_test.go | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api-tests/server/advisors_test.go b/api-tests/server/advisors_test.go index 81097d772c..df246c114b 100644 --- a/api-tests/server/advisors_test.go +++ b/api-tests/server/advisors_test.go @@ -248,8 +248,7 @@ func toggleAdvisorChecks(t *testing.T, enable bool) { res, err := serverClient.Default.ServerService.ChangeSettings(&server_service.ChangeSettingsParams{ Body: server_service.ChangeSettingsBody{ - EnableStt: enable, - DisableStt: !enable, + EnableStt: enable, }, Context: pmmapitests.Context, }) diff --git a/managed/services/grafana/auth_server_test.go b/managed/services/grafana/auth_server_test.go index e4efdca3d9..d6b26205a2 100644 --- a/managed/services/grafana/auth_server_test.go +++ b/managed/services/grafana/auth_server_test.go @@ -26,6 +26,7 @@ import ( "testing" "time" + "github.com/AlekSi/pointer" "github.com/google/uuid" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" @@ -315,7 +316,7 @@ func TestAuthServerAddVMGatewayToken(t *testing.T) { // Enable access control _, err = models.UpdateSettings(db.Querier, &models.ChangeSettingsParams{ - EnableAccessControl: true, + EnableAccessControl: pointer.ToBool(true), }) require.NoError(t, err) From 24d8a4b0c66dfbb903ba689b27439d59a0aa2e04 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 19 Dec 2023 15:11:49 +0200 Subject: [PATCH 07/20] PMM-8019 Fix migrations order --- managed/models/database.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/managed/models/database.go b/managed/models/database.go index 4c0715d381..e075af9d08 100644 --- a/managed/models/database.go +++ b/managed/models/database.go @@ -962,7 +962,7 @@ var databaseSchema = [][]string{ 102: { `UPDATE settings SET settings = settings - 'alert_manager_url'`, }, - 89: { + 103: { `UPDATE settings SET settings = settings || jsonb_set(settings, '{alerting,enabled}', to_jsonb( NOT ((settings->'alerting'->'disabled')::boolean)));`, `UPDATE settings SET settings = settings #- '{alerting, disabled}';`, From 90aa7af433e4c3dc7b8e927c6f880166ee31a374 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 19 Dec 2023 18:42:15 +0200 Subject: [PATCH 08/20] PMM-8019 Fix DB migrations --- managed/models/database.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/managed/models/database.go b/managed/models/database.go index e075af9d08..495b72d986 100644 --- a/managed/models/database.go +++ b/managed/models/database.go @@ -963,19 +963,19 @@ var databaseSchema = [][]string{ `UPDATE settings SET settings = settings - 'alert_manager_url'`, }, 103: { - `UPDATE settings SET settings = settings || jsonb_set(settings, '{alerting,enabled}', to_jsonb( NOT ((settings->'alerting'->'disabled')::boolean)));`, + `UPDATE settings SET settings = jsonb_insert(settings, '{alerting,enabled}', to_jsonb(NOT ((settings#>'{alerting,disabled}')::boolean))) WHERE (settings#>'{alerting,disabled}') IS NOT NULL`, `UPDATE settings SET settings = settings #- '{alerting, disabled}';`, - `UPDATE settings SET settings = settings || jsonb_set(settings, '{updates,enabled}', to_jsonb( NOT ((settings->'updates'->'disabled')::boolean)));`, + `UPDATE settings SET settings = settings || jsonb_set(settings, '{updates,enabled}', to_jsonb( NOT ((settings#>'{updates,disabled}')::boolean))) WHERE (settings#>'{updates,disabled}') IS NOT NULL`, `UPDATE settings SET settings = settings #- '{updates, disabled}';`, - `UPDATE settings SET settings = settings || jsonb_set(settings, '{telemetry,enabled}', to_jsonb( NOT ((settings->'telemetry'->'disabled')::boolean)));`, + `UPDATE settings SET settings = settings || jsonb_set(settings, '{telemetry,enabled}', to_jsonb( NOT ((settings#>'{telemetry,disabled}')::boolean))) WHERE (settings#>'{telemetry,disabled}') IS NOT NULL`, `UPDATE settings SET settings = settings #- '{telemetry, disabled}';`, - `UPDATE settings SET settings = settings || jsonb_set(settings, '{backup_management,enabled}', to_jsonb( NOT ((settings->'backup_management'->'disabled')::boolean)));`, + `UPDATE settings SET settings = settings || jsonb_set(settings, '{backup_management,enabled}', to_jsonb( NOT ((settings#>'{backup_management,disabled}')::boolean))) WHERE (settings#>'{backup_management,disabled}') IS NOT NULL`, `UPDATE settings SET settings = settings #- '{backup_management, disabled}';`, - `UPDATE settings SET settings = settings || jsonb_set(settings, '{sass,enabled}', to_jsonb( NOT ((settings->'sass'->'stt_disabled')::boolean)));`, + `UPDATE settings SET settings = settings || jsonb_set(settings, '{sass,enabled}', to_jsonb( NOT ((settings#>'{sass,stt_disabled}')::boolean))) WHERE (settings#>'{sass,stt_disabled}') IS NOT NULL`, `UPDATE settings SET settings = settings #- '{sass, stt_disabled}';`, }, } From 597964680aaa2a1acf354d6c747ca5c6adf48264 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Wed, 20 Dec 2023 17:46:22 +0200 Subject: [PATCH 09/20] PMM-8019 Fix tests --- managed/models/settings_helpers_test.go | 4 +-- managed/services/checks/checks.go | 2 +- managed/services/checks/checks_test.go | 6 ++-- managed/services/server/server_test.go | 44 ++++++++++++------------- managed/utils/envvars/parser.go | 34 +++++++++++-------- managed/utils/envvars/parser_test.go | 28 ++++++++-------- 6 files changed, 62 insertions(+), 56 deletions(-) diff --git a/managed/models/settings_helpers_test.go b/managed/models/settings_helpers_test.go index 2f2db79b67..4b2521c027 100644 --- a/managed/models/settings_helpers_test.go +++ b/managed/models/settings_helpers_test.go @@ -185,8 +185,8 @@ func TestSettings(t *testing.T) { EnableSTT: pointer.ToBool(false), }) require.NoError(t, err) - assert.False(t, *ns.Telemetry.Enabled) - assert.True(t, *ns.SaaS.Enabled) + assert.True(t, *ns.Telemetry.Enabled) + assert.False(t, *ns.SaaS.Enabled) // enable both ns, err = models.UpdateSettings(sqlDB, &models.ChangeSettingsParams{ diff --git a/managed/services/checks/checks.go b/managed/services/checks/checks.go index 30f3b0d55c..29f507df6b 100644 --- a/managed/services/checks/checks.go +++ b/managed/services/checks/checks.go @@ -267,7 +267,7 @@ func (s *Service) GetChecksResults(_ context.Context, serviceID string) ([]servi return nil, err } - if settings.IsAdvisorsEnabled() { + if !settings.IsAdvisorsEnabled() { return nil, services.ErrAdvisorsDisabled } diff --git a/managed/services/checks/checks_test.go b/managed/services/checks/checks_test.go index 48feb1613d..60e9021960 100644 --- a/managed/services/checks/checks_test.go +++ b/managed/services/checks/checks_test.go @@ -403,7 +403,7 @@ func TestGetSecurityCheckResults(t *testing.T) { settings, err := models.GetSettings(db) require.NoError(t, err) - settings.SaaS.Enabled = pointer.ToBool(true) + settings.SaaS.Enabled = pointer.ToBool(false) err = models.SaveSettings(db, settings) require.NoError(t, err) @@ -448,7 +448,7 @@ func TestStartChecks(t *testing.T) { settings, err := models.GetSettings(db) require.NoError(t, err) - settings.SaaS.Enabled = pointer.ToBool(true) + settings.SaaS.Enabled = pointer.ToBool(false) err = models.SaveSettings(db, settings) require.NoError(t, err) @@ -823,7 +823,7 @@ func TestGetFailedChecks(t *testing.T) { settings, err := models.GetSettings(db) require.NoError(t, err) - settings.SaaS.Enabled = pointer.ToBool(true) + settings.SaaS.Enabled = pointer.ToBool(false) err = models.SaveSettings(db, settings) require.NoError(t, err) diff --git a/managed/services/server/server_test.go b/managed/services/server/server_test.go index ab66227b55..2807a0d096 100644 --- a/managed/services/server/server_test.go +++ b/managed/services/server/server_test.go @@ -91,8 +91,8 @@ func TestServer(t *testing.T) { t.Run("Typical", func(t *testing.T) { s := newServer(t) errs := s.UpdateSettingsFromEnv([]string{ - "DISABLE_UPDATES=true", - "DISABLE_TELEMETRY=1", + "ENABLE_UPDATES=true", + "ENABLE_TELEMETRY=1", "METRICS_RESOLUTION_HR=1s", "METRICS_RESOLUTION_MR=2s", "METRICS_RESOLUTION_LR=3s", @@ -100,24 +100,24 @@ func TestServer(t *testing.T) { "PMM_PUBLIC_ADDRESS=1.2.3.4:5678", }) require.Empty(t, errs) - assert.Equal(t, false, s.envSettings.EnableUpdates) - assert.Equal(t, false, s.envSettings.EnableTelemetry) + assert.Equal(t, true, *s.envSettings.EnableUpdates) + assert.Equal(t, true, *s.envSettings.EnableTelemetry) assert.Equal(t, time.Second, s.envSettings.MetricsResolutions.HR) assert.Equal(t, 2*time.Second, s.envSettings.MetricsResolutions.MR) assert.Equal(t, 3*time.Second, s.envSettings.MetricsResolutions.LR) assert.Equal(t, 10*24*time.Hour, s.envSettings.DataRetention) - assert.Equal(t, "1.2.3.4:5678", s.envSettings.PMMPublicAddress) + assert.Equal(t, "1.2.3.4:5678", *s.envSettings.PMMPublicAddress) }) t.Run("Untypical", func(t *testing.T) { s := newServer(t) errs := s.UpdateSettingsFromEnv([]string{ - "DISABLE_TELEMETRY=TrUe", + "ENABLE_TELEMETRY=TrUe", "METRICS_RESOLUTION=3S", "DATA_RETENTION=360H", }) require.Empty(t, errs) - assert.Equal(t, false, s.envSettings.EnableTelemetry) + assert.Equal(t, true, *s.envSettings.EnableTelemetry) assert.Equal(t, 3*time.Second, s.envSettings.MetricsResolutions.HR) assert.Equal(t, 15*24*time.Hour, s.envSettings.DataRetention) }) @@ -125,21 +125,21 @@ func TestServer(t *testing.T) { t.Run("NoValue", func(t *testing.T) { s := newServer(t) errs := s.UpdateSettingsFromEnv([]string{ - "DISABLE_TELEMETRY", + "ENABLE_TELEMETRY", }) require.Len(t, errs, 1) - require.EqualError(t, errs[0], `failed to parse environment variable "DISABLE_TELEMETRY"`) - assert.True(t, *s.envSettings.EnableTelemetry) + require.EqualError(t, errs[0], `failed to parse environment variable "ENABLE_TELEMETRY"`) + assert.Nil(t, s.envSettings.EnableTelemetry) }) t.Run("InvalidValue", func(t *testing.T) { s := newServer(t) errs := s.UpdateSettingsFromEnv([]string{ - "DISABLE_TELEMETRY=", + "ENABLE_TELEMETRY=", }) require.Len(t, errs, 1) - require.EqualError(t, errs[0], `invalid value "" for environment variable "DISABLE_TELEMETRY"`) - assert.True(t, *s.envSettings.EnableTelemetry) + require.EqualError(t, errs[0], `invalid value "" for environment variable "ENABLE_TELEMETRY"`) + assert.Nil(t, s.envSettings.EnableTelemetry) }) t.Run("MetricsLessThenMin", func(t *testing.T) { @@ -195,28 +195,28 @@ func TestServer(t *testing.T) { ctx := context.TODO() s.envSettings.EnableUpdates = pointer.ToBool(true) - expected := status.New(codes.FailedPrecondition, "Updates are disabled via DISABLE_UPDATES environment variable.") + expected := status.New(codes.FailedPrecondition, "Updates are configured via ENABLE_UPDATES environment variable.") tests.AssertGRPCError(t, expected, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableUpdates: pointer.ToBool(true), + EnableUpdates: pointer.ToBool(false), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableUpdates: pointer.ToBool(false), + EnableUpdates: pointer.ToBool(true), })) - s.envSettings.EnableTelemetry = pointer.ToBool(false) - expected = status.New(codes.FailedPrecondition, "Telemetry is disabled via DISABLE_TELEMETRY environment variable.") + s.envSettings.EnableTelemetry = pointer.ToBool(true) + expected = status.New(codes.FailedPrecondition, "Telemetry is configured via ENABLE_TELEMETRY environment variable.") tests.AssertGRPCError(t, expected, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableTelemetry: pointer.ToBool(true), + EnableTelemetry: pointer.ToBool(false), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableTelemetry: pointer.ToBool(false), + EnableTelemetry: pointer.ToBool(true), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableStt: pointer.ToBool(true), + EnableStt: pointer.ToBool(false), })) assert.NoError(t, s.validateChangeSettingsRequest(ctx, &serverv1.ChangeSettingsRequest{ - EnableStt: pointer.ToBool(false), + EnableStt: pointer.ToBool(true), })) }) diff --git a/managed/utils/envvars/parser.go b/managed/utils/envvars/parser.go index f8fa423909..cb2032ffb7 100644 --- a/managed/utils/envvars/parser.go +++ b/managed/utils/envvars/parser.go @@ -99,55 +99,65 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin case "ENABLE_UPDATES": b, err := strconv.ParseBool(v) if err != nil { - err = fmt.Errorf("invalid value %q for environment variable %q", v, k) + errs = append(errs, fmt.Errorf("invalid value %q for environment variable %q", v, k)) + continue } envSettings.EnableUpdates = &b case "ENABLE_TELEMETRY": b, err := strconv.ParseBool(v) if err != nil { - err = fmt.Errorf("invalid value %q for environment variable %q", v, k) + errs = append(errs, fmt.Errorf("invalid value %q for environment variable %q", v, k)) + continue } envSettings.EnableTelemetry = &b case "METRICS_RESOLUTION", "METRICS_RESOLUTION_HR": if envSettings.MetricsResolutions.HR, err = parseStringDuration(v); err != nil { - err = formatEnvVariableError(err, env, v) + errs = append(errs, formatEnvVariableError(err, env, v)) + continue } case "METRICS_RESOLUTION_MR": if envSettings.MetricsResolutions.MR, err = parseStringDuration(v); err != nil { - err = formatEnvVariableError(err, env, v) + errs = append(errs, formatEnvVariableError(err, env, v)) + continue } case "METRICS_RESOLUTION_LR": if envSettings.MetricsResolutions.LR, err = parseStringDuration(v); err != nil { - err = formatEnvVariableError(err, env, v) + errs = append(errs, formatEnvVariableError(err, env, v)) + continue } case "DATA_RETENTION": if envSettings.DataRetention, err = parseStringDuration(v); err != nil { - err = formatEnvVariableError(err, env, v) + errs = append(errs, formatEnvVariableError(err, env, v)) + continue } case "ENABLE_VM_CACHE": b, err := strconv.ParseBool(v) if err != nil { - err = fmt.Errorf("invalid value %q for environment variable %q", v, k) + errs = append(errs, fmt.Errorf("invalid value %q for environment variable %q", v, k)) + continue } envSettings.EnableVMCache = &b case "ENABLE_ALERTING": b, err := strconv.ParseBool(v) if err != nil { - err = fmt.Errorf("invalid value %q for environment variable %q", v, k) + errs = append(errs, fmt.Errorf("invalid value %q for environment variable %q", v, k)) + continue } envSettings.EnableAlerting = &b case "ENABLE_AZUREDISCOVER": b, err := strconv.ParseBool(v) if err != nil { - err = fmt.Errorf("invalid value %q for environment variable %q", v, k) + errs = append(errs, fmt.Errorf("invalid value %q for environment variable %q", v, k)) + continue } envSettings.EnableAzurediscover = &b case "ENABLE_BACKUP_MANAGEMENT": b, err := strconv.ParseBool(v) if err != nil { - err = fmt.Errorf("invalid value %q for environment variable %q", v, k) + errs = append(errs, fmt.Errorf("invalid value %q for environment variable %q", v, k)) + continue } envSettings.EnableBackupManagement = &b @@ -229,10 +239,6 @@ func ParseEnvVars(envs []string) (*models.ChangeSettingsParams, []error, []strin warns = append(warns, fmt.Sprintf("environment variable %q IS NOT SUPPORTED and WILL BE REMOVED IN THE FUTURE", k)) } - - if err != nil { - errs = append(errs, err) - } } return envSettings, errs, warns diff --git a/managed/utils/envvars/parser_test.go b/managed/utils/envvars/parser_test.go index a3cfcd3375..48985d05cd 100644 --- a/managed/utils/envvars/parser_test.go +++ b/managed/utils/envvars/parser_test.go @@ -34,8 +34,8 @@ func TestEnvVarValidator(t *testing.T) { t.Parallel() envs := []string{ - "DISABLE_UPDATES=True", - "DISABLE_TELEMETRY=True", + "ENABLE_UPDATES=false", + "ENABLE_TELEMETRY=True", "METRICS_RESOLUTION=5m", "METRICS_RESOLUTION_MR=5s", "METRICS_RESOLUTION_LR=1h", @@ -43,9 +43,9 @@ func TestEnvVarValidator(t *testing.T) { } expectedEnvVars := &models.ChangeSettingsParams{ DataRetention: 72 * time.Hour, - EnableTelemetry: pointer.ToBool(false), - EnableSTT: pointer.ToBool(true), + EnableTelemetry: pointer.ToBool(true), EnableUpdates: pointer.ToBool(false), + EnableSTT: nil, MetricsResolutions: models.MetricsResolutions{ HR: 5 * time.Minute, MR: 5 * time.Second, @@ -118,10 +118,10 @@ func TestEnvVarValidator(t *testing.T) { t.Parallel() envs := []string{ - "DISABLE_UPDATES", - "DISABLE_TELEMETRY", - "DISABLE_UPDATES=5", - "DISABLE_TELEMETRY=X", + "ENABLE_UPDATES", + "ENABLE_TELEMETRY", + "ENABLE_UPDATES=5", + "ENABLE_TELEMETRY=X", "METRICS_RESOLUTION=5f", "METRICS_RESOLUTION_MR=s5", "METRICS_RESOLUTION_LR=1hour", @@ -130,10 +130,10 @@ func TestEnvVarValidator(t *testing.T) { expectedEnvVars := &models.ChangeSettingsParams{} expectedErrs := []error{ - fmt.Errorf(`failed to parse environment variable "DISABLE_UPDATES"`), - fmt.Errorf(`failed to parse environment variable "DISABLE_TELEMETRY"`), - fmt.Errorf(`invalid value "5" for environment variable "DISABLE_UPDATES"`), - fmt.Errorf(`invalid value "x" for environment variable "DISABLE_TELEMETRY"`), + fmt.Errorf(`failed to parse environment variable "ENABLE_UPDATES"`), + fmt.Errorf(`failed to parse environment variable "ENABLE_TELEMETRY"`), + fmt.Errorf(`invalid value "5" for environment variable "ENABLE_UPDATES"`), + fmt.Errorf(`invalid value "x" for environment variable "ENABLE_TELEMETRY"`), fmt.Errorf(`environment variable "METRICS_RESOLUTION=5f" has invalid duration 5f`), fmt.Errorf(`environment variable "METRICS_RESOLUTION_MR=s5" has invalid duration s5`), fmt.Errorf(`environment variable "METRICS_RESOLUTION_LR=1hour" has invalid duration 1hour`), @@ -141,8 +141,8 @@ func TestEnvVarValidator(t *testing.T) { } gotEnvVars, gotErrs, gotWarns := ParseEnvVars(envs) - assert.Equal(t, gotEnvVars, expectedEnvVars) - assert.Equal(t, gotErrs, expectedErrs) + assert.Equal(t, expectedEnvVars, gotEnvVars) + assert.Equal(t, expectedErrs, gotErrs) assert.Nil(t, gotWarns) }) From da584dfe9d00bb6dc572a3d5a112a5d209c3f362 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Wed, 20 Dec 2023 17:46:59 +0200 Subject: [PATCH 10/20] PMM-8019 Update docs --- api-tests/management/alerting/alerting_test.go | 2 +- build/docker/server/README.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/api-tests/management/alerting/alerting_test.go b/api-tests/management/alerting/alerting_test.go index 7cee370324..6fa96c9f8f 100644 --- a/api-tests/management/alerting/alerting_test.go +++ b/api-tests/management/alerting/alerting_test.go @@ -41,7 +41,7 @@ import ( // Note: Even though the Alerting service checks for alerting enabled or disabled before returning results // we don't enable or disable Alerting explicit in our tests since it is enabled by default through -// DISABLE_ALERTING env var. +// ENABLE_ALERTING env var. func TestRulesAPI(t *testing.T) { t.Parallel() client := alertingClient.Default.AlertingService diff --git a/build/docker/server/README.md b/build/docker/server/README.md index d49a8136c2..e59d1d6e2e 100644 --- a/build/docker/server/README.md +++ b/build/docker/server/README.md @@ -25,17 +25,17 @@ You can use these environment variables (-e VAR) when running the Docker image. | Variable | Description | |--------------------------|-----------------------------------------------------------------------------------------------------------------------------| -| DISABLE_UPDATES | Disable automatic updates | -| DISABLE_TELEMETRY | Disable built-in telemetry and disable STT if telemetry is disabled | -| DISABLE_ALERTING | Disable percona alerting | +| ENABLE_UPDATES | Enable/disable automatic updates | +| ENABLE_TELEMETRY | Enable/disable built-in telemetry and disable STT if telemetry is disabled | +| ENABLE_ALERTING | Enable/disable percona alerting | | METRICS_RESOLUTION | High metrics resolution in seconds | | METRICS_RESOLUTION_HR | High metrics resolution (same as above) | | METRICS_RESOLUTION_MR | Medium metrics resolution in seconds | | METRICS_RESOLUTION_LR | Low metrics resolution in seconds | | DATA_RETENTION | How long to keep time-series data in ClickHouse. This variable accepts golang style duration format, example: 24h, 30m, 10s | -| ENABLE_VM_CACHE | Enable cache in VM | -| ENABLE_AZUREDISCOVER | Enable support for discovery of Azure databases | -| ENABLE_BACKUP_MANAGEMENT | Enable integrated backup tools | +| ENABLE_VM_CACHE | Enable/disable cache in VM | +| ENABLE_AZUREDISCOVER | Enable/disable support for discovery of Azure databases | +| ENABLE_BACKUP_MANAGEMENT | Enable/disable integrated backup tools | | PMM_PUBLIC_ADDRESS | External IP address or the DNS name on which PMM server is running. | | PMM_DEBUG | Enables a more verbose log level | | PMM_TRACE | Enables a more verbose log level including traceback information | From f9f4cb4fe66c754bf605304a265b4e3237b4728d Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Thu, 21 Dec 2023 13:18:12 +0200 Subject: [PATCH 11/20] PMM-8019 Fix --- managed/models/settings_helpers.go | 1 + managed/models/settings_helpers_test.go | 12 ++++++------ managed/services/server/server.go | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/managed/models/settings_helpers.go b/managed/models/settings_helpers.go index afcfd1d169..0083c4d460 100644 --- a/managed/models/settings_helpers.go +++ b/managed/models/settings_helpers.go @@ -58,6 +58,7 @@ type ChangeSettingsParams struct { DataRetention time.Duration + // List of AWS partitions to use. If empty - default partitions will be used. If nil - no changes will be made. AWSPartitions []string SSHKey *string diff --git a/managed/models/settings_helpers_test.go b/managed/models/settings_helpers_test.go index 4b2521c027..8f4f700da6 100644 --- a/managed/models/settings_helpers_test.go +++ b/managed/models/settings_helpers_test.go @@ -104,16 +104,16 @@ func TestSettings(t *testing.T) { require.NoError(t, err) assert.Equal(t, []string{"aws", "aws-cn"}, settings.AWSPartitions) - s = &models.ChangeSettingsParams{ - AWSPartitions: []string{}, - } + // Nil is treated as not changed + s = &models.ChangeSettingsParams{AWSPartitions: nil} settings, err = models.UpdateSettings(sqlDB, s) require.NoError(t, err) assert.Equal(t, []string{"aws", "aws-cn"}, settings.AWSPartitions) - settings = &models.Settings{AWSPartitions: []string{}} - err = models.SaveSettings(sqlDB, settings) - assert.NoError(t, err) + // Empty list is treated as reset to default + s = &models.ChangeSettingsParams{AWSPartitions: []string{}} + settings, err = models.UpdateSettings(sqlDB, s) + require.NoError(t, err) assert.Equal(t, []string{"aws"}, settings.AWSPartitions) }) diff --git a/managed/services/server/server.go b/managed/services/server/server.go index 087fc545c9..2bcd282f03 100644 --- a/managed/services/server/server.go +++ b/managed/services/server/server.go @@ -557,6 +557,7 @@ func (s *Server) ChangeSettings(ctx context.Context, req *serverv1.ChangeSetting } if req.AwsPartitions != nil { + // Nil treated as "do not change", empty slice treated as "reset to default" settingsParams.AWSPartitions = req.AwsPartitions.Values } From 3db6aa081a8bd748cb5a909d065983c6c0585882 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Thu, 21 Dec 2023 13:39:48 +0200 Subject: [PATCH 12/20] PMM-8019 Make check enabling toogle optional --- api/management/v1/checks.pb.go | 547 +++++++++--------- api/management/v1/checks.pb.validate.go | 10 +- api/management/v1/checks.proto | 7 +- .../change_security_checks_responses.go | 3 - .../list_advisors_responses.go | 4 +- .../list_security_checks_responses.go | 4 +- api/management/v1/json/v1.json | 14 +- api/swagger/swagger-dev.json | 14 +- api/swagger/swagger.json | 14 +- descriptor.bin | Bin 699890 -> 699831 bytes managed/services/management/checks.go | 20 +- managed/services/management/checks_test.go | 8 +- 12 files changed, 309 insertions(+), 336 deletions(-) diff --git a/api/management/v1/checks.pb.go b/api/management/v1/checks.pb.go index 5c0b32619b..19c32464a7 100644 --- a/api/management/v1/checks.pb.go +++ b/api/management/v1/checks.pb.go @@ -471,8 +471,8 @@ type SecurityCheck struct { // Machine-readable name (ID) that is used in expression. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // True if that check is disabled. - Disabled bool `protobuf:"varint,2,opt,name=disabled,proto3" json:"disabled,omitempty"` + // True if that check is enabled. + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` // Long human-readable description. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` // Short human-readable summary. @@ -522,9 +522,9 @@ func (x *SecurityCheck) GetName() string { return "" } -func (x *SecurityCheck) GetDisabled() bool { +func (x *SecurityCheck) GetEnabled() bool { if x != nil { - return x.Disabled + return x.Enabled } return false } @@ -657,9 +657,8 @@ type ChangeSecurityCheckParams struct { unknownFields protoimpl.UnknownFields // The name of the check to change. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` - Disable bool `protobuf:"varint,3,opt,name=disable,proto3" json:"disable,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Enable *bool `protobuf:"varint,2,opt,name=enable,proto3,oneof" json:"enable,omitempty"` // check execution interval. Interval SecurityCheckInterval `protobuf:"varint,4,opt,name=interval,proto3,enum=management.v1.SecurityCheckInterval" json:"interval,omitempty"` } @@ -704,15 +703,8 @@ func (x *ChangeSecurityCheckParams) GetName() string { } func (x *ChangeSecurityCheckParams) GetEnable() bool { - if x != nil { - return x.Enable - } - return false -} - -func (x *ChangeSecurityCheckParams) GetDisable() bool { - if x != nil { - return x.Disable + if x != nil && x.Enable != nil { + return *x.Enable } return false } @@ -1526,274 +1518,274 @@ var file_management_v1_checks_proto_rawDesc = []byte{ 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf8, 0x01, 0x0a, 0x0d, 0x53, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf6, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x06, 0x66, 0x61, - 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, - 0x6f, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x06, 0x66, - 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0xa3, 0x01, - 0x0a, 0x19, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x22, 0x24, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x63, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x32, - 0x0a, 0x1a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x52, - 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x06, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x52, 0x06, 0x66, 0x61, 0x6d, + 0x69, 0x6c, 0x79, 0x22, 0xc5, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x19, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, + 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x08, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x32, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x08, 0x61, 0x64, 0x76, - 0x69, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x5f, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x57, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x73, 0x0a, 0x16, - 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, - 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x22, - 0x4e, 0x0a, 0x17, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, - 0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x22, - 0x1a, 0x0a, 0x18, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, - 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xae, 0x01, 0x0a, 0x15, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, - 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, - 0x0a, 0x20, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, - 0x52, 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, - 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, - 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x45, - 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x41, 0x52, 0x45, 0x10, 0x03, 0x2a, 0xa1, 0x01, 0x0a, - 0x12, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x6d, - 0x69, 0x6c, 0x79, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x44, 0x56, 0x49, 0x53, 0x4f, 0x52, 0x5f, 0x43, - 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x44, 0x56, - 0x49, 0x53, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, - 0x59, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x44, 0x56, - 0x49, 0x53, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, - 0x59, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x12, 0x20, - 0x0a, 0x1c, 0x41, 0x44, 0x56, 0x49, 0x53, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, - 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x47, 0x4f, 0x44, 0x42, 0x10, 0x03, - 0x32, 0xa6, 0x10, 0x0a, 0x15, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8f, 0x02, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x12, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x01, 0x92, 0x41, 0x65, 0x12, 0x14, 0x4c, 0x69, - 0x73, 0x74, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x73, 0x1a, 0x4d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, - 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, - 0x6f, 0x66, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x24, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, 0x65, + 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x63, 0x0a, + 0x1f, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x02, + 0x18, 0x01, 0x22, 0x32, 0x0a, 0x1a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, + 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x52, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, + 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4a, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, + 0x08, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x5f, 0x0a, 0x1b, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x57, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x73, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x0b, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x73, 0x22, 0x4e, 0x0a, 0x17, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x69, 0x6c, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x69, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, + 0xae, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x45, 0x43, + 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, + 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x45, 0x43, 0x55, + 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x56, 0x41, 0x4c, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x20, + 0x0a, 0x1c, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, + 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x41, 0x52, 0x45, 0x10, 0x03, + 0x2a, 0xa1, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x44, 0x56, 0x49, 0x53, + 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, + 0x1a, 0x41, 0x44, 0x56, 0x49, 0x53, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, + 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x01, 0x12, 0x23, 0x0a, + 0x1f, 0x41, 0x44, 0x56, 0x49, 0x53, 0x4f, 0x52, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, + 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, + 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x44, 0x56, 0x49, 0x53, 0x4f, 0x52, 0x5f, 0x43, 0x48, + 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x4d, 0x4f, 0x4e, 0x47, 0x4f, + 0x44, 0x42, 0x10, 0x03, 0x32, 0xa6, 0x10, 0x0a, 0x15, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x8f, + 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x01, 0x92, 0x41, 0x65, + 0x12, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x4d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, + 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x12, 0xe5, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x92, 0x41, 0x4a, 0x12, 0x11, 0x47, 0x65, 0x74, 0x20, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x35, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, + 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x46, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0xf2, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x67, + 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, + 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8c, + 0x01, 0x92, 0x41, 0x4d, 0x12, 0x12, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x20, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x20, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x1a, 0x35, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, + 0x65, 0x2f, 0x55, 0x6e, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x6c, 0x65, 0x72, + 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x63, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x58, + 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xe5, 0x01, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x82, 0x01, 0x92, 0x41, 0x4a, 0x12, 0x11, 0x47, 0x65, 0x74, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x35, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, - 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x12, 0xf2, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8c, 0x01, 0x92, 0x41, 0x4d, - 0x12, 0x12, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x41, - 0x6c, 0x65, 0x72, 0x74, 0x1a, 0x35, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x2f, 0x55, 0x6e, - 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x58, 0x01, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x88, 0x02, 0x01, 0x12, 0x8e, 0x02, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x93, 0x01, 0x92, 0x41, 0x55, 0x12, 0x1a, 0x47, 0x65, 0x74, 0x20, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x35, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, - 0x54, 0x6f, 0x6f, 0x6c, 0x27, 0x73, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x58, 0x01, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x88, 0x02, 0x01, 0x12, 0xcf, 0x02, 0x0a, 0x13, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x12, 0x29, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe0, 0x01, 0x92, 0x41, 0xae, 0x01, - 0x12, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x94, 0x01, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x73, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x66, - 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, - 0x6e, 0x27, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xe1, 0x01, 0x0a, - 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x12, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x92, 0x41, 0x46, 0x12, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x20, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x1a, 0x2f, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, - 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, 0x2f, 0x76, + 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x88, 0x02, 0x01, 0x12, 0x8e, 0x02, + 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x93, 0x01, 0x92, 0x41, 0x55, 0x12, 0x1a, + 0x47, 0x65, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x20, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x35, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x73, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54, 0x68, 0x72, + 0x65, 0x61, 0x64, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x27, 0x73, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x2e, 0x58, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0xc5, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, - 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x88, 0x02, 0x01, 0x12, 0xcf, + 0x02, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x29, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe0, 0x01, + 0x92, 0x41, 0xae, 0x01, 0x12, 0x15, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x94, 0x01, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, + 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x20, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x77, + 0x68, 0x65, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x61, + 0x72, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x41, 0x6c, 0x6c, + 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x20, 0x69, 0x66, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, + 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x12, 0xe1, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x76, 0x92, 0x41, + 0x46, 0x12, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x20, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x2f, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, + 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, + 0x22, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0xc5, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, + 0x69, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, 0x92, 0x41, 0x42, 0x12, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x1a, 0x31, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, - 0x66, 0x20, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x41, 0x64, 0x76, 0x69, 0x73, - 0x6f, 0x72, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x8e, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x73, 0x12, 0x2a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, + 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6c, + 0x92, 0x41, 0x42, 0x12, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, + 0x72, 0x73, 0x1a, 0x31, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x20, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x41, + 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x8e, 0x02, 0x0a, + 0x14, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x2a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2b, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x92, 0x41, 0x6a, - 0x12, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x50, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x20, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x20, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x20, 0x62, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, - 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0xac, 0x01, 0x0a, 0x11, 0x63, 0x6f, - 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, - 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, - 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, + 0x01, 0x92, 0x41, 0x6a, 0x12, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x50, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x54, + 0x6f, 0x6f, 0x6c, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0xac, 0x01, + 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, + 0x02, 0x0d, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x0d, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x19, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2157,6 +2149,7 @@ func file_management_v1_checks_proto_init() { } } } + file_management_v1_checks_proto_msgTypes[5].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/management/v1/checks.pb.validate.go b/api/management/v1/checks.pb.validate.go index 3fdaf8fc7b..a70d3e1771 100644 --- a/api/management/v1/checks.pb.validate.go +++ b/api/management/v1/checks.pb.validate.go @@ -412,7 +412,7 @@ func (m *SecurityCheck) validate(all bool) error { // no validation rules for Name - // no validation rules for Disabled + // no validation rules for Enabled // no validation rules for Description @@ -666,12 +666,12 @@ func (m *ChangeSecurityCheckParams) validate(all bool) error { // no validation rules for Name - // no validation rules for Enable - - // no validation rules for Disable - // no validation rules for Interval + if m.Enable != nil { + // no validation rules for Enable + } + if len(errors) > 0 { return ChangeSecurityCheckParamsMultiError(errors) } diff --git a/api/management/v1/checks.proto b/api/management/v1/checks.proto index 8d8220ea4d..73016aac63 100644 --- a/api/management/v1/checks.proto +++ b/api/management/v1/checks.proto @@ -78,8 +78,8 @@ message CheckResult { message SecurityCheck { // Machine-readable name (ID) that is used in expression. string name = 1; - // True if that check is disabled. - bool disabled = 2; + // True if that check is enabled. + bool enabled = 2; // Long human-readable description. string description = 3; // Short human-readable summary. @@ -109,8 +109,7 @@ message Advisor { message ChangeSecurityCheckParams { // The name of the check to change. string name = 1; - bool enable = 2; - bool disable = 3; + optional bool enable = 2; // check execution interval. SecurityCheckInterval interval = 4; } diff --git a/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go b/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go index 6519c99b41..2b333ce6f9 100644 --- a/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go +++ b/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go @@ -368,9 +368,6 @@ type ChangeSecurityChecksParamsBodyParamsItems0 struct { // enable Enable bool `json:"enable,omitempty"` - // disable - Disable bool `json:"disable,omitempty"` - // SecurityCheckInterval represents possible execution interval values for checks. // Enum: [SECURITY_CHECK_INTERVAL_UNSPECIFIED SECURITY_CHECK_INTERVAL_STANDARD SECURITY_CHECK_INTERVAL_FREQUENT SECURITY_CHECK_INTERVAL_RARE] Interval *string `json:"interval,omitempty"` diff --git a/api/management/v1/json/client/security_checks_service/list_advisors_responses.go b/api/management/v1/json/client/security_checks_service/list_advisors_responses.go index 827ac596c0..af08917273 100644 --- a/api/management/v1/json/client/security_checks_service/list_advisors_responses.go +++ b/api/management/v1/json/client/security_checks_service/list_advisors_responses.go @@ -480,8 +480,8 @@ type ListAdvisorsOKBodyAdvisorsItems0ChecksItems0 struct { // Machine-readable name (ID) that is used in expression. Name string `json:"name,omitempty"` - // True if that check is disabled. - Disabled bool `json:"disabled,omitempty"` + // True if that check is enabled. + Enabled bool `json:"enabled,omitempty"` // Long human-readable description. Description string `json:"description,omitempty"` diff --git a/api/management/v1/json/client/security_checks_service/list_security_checks_responses.go b/api/management/v1/json/client/security_checks_service/list_security_checks_responses.go index 5de7d539d9..52ea5a99cc 100644 --- a/api/management/v1/json/client/security_checks_service/list_security_checks_responses.go +++ b/api/management/v1/json/client/security_checks_service/list_security_checks_responses.go @@ -367,8 +367,8 @@ type ListSecurityChecksOKBodyChecksItems0 struct { // Machine-readable name (ID) that is used in expression. Name string `json:"name,omitempty"` - // True if that check is disabled. - Disabled bool `json:"disabled,omitempty"` + // True if that check is enabled. + Enabled bool `json:"enabled,omitempty"` // Long human-readable description. Description string `json:"description,omitempty"` diff --git a/api/management/v1/json/v1.json b/api/management/v1/json/v1.json index 20486919ee..59c2808833 100644 --- a/api/management/v1/json/v1.json +++ b/api/management/v1/json/v1.json @@ -1429,8 +1429,8 @@ "type": "string", "x-order": 2 }, - "disabled": { - "description": "True if that check is disabled.", + "enabled": { + "description": "True if that check is enabled.", "type": "boolean", "x-order": 1 }, @@ -6256,10 +6256,6 @@ "description": "ChangeSecurityCheckParams specifies a single check parameters.", "type": "object", "properties": { - "disable": { - "type": "boolean", - "x-order": 2 - }, "enable": { "type": "boolean", "x-order": 1 @@ -6274,7 +6270,7 @@ "SECURITY_CHECK_INTERVAL_FREQUENT", "SECURITY_CHECK_INTERVAL_RARE" ], - "x-order": 3 + "x-order": 2 }, "name": { "description": "The name of the check to change.", @@ -6651,8 +6647,8 @@ "type": "string", "x-order": 2 }, - "disabled": { - "description": "True if that check is disabled.", + "enabled": { + "description": "True if that check is enabled.", "type": "boolean", "x-order": 1 }, diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 37d9618b87..d9dc7f37a8 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -17955,8 +17955,8 @@ "type": "string", "x-order": 0 }, - "disabled": { - "description": "True if that check is disabled.", + "enabled": { + "description": "True if that check is enabled.", "type": "boolean", "x-order": 1 }, @@ -24141,10 +24141,6 @@ "type": "boolean", "x-order": 1 }, - "disable": { - "type": "boolean", - "x-order": 2 - }, "interval": { "description": "SecurityCheckInterval represents possible execution interval values for checks.", "type": "string", @@ -24155,7 +24151,7 @@ "SECURITY_CHECK_INTERVAL_FREQUENT", "SECURITY_CHECK_INTERVAL_RARE" ], - "x-order": 3 + "x-order": 2 } } }, @@ -24527,8 +24523,8 @@ "type": "string", "x-order": 0 }, - "disabled": { - "description": "True if that check is disabled.", + "enabled": { + "description": "True if that check is enabled.", "type": "boolean", "x-order": 1 }, diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index fce857612a..89fa1ee042 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -2425,8 +2425,8 @@ "type": "string", "x-order": 0 }, - "disabled": { - "description": "True if that check is disabled.", + "enabled": { + "description": "True if that check is enabled.", "type": "boolean", "x-order": 1 }, @@ -7241,10 +7241,6 @@ "type": "boolean", "x-order": 1 }, - "disable": { - "type": "boolean", - "x-order": 2 - }, "interval": { "description": "SecurityCheckInterval represents possible execution interval values for checks.", "type": "string", @@ -7255,7 +7251,7 @@ "SECURITY_CHECK_INTERVAL_FREQUENT", "SECURITY_CHECK_INTERVAL_RARE" ], - "x-order": 3 + "x-order": 2 } } }, @@ -7627,8 +7623,8 @@ "type": "string", "x-order": 0 }, - "disabled": { - "description": "True if that check is disabled.", + "enabled": { + "description": "True if that check is enabled.", "type": "boolean", "x-order": 1 }, diff --git a/descriptor.bin b/descriptor.bin index 6802aa7b58caa3c66382b6ce00cb37fa673e0544..2e5d966654dadac6ed3f8c6fb8322c6d70ceb973 100644 GIT binary patch delta 2826 zcmYM0eP~uy9LMkP-1D4!cAmXG=h>!vrrUMu=1Xd26h&EyVH9e!KnO*q&6i4-I?EPv zH6NUq3l;IY(8MVs3&AWJR7NipCKZ%ep?{P{z7z%tijh*^bMCp%{un&p-`n?dUhciS zc5cGpxd|JJRAfcJ$cvexct7Yr&#o;SJaj&2$k2`W(~H5_n&B$wSlPbl#g6BOvyjHg zxsZeZUJQDO_mQfP-@P8>r#bzo%IDZ4lo(Uw7)98BxOs)1b(t%uF6oZ8Xl$! zJ*!5KQA#l`H1G0WCj9ofKvkD)Nqz^~U&|U)7IQ^_1|v*Ep!quQwWJ|H!#de&8v-=E z>KcL|LPtq4Py5|$qID0LhqZOPwLyWiJKLD%FtEF+B~=*GJ$?ch7?(P;-rGQluSD5; z*{mJ_oHWxTHli>ooZY^nV@=p;jvy{qvNF~LL@ zTz%9!&aPf-v6sC4&PAhgFG+KGIoHNyAF<>Np)xpsXlchnqj(>c4*`JkyKh z+r$zCC=fxGyIQi@igYqwA;>nElVv=w#R2jTIifr&50ErR#d$t5Nd3e{+c|l=ZpdWa zkZ|dzY+af~Z$AxdOeI|UX;gB3^9Jx>3J8T($OI75W*s0TS`PxyJjaaJXmOalcN}32 zN)H=C^Y*MUfJfr*E98_(N7AiA5H&}rEN4j|G42S})T&vw1<8SUQl*?TbAXs|HHKh- zg345)Wq@+pUZz^jkCHdqUZz^q9VHp6=M@v47RSizjlZar%k?pmBh}N23lC7@II)l7 zX;pG=bex3UcoS!uAE)}ejfs&kIZhAFQ&oxNTD(X60}?8)%1oXgJN0pMDL7O$Nc=-o z1%O@*sp+` z6Pi!=u=u~6oF1JaVIL)!`yf3-jSo6BAEak!=8{x`^v5Am-;i3JF!&(-iTK$PsqaW# zaH#4W@n1@$1>cgoSeGTmqzlCUjL&MhCb~eP-Vt!{U7*4}sRZ8zdiYs)oOm^e--ur< z0dNQ4f(d}Bx;`sfRv3Sim-C{lLl-*(h^s>vI|GQTLl--P z@qZEjy9AMO5H6TNn5t{Uua_V)7Q%(vEQHYFCb5moFFYE?{WbE*=qBDIZs`ILH!0te zN2pAu#?Q;;9l1=Q<1&$bvVCbs&-^-xzp}ykb!vC~KL-kTzW@LL delta 2778 zcmYL~ZEO`q6o&WA&dyHv_O{%){i20-OQC$D^)p5dLPAJ1fS?J92{8x-iejM!5lgsK zE};aep@wXV0)}D;sS*jqYa&78XTStwZ0ZmEA*n$SQzIs5jT+yXoxS~WlYP&5&pFS` z&g?B*opt-_tlfFav%H(=Hy z3u%U2p><*Gy1$QTAnLy1x1_29(fXpc)Uaro>(-RH#^~F^=*kU$VWIA(AEkr+^8;Ub zj?>GcZtgckuYVy^(OdV5RN?nK{y(KN<^`O)jFh{aRn#_yPj_r<4cpd*TQ{uU8m`&U zy5{+?tusX5sDjHW<>f(X;Ay{$0+lT+;&O}YbyDqPVf5`Uel`kk`63$fW&b8+tR5pz zx$R6O3X|IXbfVCveL^Nk0m5TUxtm$mrWndL7t1u@X1^@Sp=@(T1v5+;L`QU1%I2Ia z@W`sI%SBB`O_(TcYnmDa0pmjPZO(SWv&#is+hlY6>?`*rR%dX8j{+@pfv@-uXJ=gC zqhN=eZVG%9ykZM{KZlBK!>)$rM4?I7%voSyTqolStB1 zRVUKbvNm38iQ;?6X$FAHOW@l>vdL^hp!i;LrkX^6#9oq(fMz_U#6EKNgA+A5o#3lguQhf+037NtEju_2M*>Y*v|_)^6WkW+8Qm%?{|WStqG zR^lKzugBwgRT{a2Bqy2iX+6G|SQuqK@Tzl|)=Md6+9L&LFJ z5?zl`mA;ZF&EXpJvgxEVzA?zw=@-d(R*4hjykm*7aGoHkUlr$B zO*BBP$+UsOx*_9rLt@AP;ggvTa-KG$c7Uqu6E~&|P-A>rvl{SZ0tkg#$QTgPWGx^h zN>3($6-t~U=Uod}0p}?VI2V8w8t^o+s;ECL=gh@ZyjzIFcA84!YYB;lr>UYcSYoP> z9E@(K<+8)Jn;gF zARCnEJb(Z4g(=10xa&jWAHkIgeBi>_Sa`|}fB8f^nl>l*( zs^%mT5Etper51t!@iFmFix6ZXY%qq$F3@k>-aFOh(_L=P=bB#zo;;**22Kxi{>v^t*7F#T)dSBi|xGTPv{>l@rtOc?HhbeQTNv1l$xhiUP;M1u7D zaZ*>4Y8~yo-=E$RgSf!`f%uO_5Z7?n&{o3%%LuVwqvJ|;=0-?NwEa1zk5KJ>iNy2~ zn*WS_S-AV+C*nUBH-g)Zu)%n~cHJO;t2m#V`8Kr5%=eTSCH5!wVM!Pr%F30w(eY#J z0b+Fg*m{5%9Y3}n+W$uUb`ip}5H=V?XxAUa?-U_C17SnU4TMl)jM%Hptz8gC>nr3F zxiNex?9v4w#wgpINI;BH%OblI0`31M{%;XNSO^=8A++m1;@!CQ@!b&y!iKgR2w#aj zV+R4TK8#u_<(7?kCTi_e9}sy~_dp^6k!K55SqLBP_cGpt_VESwErbom5Zbk$@z;tF UzJbu8eWg_rzmh^}RWKO+4}wBxO#lD@ diff --git a/managed/services/management/checks.go b/managed/services/management/checks.go index 7cce6077ad..f587b97888 100644 --- a/managed/services/management/checks.go +++ b/managed/services/management/checks.go @@ -239,7 +239,7 @@ func (s *ChecksAPIService) ListSecurityChecks(_ context.Context, _ *managementv1 _, disabled := m[c.Name] res = append(res, &managementv1.SecurityCheck{ Name: c.Name, - Disabled: disabled, + Enabled: !disabled, Summary: c.Summary, Family: convertFamily(c.GetFamily()), Description: c.Description, @@ -273,7 +273,7 @@ func (s *ChecksAPIService) ListAdvisors(_ context.Context, _ *managementv1.ListA _, disabled := m[c.Name] checks = append(checks, &managementv1.SecurityCheck{ Name: c.Name, - Disabled: disabled, + Enabled: !disabled, Summary: c.Summary, Family: convertFamily(c.GetFamily()), Description: c.Description, @@ -330,10 +330,6 @@ func (s *ChecksAPIService) ChangeSecurityChecks(_ context.Context, req *manageme var enableChecks, disableChecks []string changeIntervalParams := make(map[string]check.Interval) for _, check := range req.Params { - if check.Enable && check.Disable { - return nil, status.Errorf(codes.InvalidArgument, "Check %s has enable and disable parameters set to the true.", check.Name) - } - if check.Interval != managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_UNSPECIFIED { interval, err := convertAPIInterval(check.Interval) if err != nil { @@ -342,12 +338,12 @@ func (s *ChecksAPIService) ChangeSecurityChecks(_ context.Context, req *manageme changeIntervalParams[check.Name] = interval } - if check.Enable { - enableChecks = append(enableChecks, check.Name) - } - - if check.Disable { - disableChecks = append(disableChecks, check.Name) + if check.Enable != nil { + if *check.Enable { + enableChecks = append(enableChecks, check.Name) + } else { + disableChecks = append(disableChecks, check.Name) + } } } diff --git a/managed/services/management/checks_test.go b/managed/services/management/checks_test.go index 3591c97b80..8ea9b32f7d 100644 --- a/managed/services/management/checks_test.go +++ b/managed/services/management/checks_test.go @@ -382,10 +382,10 @@ func TestListSecurityChecks(t *testing.T) { assert.ElementsMatch(t, resp.Checks, []*managementv1.SecurityCheck{ - {Name: "one", Disabled: false, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_STANDARD}, - {Name: "two", Disabled: true, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_FREQUENT}, - {Name: "three", Disabled: false, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_RARE}, - {Name: "four", Disabled: false, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_STANDARD}, + {Name: "one", Enabled: true, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_STANDARD}, + {Name: "two", Enabled: false, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_FREQUENT}, + {Name: "three", Enabled: true, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_RARE}, + {Name: "four", Enabled: true, Interval: managementv1.SecurityCheckInterval_SECURITY_CHECK_INTERVAL_STANDARD}, }, ) }) From 85a838253b203efcbe461812a37d0f9c15a2edd6 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Thu, 21 Dec 2023 14:04:42 +0200 Subject: [PATCH 13/20] PMM-8019 Make role update params optional --- api/management/v1/role/role.pb.go | 294 +++++++++++---------- api/management/v1/role/role.pb.validate.go | 26 +- api/management/v1/role/role.proto | 6 +- descriptor.bin | Bin 699831 -> 699925 bytes managed/services/management/role.go | 12 +- managed/services/management/role_test.go | 24 +- 6 files changed, 192 insertions(+), 170 deletions(-) diff --git a/api/management/v1/role/role.pb.go b/api/management/v1/role/role.pb.go index af07cd47a9..17b529a248 100644 --- a/api/management/v1/role/role.pb.go +++ b/api/management/v1/role/role.pb.go @@ -139,10 +139,10 @@ type UpdateRoleRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RoleId uint32 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` - Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` - Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + RoleId uint32 `protobuf:"varint,1,opt,name=role_id,json=roleId,proto3" json:"role_id,omitempty"` + Title *string `protobuf:"bytes,2,opt,name=title,proto3,oneof" json:"title,omitempty"` + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` + Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"` } func (x *UpdateRoleRequest) Reset() { @@ -185,22 +185,22 @@ func (x *UpdateRoleRequest) GetRoleId() uint32 { } func (x *UpdateRoleRequest) GetTitle() string { - if x != nil { - return x.Title + if x != nil && x.Title != nil { + return *x.Title } return "" } func (x *UpdateRoleRequest) GetFilter() string { - if x != nil { - return x.Filter + if x != nil && x.Filter != nil { + return *x.Filter } return "" } func (x *UpdateRoleRequest) GetDescription() string { - if x != nil { - return x.Description + if x != nil && x.Description != nil { + return *x.Description } return "" } @@ -811,147 +811,150 @@ var file_management_v1_role_role_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x22, 0x2d, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, - 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, - 0x00, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x00, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, - 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, - 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, - 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x65, - 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, - 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, - 0x00, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x7a, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, - 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, - 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, - 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, - 0x22, 0x18, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x0a, 0x12, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x15, 0x0a, - 0x13, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, - 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, - 0x6f, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x73, - 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x6f, 0x6c, - 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x32, 0x9b, 0x09, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, - 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x92, 0x41, 0x22, 0x12, 0x0b, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, - 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x12, 0x1f, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x28, 0x12, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, - 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x2e, + 0x01, 0x48, 0x00, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0x0a, 0x11, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x06, 0x72, 0x6f, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x7a, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x15, 0x53, 0x65, 0x74, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x20, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x06, 0x72, 0x6f, + 0x6c, 0x65, 0x49, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, + 0x0a, 0x12, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, + 0x20, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x20, 0x00, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x22, 0x15, 0x0a, 0x13, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc8, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x1a, 0x73, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x17, + 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x9b, 0x09, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x92, 0x41, 0x22, 0x12, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x13, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x92, 0x41, 0x1e, 0x12, 0x0b, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x73, 0x20, 0x61, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, - 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, - 0x90, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1c, 0x2e, 0x72, 0x6f, - 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, 0x23, 0x12, 0x08, 0x47, - 0x65, 0x74, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x17, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, - 0x65, 0x73, 0x20, 0x61, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x62, 0x79, 0x20, 0x49, 0x44, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x47, - 0x65, 0x74, 0x12, 0x8e, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x12, 0x1e, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1f, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x40, 0x92, 0x41, 0x1a, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x1a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x2e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x92, 0x41, 0x45, 0x12, 0x0c, 0x41, - 0x73, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x35, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x73, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x55, 0x73, 0x65, - 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, - 0x2f, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0xc7, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x6f, 0x6c, - 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, - 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, 0x41, 0x3e, 0x12, 0x10, 0x53, 0x65, 0x74, 0x20, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x2a, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x73, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x20, 0x74, - 0x6f, 0x20, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x3a, 0x01, - 0x2a, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x42, 0xa9, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, - 0x6c, 0x65, 0x3b, 0x72, 0x6f, 0x6c, 0x65, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, - 0x03, 0x52, 0x58, 0x58, 0xaa, 0x02, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0xca, 0x02, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0xe2, 0x02, 0x18, 0x52, 0x6f, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0d, - 0x52, 0x6f, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x28, 0x12, 0x0b, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, + 0x6f, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, + 0x6c, 0x65, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x6f, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x92, 0x41, 0x1e, + 0x12, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x0f, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x12, 0x90, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x1c, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, + 0x23, 0x12, 0x08, 0x47, 0x65, 0x74, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x1a, 0x17, 0x52, 0x65, 0x74, + 0x72, 0x69, 0x65, 0x76, 0x65, 0x73, 0x20, 0x61, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x62, 0x79, + 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, + 0x6c, 0x65, 0x2f, 0x47, 0x65, 0x74, 0x12, 0x8e, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x1a, 0x12, 0x0a, 0x4c, 0x69, 0x73, 0x74, + 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x1a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x73, 0x20, 0x52, 0x6f, + 0x6c, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, + 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, + 0x6c, 0x65, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x6f, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, + 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x92, 0x41, + 0x45, 0x12, 0x0c, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x1a, + 0x35, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x73, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x72, + 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, + 0x20, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, + 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, + 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0xc7, 0x01, 0x0a, 0x0e, + 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x23, + 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, + 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, 0x92, 0x41, 0x3e, 0x12, 0x10, + 0x53, 0x65, 0x74, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x52, 0x6f, 0x6c, 0x65, + 0x1a, 0x2a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x73, 0x20, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x20, 0x52, 0x6f, 0x6c, 0x65, 0x20, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x23, 0x3a, 0x01, 0x2a, 0x22, 0x1e, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x6f, 0x6c, 0x65, 0x2f, 0x53, 0x65, 0x74, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0xa9, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x6f, + 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x09, 0x52, 0x6f, 0x6c, 0x65, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, + 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x3b, 0x72, 0x6f, 0x6c, 0x65, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x58, 0x58, 0xaa, 0x02, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x2e, + 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x0c, 0x52, 0x6f, 0x6c, 0x65, 0x5c, 0x56, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x18, 0x52, 0x6f, 0x6c, 0x65, 0x5c, 0x56, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x0d, 0x52, 0x6f, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1197,6 +1200,7 @@ func file_management_v1_role_role_proto_init() { } } } + file_management_v1_role_role_proto_msgTypes[2].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/management/v1/role/role.pb.validate.go b/api/management/v1/role/role.pb.validate.go index f802c0cc0d..fdac6442b6 100644 --- a/api/management/v1/role/role.pb.validate.go +++ b/api/management/v1/role/role.pb.validate.go @@ -289,20 +289,26 @@ func (m *UpdateRoleRequest) validate(all bool) error { errors = append(errors, err) } - if utf8.RuneCountInString(m.GetTitle()) < 1 { - err := UpdateRoleRequestValidationError{ - field: "Title", - reason: "value length must be at least 1 runes", - } - if !all { - return err + if m.Title != nil { + if utf8.RuneCountInString(m.GetTitle()) < 1 { + err := UpdateRoleRequestValidationError{ + field: "Title", + reason: "value length must be at least 1 runes", + } + if !all { + return err + } + errors = append(errors, err) } - errors = append(errors, err) } - // no validation rules for Filter + if m.Filter != nil { + // no validation rules for Filter + } - // no validation rules for Description + if m.Description != nil { + // no validation rules for Description + } if len(errors) > 0 { return UpdateRoleRequestMultiError(errors) diff --git a/api/management/v1/role/role.proto b/api/management/v1/role/role.proto index 67a565965b..a6f545ad3f 100644 --- a/api/management/v1/role/role.proto +++ b/api/management/v1/role/role.proto @@ -18,9 +18,9 @@ message CreateRoleResponse { message UpdateRoleRequest { uint32 role_id = 1 [(validate.rules).uint32.gt = 0]; - string title = 2 [(validate.rules).string.min_len = 1]; - string filter = 3; - string description = 4; + optional string title = 2 [(validate.rules).string.min_len = 1]; + optional string filter = 3; + optional string description = 4; } message UpdateRoleResponse {} diff --git a/descriptor.bin b/descriptor.bin index 2e5d966654dadac6ed3f8c6fb8322c6d70ceb973..08dc75b598cb3ef47a0e90df8ff4e7db4d7008be 100644 GIT binary patch delta 428 zcmYj~ze>YU6oiuJmA%6%Ho=<#{;xx>D^_X-4@x+ zb)an)5dS~YEHbf`Y(kMhBiZUA8=;+)pB?dJz_MRn_~M5xB5b3s0Wi(sdw_~`B5PL> zBXWF2oTwivGKmIf*hNuU%vaL}x(rXzLX9p2E)452P{eH_K#`f-RDde36R0Uw+;C7^ k2s{|qPn;}XW8q}+8VM(f=cpd9{*Cq@);&?Kd-%Tk17|EkXaE2J delta 276 zcmX|(KMnyw6o)f!cA57uSUbB&L@yGF#-Ag&fDJ1j6r!4OsG9crh4Q_F*U|iBm8;ltTgZ?9#M$`zAzYw v^D%JN{IkGWgH`|I?9@b!++#|hmH#Ar$={RgCFq;-w@jP6c^lolO}FD0AAKUH diff --git a/managed/services/management/role.go b/managed/services/management/role.go index e42379b031..8d71058b95 100644 --- a/managed/services/management/role.go +++ b/managed/services/management/role.go @@ -86,9 +86,15 @@ func (r *RoleService) UpdateRole(_ context.Context, req *rolev1beta1.UpdateRoleR return nil, err } - role.Title = req.Title - role.Description = req.Description - role.Filter = req.Filter + if req.Title != nil { + role.Title = *req.Title + } + if req.Description != nil { + role.Description = *req.Description + } + if req.Filter != nil { + role.Filter = *req.Filter + } if err := r.db.Update(&role); err != nil { return nil, err diff --git a/managed/services/management/role_test.go b/managed/services/management/role_test.go index 6c60d7c013..2db7886db7 100644 --- a/managed/services/management/role_test.go +++ b/managed/services/management/role_test.go @@ -19,6 +19,7 @@ import ( "context" "testing" + "github.com/AlekSi/pointer" "github.com/google/uuid" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -81,16 +82,21 @@ func TestRoleService(t *testing.T) { _, roleID := createDummyRoles(ctx, t, s) _, err := s.UpdateRole(ctx, &rolev1beta1.UpdateRoleRequest{ - RoleId: roleID, - Title: "Role B - updated", - Filter: "filter B - updated", + RoleId: roleID, + Title: pointer.ToString("Role B - updated"), + Filter: pointer.ToString(""), // Filter was reset. + Description: nil, // Description is not updated. }) require.NoError(t, err) roles, err := s.ListRoles(ctx, &rolev1beta1.ListRolesRequest{}) require.NoError(t, err) assert.Equal(t, roles.Roles[0].Title, "Role A") + assert.Equal(t, roles.Roles[0].Filter, "filter A") + assert.Equal(t, roles.Roles[0].Description, "Role A description") assert.Equal(t, roles.Roles[1].Title, "Role B - updated") + assert.Equal(t, roles.Roles[1].Filter, "") + assert.Equal(t, roles.Roles[1].Description, "Role B description") }) t.Run("Shall return not found", func(t *testing.T) { @@ -100,8 +106,6 @@ func TestRoleService(t *testing.T) { _, err := s.UpdateRole(ctx, &rolev1beta1.UpdateRoleRequest{ RoleId: 0, - Title: "", - Filter: "", }) tests.AssertGRPCErrorCode(t, codes.NotFound, err) }) @@ -258,14 +262,16 @@ func createDummyRoles(ctx context.Context, t *testing.T, s *RoleService) (uint32 t.Helper() rA, err := s.CreateRole(ctx, &rolev1beta1.CreateRoleRequest{ - Title: "Role A", - Filter: "filter A", + Title: "Role A", + Filter: "filter A", + Description: "Role A description", }) require.NoError(t, err) rB, err := s.CreateRole(ctx, &rolev1beta1.CreateRoleRequest{ - Title: "Role B", - Filter: "filter B", + Title: "Role B", + Filter: "filter B", + Description: "Role B description", }) require.NoError(t, err) From ea305e6c6150d5586214c9fd4e765e296a2068d9 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 26 Dec 2023 13:28:24 +0200 Subject: [PATCH 14/20] PMM-8019 Fix API tests --- api-tests/server/advisors_test.go | 9 ++-- api-tests/server/helpers.go | 6 +-- api-tests/server/platform_test.go | 3 +- api-tests/server/settings_test.go | 47 ++++++++++--------- api/common/common.pb.go | 2 +- .../change_service_responses.go | 8 ++-- api/inventory/v1/json/v1.json | 4 ++ .../change_security_checks_responses.go | 2 +- api/management/v1/json/v1.json | 1 + .../role_service/update_role_responses.go | 6 +-- api/management/v1/role/json/role.json | 3 ++ .../change_settings_responses.go | 18 +++---- api/server/v1/json/v1.json | 10 ++++ api/swagger/swagger-dev.json | 18 +++++++ api/swagger/swagger.json | 11 +++++ buf.gen.yaml | 1 + 16 files changed, 99 insertions(+), 50 deletions(-) diff --git a/api-tests/server/advisors_test.go b/api-tests/server/advisors_test.go index df246c114b..7d2f044e1a 100644 --- a/api-tests/server/advisors_test.go +++ b/api-tests/server/advisors_test.go @@ -138,9 +138,8 @@ func TestChangeSecurityChecks(t *testing.T) { Body: security_checks.ChangeSecurityChecksBody{ Params: []*security_checks.ChangeSecurityChecksParamsBodyParamsItems0{ { - Name: check.Name, - Disable: !check.Disabled, - Enable: check.Disabled, + Name: check.Name, + Enable: pointer.ToBool(!check.Enabled), }, }, }, @@ -156,7 +155,7 @@ func TestChangeSecurityChecks(t *testing.T) { for _, c := range resp.Payload.Checks { if c.Name == check.Name { - assert.Equal(t, !check.Disabled, c.Disabled) + assert.NotEqual(t, check.Enabled, c.Enabled) break } } @@ -248,7 +247,7 @@ func toggleAdvisorChecks(t *testing.T, enable bool) { res, err := serverClient.Default.ServerService.ChangeSettings(&server_service.ChangeSettingsParams{ Body: server_service.ChangeSettingsBody{ - EnableStt: enable, + EnableStt: pointer.ToBool(enable), }, Context: pmmapitests.Context, }) diff --git a/api-tests/server/helpers.go b/api-tests/server/helpers.go index 3f843ef0ca..15dbec8308 100644 --- a/api-tests/server/helpers.go +++ b/api-tests/server/helpers.go @@ -35,9 +35,9 @@ func restoreSettingsDefaults(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, - EnableTelemetry: true, - EnableAlerting: true, + EnableStt: pointer.ToBool(true), + EnableTelemetry: pointer.ToBool(true), + EnableAlerting: pointer.ToBool(true), MetricsResolutions: &server.ChangeSettingsParamsBodyMetricsResolutions{ Hr: "5s", Mr: "10s", diff --git a/api-tests/server/platform_test.go b/api-tests/server/platform_test.go index 48f215776c..5dc6df7919 100644 --- a/api-tests/server/platform_test.go +++ b/api-tests/server/platform_test.go @@ -20,6 +20,7 @@ import ( "os" "testing" + "github.com/AlekSi/pointer" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" @@ -56,7 +57,7 @@ func TestPlatform(t *testing.T) { // Set the PMM address to localhost. res, err := serverClient.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - PMMPublicAddress: "localhost", + PMMPublicAddress: pointer.ToString("localhost"), }, Context: pmmapitests.Context, }) diff --git a/api-tests/server/settings_test.go b/api-tests/server/settings_test.go index b9ac8e7ead..049c872991 100644 --- a/api-tests/server/settings_test.go +++ b/api-tests/server/settings_test.go @@ -24,6 +24,7 @@ import ( "net/url" "testing" + "github.com/AlekSi/pointer" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" @@ -64,7 +65,7 @@ func TestSettings(t *testing.T) { defer restoreSettingsDefaults(t) res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableUpdates: false, + EnableUpdates: pointer.ToBool(false), }, Context: pmmapitests.Context, }) @@ -77,7 +78,7 @@ func TestSettings(t *testing.T) { res, err = serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableUpdates: true, + EnableUpdates: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -95,7 +96,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableAlerting: false, + EnableAlerting: pointer.ToBool(false), }, Context: pmmapitests.Context, }) @@ -108,8 +109,8 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, - EnableTelemetry: true, + EnableStt: pointer.ToBool(true), + EnableTelemetry: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -128,8 +129,8 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, - EnableTelemetry: false, + EnableStt: pointer.ToBool(true), + EnableTelemetry: pointer.ToBool(false), }, Context: pmmapitests.Context, }) @@ -143,8 +144,8 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: false, - EnableTelemetry: true, + EnableStt: pointer.ToBool(false), + EnableTelemetry: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -163,8 +164,8 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: false, - EnableTelemetry: false, + EnableStt: pointer.ToBool(false), + EnableTelemetry: pointer.ToBool(false), }, Context: pmmapitests.Context, }) @@ -184,7 +185,7 @@ func TestSettings(t *testing.T) { // Ensure Telemetry is enabled res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableTelemetry: true, + EnableTelemetry: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -193,7 +194,7 @@ func TestSettings(t *testing.T) { res, err = serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, + EnableStt: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -211,7 +212,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: false, + EnableStt: pointer.ToBool(false), }, Context: pmmapitests.Context, }) @@ -229,7 +230,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, + EnableStt: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -245,7 +246,7 @@ func TestSettings(t *testing.T) { t.Run("EnableAdvisorsWhileItIsEnabled", func(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, + EnableStt: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -261,7 +262,7 @@ func TestSettings(t *testing.T) { t.Run("DisableTelemetryWhileAdvisorsEnabled", func(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableTelemetry: false, + EnableTelemetry: pointer.ToBool(false), }, Context: pmmapitests.Context, }) @@ -276,7 +277,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableTelemetry: false, + EnableTelemetry: pointer.ToBool(false), }, Context: pmmapitests.Context, }) @@ -294,7 +295,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableStt: true, + EnableStt: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -313,7 +314,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableTelemetry: true, + EnableTelemetry: pointer.ToBool(true), }, Context: pmmapitests.Context, }) @@ -499,7 +500,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - SSHKey: "some-invalid-ssh-key", + SSHKey: pointer.ToString("some-invalid-ssh-key"), }, Context: pmmapitests.Context, }) @@ -517,7 +518,7 @@ func TestSettings(t *testing.T) { "weTHzBE+lpXHdR2se1 qsandbox" res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - SSHKey: sshKey, + SSHKey: pointer.ToString(sshKey), }, Context: pmmapitests.Context, }) @@ -530,7 +531,7 @@ func TestSettings(t *testing.T) { res, err := serverClient.Default.ServerService.ChangeSettings(&server.ChangeSettingsParams{ Body: server.ChangeSettingsBody{ - EnableTelemetry: false, + EnableTelemetry: pointer.ToBool(false), MetricsResolutions: &server.ChangeSettingsParamsBodyMetricsResolutions{ Hr: "2s", Mr: "15s", diff --git a/api/common/common.pb.go b/api/common/common.pb.go index 6b790592ae..1b3c9cdbb3 100644 --- a/api/common/common.pb.go +++ b/api/common/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0-devel +// protoc-gen-go v1.32.0 // protoc (unknown) // source: common/common.proto diff --git a/api/inventory/v1/json/client/services_service/change_service_responses.go b/api/inventory/v1/json/client/services_service/change_service_responses.go index 3006c74ddd..fe7a1df30e 100644 --- a/api/inventory/v1/json/client/services_service/change_service_responses.go +++ b/api/inventory/v1/json/client/services_service/change_service_responses.go @@ -125,16 +125,16 @@ type ChangeServiceBody struct { ServiceID string `json:"service_id,omitempty"` // environment - Environment string `json:"environment,omitempty"` + Environment *string `json:"environment,omitempty"` // cluster - Cluster string `json:"cluster,omitempty"` + Cluster *string `json:"cluster,omitempty"` // replication set - ReplicationSet string `json:"replication_set,omitempty"` + ReplicationSet *string `json:"replication_set,omitempty"` // external group - ExternalGroup string `json:"external_group,omitempty"` + ExternalGroup *string `json:"external_group,omitempty"` } // Validate validates this change service body diff --git a/api/inventory/v1/json/v1.json b/api/inventory/v1/json/v1.json index 5ff8ae94cf..694e6b11f1 100644 --- a/api/inventory/v1/json/v1.json +++ b/api/inventory/v1/json/v1.json @@ -11419,18 +11419,22 @@ "properties": { "cluster": { "type": "string", + "x-nullable": true, "x-order": 2 }, "environment": { "type": "string", + "x-nullable": true, "x-order": 1 }, "external_group": { "type": "string", + "x-nullable": true, "x-order": 4 }, "replication_set": { "type": "string", + "x-nullable": true, "x-order": 3 }, "service_id": { diff --git a/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go b/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go index 2b333ce6f9..5a903a889b 100644 --- a/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go +++ b/api/management/v1/json/client/security_checks_service/change_security_checks_responses.go @@ -366,7 +366,7 @@ type ChangeSecurityChecksParamsBodyParamsItems0 struct { Name string `json:"name,omitempty"` // enable - Enable bool `json:"enable,omitempty"` + Enable *bool `json:"enable,omitempty"` // SecurityCheckInterval represents possible execution interval values for checks. // Enum: [SECURITY_CHECK_INTERVAL_UNSPECIFIED SECURITY_CHECK_INTERVAL_STANDARD SECURITY_CHECK_INTERVAL_FREQUENT SECURITY_CHECK_INTERVAL_RARE] diff --git a/api/management/v1/json/v1.json b/api/management/v1/json/v1.json index 59c2808833..00450ae260 100644 --- a/api/management/v1/json/v1.json +++ b/api/management/v1/json/v1.json @@ -6258,6 +6258,7 @@ "properties": { "enable": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "interval": { diff --git a/api/management/v1/role/json/client/role_service/update_role_responses.go b/api/management/v1/role/json/client/role_service/update_role_responses.go index ae260c6ff3..601c677e2b 100644 --- a/api/management/v1/role/json/client/role_service/update_role_responses.go +++ b/api/management/v1/role/json/client/role_service/update_role_responses.go @@ -125,13 +125,13 @@ type UpdateRoleBody struct { RoleID int64 `json:"role_id,omitempty"` // title - Title string `json:"title,omitempty"` + Title *string `json:"title,omitempty"` // filter - Filter string `json:"filter,omitempty"` + Filter *string `json:"filter,omitempty"` // description - Description string `json:"description,omitempty"` + Description *string `json:"description,omitempty"` } // Validate validates this update role body diff --git a/api/management/v1/role/json/role.json b/api/management/v1/role/json/role.json index 049d00883d..1e8b5d4709 100644 --- a/api/management/v1/role/json/role.json +++ b/api/management/v1/role/json/role.json @@ -497,10 +497,12 @@ "properties": { "description": { "type": "string", + "x-nullable": true, "x-order": 3 }, "filter": { "type": "string", + "x-nullable": true, "x-order": 2 }, "role_id": { @@ -510,6 +512,7 @@ }, "title": { "type": "string", + "x-nullable": true, "x-order": 1 } } diff --git a/api/server/v1/json/client/server_service/change_settings_responses.go b/api/server/v1/json/client/server_service/change_settings_responses.go index 246a8ed38b..866bcb8927 100644 --- a/api/server/v1/json/client/server_service/change_settings_responses.go +++ b/api/server/v1/json/client/server_service/change_settings_responses.go @@ -124,34 +124,34 @@ swagger:model ChangeSettingsBody */ type ChangeSettingsBody struct { // enable updates - EnableUpdates bool `json:"enable_updates,omitempty"` + EnableUpdates *bool `json:"enable_updates,omitempty"` // enable telemetry - EnableTelemetry bool `json:"enable_telemetry,omitempty"` + EnableTelemetry *bool `json:"enable_telemetry,omitempty"` // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. DataRetention string `json:"data_retention,omitempty"` // ssh key - SSHKey string `json:"ssh_key,omitempty"` + SSHKey *string `json:"ssh_key,omitempty"` // Enable Security Threat Tool. - EnableStt bool `json:"enable_stt,omitempty"` + EnableStt *bool `json:"enable_stt,omitempty"` // Enable Alerting. - EnableAlerting bool `json:"enable_alerting,omitempty"` + EnableAlerting *bool `json:"enable_alerting,omitempty"` // PMM Server public address. - PMMPublicAddress string `json:"pmm_public_address,omitempty"` + PMMPublicAddress *string `json:"pmm_public_address,omitempty"` // Enable Azure Discover. - EnableAzurediscover bool `json:"enable_azurediscover,omitempty"` + EnableAzurediscover *bool `json:"enable_azurediscover,omitempty"` // Enable Backup Management. - EnableBackupManagement bool `json:"enable_backup_management,omitempty"` + EnableBackupManagement *bool `json:"enable_backup_management,omitempty"` // Enable Access Control - EnableAccessControl bool `json:"enable_access_control,omitempty"` + EnableAccessControl *bool `json:"enable_access_control,omitempty"` // aws partitions AWSPartitions *ChangeSettingsParamsBodyAWSPartitions `json:"aws_partitions,omitempty"` diff --git a/api/server/v1/json/v1.json b/api/server/v1/json/v1.json index 7f927acfe1..9b1c181255 100644 --- a/api/server/v1/json/v1.json +++ b/api/server/v1/json/v1.json @@ -158,6 +158,7 @@ "x-order": 0 } }, + "x-nullable": true, "x-order": 5 }, "data_retention": { @@ -168,34 +169,41 @@ "enable_access_control": { "type": "boolean", "title": "Enable Access Control", + "x-nullable": true, "x-order": 12 }, "enable_alerting": { "description": "Enable Alerting.", "type": "boolean", + "x-nullable": true, "x-order": 7 }, "enable_azurediscover": { "description": "Enable Azure Discover.", "type": "boolean", + "x-nullable": true, "x-order": 10 }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", + "x-nullable": true, "x-order": 11 }, "enable_stt": { "description": "Enable Security Threat Tool.", "type": "boolean", + "x-nullable": true, "x-order": 6 }, "enable_telemetry": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "enable_updates": { "type": "boolean", + "x-nullable": true, "x-order": 0 }, "metrics_resolutions": { @@ -223,10 +231,12 @@ "pmm_public_address": { "description": "PMM Server public address.", "type": "string", + "x-nullable": true, "x-order": 8 }, "ssh_key": { "type": "string", + "x-nullable": true, "x-order": 4 }, "stt_check_intervals": { diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index d9dc7f37a8..123f198e3c 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -3000,10 +3000,12 @@ "properties": { "enable_updates": { "type": "boolean", + "x-nullable": true, "x-order": 0 }, "enable_telemetry": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "metrics_resolutions": { @@ -3035,6 +3037,7 @@ }, "ssh_key": { "type": "string", + "x-nullable": true, "x-order": 4 }, "aws_partitions": { @@ -3048,21 +3051,25 @@ "x-order": 0 } }, + "x-nullable": true, "x-order": 5 }, "enable_stt": { "description": "Enable Security Threat Tool.", "type": "boolean", + "x-nullable": true, "x-order": 6 }, "enable_alerting": { "description": "Enable Alerting.", "type": "boolean", + "x-nullable": true, "x-order": 7 }, "pmm_public_address": { "description": "PMM Server public address.", "type": "string", + "x-nullable": true, "x-order": 8 }, "stt_check_intervals": { @@ -3090,16 +3097,19 @@ "enable_azurediscover": { "description": "Enable Azure Discover.", "type": "boolean", + "x-nullable": true, "x-order": 10 }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", + "x-nullable": true, "x-order": 11 }, "enable_access_control": { "type": "boolean", "title": "Enable Access Control", + "x-nullable": true, "x-order": 12 } } @@ -15188,18 +15198,22 @@ }, "environment": { "type": "string", + "x-nullable": true, "x-order": 1 }, "cluster": { "type": "string", + "x-nullable": true, "x-order": 2 }, "replication_set": { "type": "string", + "x-nullable": true, "x-order": 3 }, "external_group": { "type": "string", + "x-nullable": true, "x-order": 4 } } @@ -24055,14 +24069,17 @@ }, "title": { "type": "string", + "x-nullable": true, "x-order": 1 }, "filter": { "type": "string", + "x-nullable": true, "x-order": 2 }, "description": { "type": "string", + "x-nullable": true, "x-order": 3 } } @@ -24139,6 +24156,7 @@ }, "enable": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "interval": { diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 89fa1ee042..8eb006f299 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -149,10 +149,12 @@ "properties": { "enable_updates": { "type": "boolean", + "x-nullable": true, "x-order": 0 }, "enable_telemetry": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "metrics_resolutions": { @@ -184,6 +186,7 @@ }, "ssh_key": { "type": "string", + "x-nullable": true, "x-order": 4 }, "aws_partitions": { @@ -197,21 +200,25 @@ "x-order": 0 } }, + "x-nullable": true, "x-order": 5 }, "enable_stt": { "description": "Enable Security Threat Tool.", "type": "boolean", + "x-nullable": true, "x-order": 6 }, "enable_alerting": { "description": "Enable Alerting.", "type": "boolean", + "x-nullable": true, "x-order": 7 }, "pmm_public_address": { "description": "PMM Server public address.", "type": "string", + "x-nullable": true, "x-order": 8 }, "stt_check_intervals": { @@ -239,16 +246,19 @@ "enable_azurediscover": { "description": "Enable Azure Discover.", "type": "boolean", + "x-nullable": true, "x-order": 10 }, "enable_backup_management": { "description": "Enable Backup Management.", "type": "boolean", + "x-nullable": true, "x-order": 11 }, "enable_access_control": { "type": "boolean", "title": "Enable Access Control", + "x-nullable": true, "x-order": 12 } } @@ -7239,6 +7249,7 @@ }, "enable": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "interval": { diff --git a/buf.gen.yaml b/buf.gen.yaml index 7e5c9548d2..14a735945a 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -40,3 +40,4 @@ plugins: opt: - simple_operation_ids=true - json_names_for_fields=false + - proto3_optional_nullable=true From 01b45c949a3c39d3d9d7e1ff002282cce808a3ad Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 26 Dec 2023 13:57:06 +0200 Subject: [PATCH 15/20] PMM-8019 Use optional fields for tour flags --- api/swagger/swagger-dev.json | 2 + api/swagger/swagger.json | 2 + .../user_service/update_user_responses.go | 4 +- api/user/v1/json/v1.json | 2 + api/user/v1/user.pb.go | 155 +++++++++--------- api/user/v1/user.pb.validate.go | 8 +- api/user/v1/user.proto | 4 +- descriptor.bin | Bin 699925 -> 700018 bytes managed/models/user_flags_helpers.go | 12 +- managed/services/user/user.go | 12 +- 10 files changed, 106 insertions(+), 95 deletions(-) diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 123f198e3c..b090fb4acd 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -29137,11 +29137,13 @@ "product_tour_completed": { "type": "boolean", "title": "Product Tour", + "x-nullable": true, "x-order": 0 }, "alerting_tour_completed": { "type": "boolean", "title": "Alerting Tour", + "x-nullable": true, "x-order": 1 } } diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 8eb006f299..1679b073f1 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -10923,11 +10923,13 @@ "product_tour_completed": { "type": "boolean", "title": "Product Tour", + "x-nullable": true, "x-order": 0 }, "alerting_tour_completed": { "type": "boolean", "title": "Alerting Tour", + "x-nullable": true, "x-order": 1 } } diff --git a/api/user/v1/json/client/user_service/update_user_responses.go b/api/user/v1/json/client/user_service/update_user_responses.go index 2aa321601d..f69a50c86c 100644 --- a/api/user/v1/json/client/user_service/update_user_responses.go +++ b/api/user/v1/json/client/user_service/update_user_responses.go @@ -124,10 +124,10 @@ swagger:model UpdateUserBody */ type UpdateUserBody struct { // Product Tour - ProductTourCompleted bool `json:"product_tour_completed,omitempty"` + ProductTourCompleted *bool `json:"product_tour_completed,omitempty"` // Alerting Tour - AlertingTourCompleted bool `json:"alerting_tour_completed,omitempty"` + AlertingTourCompleted *bool `json:"alerting_tour_completed,omitempty"` } // Validate validates this update user body diff --git a/api/user/v1/json/v1.json b/api/user/v1/json/v1.json index 908ec35c1e..e13d39325f 100644 --- a/api/user/v1/json/v1.json +++ b/api/user/v1/json/v1.json @@ -99,11 +99,13 @@ "alerting_tour_completed": { "type": "boolean", "title": "Alerting Tour", + "x-nullable": true, "x-order": 1 }, "product_tour_completed": { "type": "boolean", "title": "Product Tour", + "x-nullable": true, "x-order": 0 } } diff --git a/api/user/v1/user.pb.go b/api/user/v1/user.pb.go index 587c44173d..b1b068c22d 100644 --- a/api/user/v1/user.pb.go +++ b/api/user/v1/user.pb.go @@ -133,9 +133,9 @@ type UpdateUserRequest struct { unknownFields protoimpl.UnknownFields // Product Tour - ProductTourCompleted bool `protobuf:"varint,2,opt,name=product_tour_completed,json=productTourCompleted,proto3" json:"product_tour_completed,omitempty"` + ProductTourCompleted *bool `protobuf:"varint,2,opt,name=product_tour_completed,json=productTourCompleted,proto3,oneof" json:"product_tour_completed,omitempty"` // Alerting Tour - AlertingTourCompleted bool `protobuf:"varint,3,opt,name=alerting_tour_completed,json=alertingTourCompleted,proto3" json:"alerting_tour_completed,omitempty"` + AlertingTourCompleted *bool `protobuf:"varint,3,opt,name=alerting_tour_completed,json=alertingTourCompleted,proto3,oneof" json:"alerting_tour_completed,omitempty"` } func (x *UpdateUserRequest) Reset() { @@ -171,15 +171,15 @@ func (*UpdateUserRequest) Descriptor() ([]byte, []int) { } func (x *UpdateUserRequest) GetProductTourCompleted() bool { - if x != nil { - return x.ProductTourCompleted + if x != nil && x.ProductTourCompleted != nil { + return *x.ProductTourCompleted } return false } func (x *UpdateUserRequest) GetAlertingTourCompleted() bool { - if x != nil { - return x.AlertingTourCompleted + if x != nil && x.AlertingTourCompleted != nil { + return *x.AlertingTourCompleted } return false } @@ -411,76 +411,80 @@ var file_user_v1_user_proto_rawDesc = []byte{ 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x75, 0x72, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, - 0x65, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, - 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x9b, 0x01, 0x0a, - 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, - 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x72, - 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x75, - 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x92, - 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x1a, 0x40, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, - 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x65, - 0x49, 0x64, 0x73, 0x32, 0xe4, 0x03, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x4c, 0x92, 0x41, 0x39, 0x12, 0x10, 0x47, 0x65, 0x74, 0x20, 0x75, 0x73, 0x65, - 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x25, 0x52, 0x65, 0x74, 0x72, 0x69, - 0x65, 0x76, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, - 0x12, 0x96, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x92, 0x41, 0x39, 0x12, 0x0b, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x2a, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x67, 0x69, - 0x76, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x50, 0x4d, 0x4d, 0x20, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, 0x1a, - 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0xae, 0x01, 0x0a, 0x09, 0x4c, 0x69, - 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6a, - 0x92, 0x41, 0x52, 0x12, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, - 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, - 0x1a, 0x33, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0d, 0x2f, 0x76, 0x31, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x8f, 0x01, 0x92, 0x41, 0x0c, - 0x12, 0x0a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0b, 0x63, 0x6f, - 0x6d, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x76, - 0x31, 0xa2, 0x02, 0x03, 0x55, 0x58, 0x58, 0xaa, 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x13, 0x55, 0x73, - 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x08, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x14, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, + 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x17, 0x61, 0x6c, 0x65, + 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x15, 0x61, 0x6c, + 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, + 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, + 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x9b, 0x01, + 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, + 0x16, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, + 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, + 0x75, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x92, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x05, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x1a, 0x40, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, + 0x65, 0x49, 0x64, 0x73, 0x32, 0xe4, 0x03, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x17, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x75, 0x73, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x92, 0x41, 0x39, 0x12, 0x10, 0x47, 0x65, 0x74, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x25, 0x52, 0x65, 0x74, 0x72, + 0x69, 0x65, 0x76, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x12, 0x96, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x75, + 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x92, 0x41, 0x39, 0x12, 0x0b, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x1a, 0x2a, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x50, 0x4d, 0x4d, + 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x3a, 0x01, 0x2a, + 0x1a, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x12, 0xae, 0x01, 0x0a, 0x09, 0x4c, + 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x19, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x6a, 0x92, 0x41, 0x52, 0x12, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x1a, 0x33, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x4d, 0x4d, 0x20, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x22, 0x0d, 0x2f, 0x76, + 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x8f, 0x01, 0x92, 0x41, + 0x0c, 0x12, 0x0a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0b, 0x63, + 0x6f, 0x6d, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x75, 0x73, 0x65, 0x72, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x55, 0x58, 0x58, 0xaa, 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x07, 0x55, 0x73, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x13, 0x55, + 0x73, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x08, 0x55, 0x73, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -614,6 +618,7 @@ func file_user_v1_user_proto_init() { } } } + file_user_v1_user_proto_msgTypes[2].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/user/v1/user.pb.validate.go b/api/user/v1/user.pb.validate.go index e676962626..aacc93faf4 100644 --- a/api/user/v1/user.pb.validate.go +++ b/api/user/v1/user.pb.validate.go @@ -263,9 +263,13 @@ func (m *UpdateUserRequest) validate(all bool) error { var errors []error - // no validation rules for ProductTourCompleted + if m.ProductTourCompleted != nil { + // no validation rules for ProductTourCompleted + } - // no validation rules for AlertingTourCompleted + if m.AlertingTourCompleted != nil { + // no validation rules for AlertingTourCompleted + } if len(errors) > 0 { return UpdateUserRequestMultiError(errors) diff --git a/api/user/v1/user.proto b/api/user/v1/user.proto index fb6dfdddf5..87a3a9d2b5 100644 --- a/api/user/v1/user.proto +++ b/api/user/v1/user.proto @@ -22,9 +22,9 @@ message GetUserResponse { message UpdateUserRequest { // Product Tour - bool product_tour_completed = 2; + optional bool product_tour_completed = 2; // Alerting Tour - bool alerting_tour_completed = 3; + optional bool alerting_tour_completed = 3; } message UpdateUserResponse { diff --git a/descriptor.bin b/descriptor.bin index 08dc75b598cb3ef47a0e90df8ff4e7db4d7008be..c61b4b08a8f25a04203ae1c4cd74e1cd4e55fbb6 100644 GIT binary patch delta 310 zcmbPwN9)rat%erH7N!>F7M2#)7Pc1l7LFFqEnMM?nP!S@k6g?p$tZq^kxMYNASJOR zHMBUjC@8hCG_|-y$Z~q;5-vGe4~8I-f};GC(&Unm{L&)l{M>?^)RNSc4n{^H>*@QK zaLF@yFiyX>giBl*DC8u`B_0n|9$x}fAD;}<;3UN*5kLJPP~rBkOSl}EIX`i8u?ev- zF!)SwWMLQC9<+ihn2}L?`u`PNq7F<<3@k#-5=>lNJY1|SKprcQ$ITDpF#>r4YA_x% zkf*7|CBwx6R0))lV$zxZb|sgj0ni93xDkv%Bc$L)0A0^4C7=#9f)Qwhl$Q2(ja6K4 FnE}}&M^^v< delta 202 zcmex#M{DXGt%erH7N!>F7M2#)7Pc1l7LFFqEnMM?nf8cok6g?p$td2)$R!wBkdj!E z8d{uM6qH(6np#{UWHP;T376dTwxwMD+s&79*)wxqGmtR#0;327+8gvC79T_c(_ Date: Tue, 26 Dec 2023 14:32:13 +0200 Subject: [PATCH 16/20] PMM-8019 Use optionals instead of wrappers in API where it's possible --- api-tests/management/backup/backups_test.go | 8 +- api/buf.yaml | 3 + api/common/common.proto | 2 +- api/management/v1/backup/backups.pb.go | 504 ++++++++--------- .../v1/backup/backups.pb.validate.go | 190 +------ api/management/v1/backup/backups.proto | 13 +- api/management/v1/backup/json/backup.json | 6 + .../change_scheduled_backup_responses.go | 12 +- ...rch_organization_entitlements_responses.go | 12 +- api/platform/v1/json/v1.json | 6 + api/platform/v1/platform.pb.go | 535 +++++++++--------- api/platform/v1/platform.pb.validate.go | 190 +------ api/platform/v1/platform.proto | 13 +- api/server/v1/server.proto | 2 +- api/swagger/swagger-dev.json | 12 + api/swagger/swagger.json | 6 + descriptor.bin | Bin 700018 -> 700086 bytes .../management/backup/backups_service.go | 24 +- .../management/backup/backups_service_test.go | 21 +- managed/services/platform/platform.go | 13 +- 20 files changed, 638 insertions(+), 934 deletions(-) diff --git a/api-tests/management/backup/backups_test.go b/api-tests/management/backup/backups_test.go index 94cea5f064..560585c309 100644 --- a/api-tests/management/backup/backups_test.go +++ b/api-tests/management/backup/backups_test.go @@ -120,10 +120,10 @@ func TestScheduleBackup(t *testing.T) { body := backups.ChangeScheduledBackupBody{ ScheduledBackupID: backupRes.Payload.ScheduledBackupID, - Enabled: true, - CronExpression: "0 2 2 2 2", - Name: "test2", - Description: "test2", + Enabled: pointer.ToBool(true), + CronExpression: pointer.ToString("0 2 2 2 2"), + Name: pointer.ToString("test2"), + Description: pointer.ToString("test2"), } changeRes, err := client.ChangeScheduledBackup(&backups.ChangeScheduledBackupParams{ Body: body, diff --git a/api/buf.yaml b/api/buf.yaml index 972cdf7977..064a98fa29 100644 --- a/api/buf.yaml +++ b/api/buf.yaml @@ -25,6 +25,9 @@ lint: - management/v1/node/node.proto - management/v1/role/role.proto - management/v1/service/service.proto + PACKAGE_VERSION_SUFFIX: + - common/common.proto + deps: - buf.build/googleapis/googleapis diff --git a/api/common/common.proto b/api/common/common.proto index be48660f43..a2d3c71cd8 100644 --- a/api/common/common.proto +++ b/api/common/common.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package common.v1; +package common; message StringArray { repeated string values = 1; diff --git a/api/management/v1/backup/backups.pb.go b/api/management/v1/backup/backups.pb.go index fea1aebc9c..8559e5d239 100644 --- a/api/management/v1/backup/backups.pb.go +++ b/api/management/v1/backup/backups.pb.go @@ -17,7 +17,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + _ "google.golang.org/protobuf/types/known/wrapperspb" v1 "github.com/percona/pmm/api/inventory/v1" ) @@ -909,22 +909,22 @@ type ChangeScheduledBackupRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ScheduledBackupId string `protobuf:"bytes,1,opt,name=scheduled_backup_id,json=scheduledBackupId,proto3" json:"scheduled_backup_id,omitempty"` - Enabled *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + ScheduledBackupId string `protobuf:"bytes,1,opt,name=scheduled_backup_id,json=scheduledBackupId,proto3" json:"scheduled_backup_id,omitempty"` + Enabled *bool `protobuf:"varint,2,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"` // How often backup should be run in cron format. - CronExpression *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=cron_expression,json=cronExpression,proto3" json:"cron_expression,omitempty"` + CronExpression *string `protobuf:"bytes,3,opt,name=cron_expression,json=cronExpression,proto3,oneof" json:"cron_expression,omitempty"` // First backup wouldn't happen before this time. StartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // Name of backup. - Name *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Name *string `protobuf:"bytes,5,opt,name=name,proto3,oneof" json:"name,omitempty"` // Human-readable description. - Description *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` + Description *string `protobuf:"bytes,6,opt,name=description,proto3,oneof" json:"description,omitempty"` // Delay between each retry. Should have a suffix in JSON: 1s, 1m, 1h. RetryInterval *durationpb.Duration `protobuf:"bytes,7,opt,name=retry_interval,json=retryInterval,proto3" json:"retry_interval,omitempty"` // How many times to retry a failed backup before giving up. - Retries *wrapperspb.UInt32Value `protobuf:"bytes,8,opt,name=retries,proto3" json:"retries,omitempty"` + Retries *uint32 `protobuf:"varint,8,opt,name=retries,proto3,oneof" json:"retries,omitempty"` // How many artifacts keep. 0 - unlimited. - Retention *wrapperspb.UInt32Value `protobuf:"bytes,9,opt,name=retention,proto3" json:"retention,omitempty"` + Retention *uint32 `protobuf:"varint,9,opt,name=retention,proto3,oneof" json:"retention,omitempty"` } func (x *ChangeScheduledBackupRequest) Reset() { @@ -966,18 +966,18 @@ func (x *ChangeScheduledBackupRequest) GetScheduledBackupId() string { return "" } -func (x *ChangeScheduledBackupRequest) GetEnabled() *wrapperspb.BoolValue { - if x != nil { - return x.Enabled +func (x *ChangeScheduledBackupRequest) GetEnabled() bool { + if x != nil && x.Enabled != nil { + return *x.Enabled } - return nil + return false } -func (x *ChangeScheduledBackupRequest) GetCronExpression() *wrapperspb.StringValue { - if x != nil { - return x.CronExpression +func (x *ChangeScheduledBackupRequest) GetCronExpression() string { + if x != nil && x.CronExpression != nil { + return *x.CronExpression } - return nil + return "" } func (x *ChangeScheduledBackupRequest) GetStartTime() *timestamppb.Timestamp { @@ -987,18 +987,18 @@ func (x *ChangeScheduledBackupRequest) GetStartTime() *timestamppb.Timestamp { return nil } -func (x *ChangeScheduledBackupRequest) GetName() *wrapperspb.StringValue { - if x != nil { - return x.Name +func (x *ChangeScheduledBackupRequest) GetName() string { + if x != nil && x.Name != nil { + return *x.Name } - return nil + return "" } -func (x *ChangeScheduledBackupRequest) GetDescription() *wrapperspb.StringValue { - if x != nil { - return x.Description +func (x *ChangeScheduledBackupRequest) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description } - return nil + return "" } func (x *ChangeScheduledBackupRequest) GetRetryInterval() *durationpb.Duration { @@ -1008,18 +1008,18 @@ func (x *ChangeScheduledBackupRequest) GetRetryInterval() *durationpb.Duration { return nil } -func (x *ChangeScheduledBackupRequest) GetRetries() *wrapperspb.UInt32Value { - if x != nil { - return x.Retries +func (x *ChangeScheduledBackupRequest) GetRetries() uint32 { + if x != nil && x.Retries != nil { + return *x.Retries } - return nil + return 0 } -func (x *ChangeScheduledBackupRequest) GetRetention() *wrapperspb.UInt32Value { - if x != nil { - return x.Retention +func (x *ChangeScheduledBackupRequest) GetRetention() uint32 { + if x != nil && x.Retention != nil { + return *x.Retention } - return nil + return 0 } type ChangeScheduledBackupResponse struct { @@ -1496,211 +1496,207 @@ var file_management_v1_backup_backups_proto_rawDesc = []byte{ 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x22, 0xb7, 0x04, 0x0a, 0x1c, 0x43, + 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x22, 0xf6, 0x03, 0x0a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x13, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0f, 0x63, 0x72, - 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0e, 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x75, 0x70, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0e, + 0x63, 0x72, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, - 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x07, 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, 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x65, - 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, - 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1f, 0x0a, 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x13, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x22, 0x1f, - 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x7e, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x22, - 0x4c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, - 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, - 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x39, 0x0a, - 0x08, 0x4c, 0x6f, 0x67, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x75, - 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x68, 0x75, - 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xb7, 0x10, 0x0a, 0x0e, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe9, 0x03, 0x0a, 0x0b, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x1d, 0x2e, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x61, 0x63, + 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0e, + 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x07, + 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, + 0x0d, 0x72, 0x65, 0x74, 0x72, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1d, + 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x04, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, + 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, + 0x48, 0x05, 0x52, 0x09, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x63, 0x72, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x1f, 0x0a, 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x13, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x64, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x11, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x49, 0x64, 0x22, 0x1f, 0x0a, + 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7e, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x22, 0x4c, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x27, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x43, + 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x39, 0x0a, 0x08, + 0x4c, 0x6f, 0x67, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xb7, 0x10, 0x0a, 0x0e, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe9, 0x03, 0x0a, 0x0b, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x1d, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x03, 0x92, 0x41, 0xe8, - 0x02, 0x1a, 0xe5, 0x02, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x70, 0x65, - 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x20, - 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3a, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x20, 0x2d, - 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x58, - 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, 0x20, 0x64, 0x69, 0x66, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, - 0x66, 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x78, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, 0x4c, 0x45, - 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, 0x20, 0x78, 0x74, - 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, - 0x20, 0x61, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, - 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xce, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, - 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9a, 0x03, 0x92, 0x41, 0xe8, 0x02, + 0x1a, 0xe5, 0x02, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x69, 0x63, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x69, + 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3a, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x5f, + 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x20, 0x2d, 0x20, + 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x58, 0x54, + 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x66, + 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x78, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, 0x4c, 0x45, 0x5f, + 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, 0x20, 0x78, 0x74, 0x72, + 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x4d, + 0x79, 0x53, 0x51, 0x4c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, + 0x61, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, + 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, + 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xce, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, + 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xf8, 0x04, 0x0a, 0x0d, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x1f, 0x2e, 0x62, 0x61, 0x63, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xf8, 0x04, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x1f, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x04, - 0x92, 0x41, 0xef, 0x03, 0x1a, 0xec, 0x03, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x72, 0x65, 0x74, - 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, - 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, - 0x64, 0x65, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x61, - 0x69, 0x6c, 0x75, 0x72, 0x65, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3a, 0x0a, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, - 0x4b, 0x55, 0x50, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, - 0x44, 0x20, 0x2d, 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, - 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, - 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, 0x20, 0x64, - 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x20, 0x6f, 0x66, 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x78, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x0a, 0x45, 0x52, 0x52, 0x4f, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x04, 0x92, + 0x41, 0xef, 0x03, 0x1a, 0xec, 0x03, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, + 0x65, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x3a, 0x0a, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, + 0x55, 0x50, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, + 0x20, 0x2d, 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, 0x73, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x6f, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x0a, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, 0x20, 0x64, 0x69, + 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x20, 0x6f, 0x66, 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x78, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, + 0x4c, 0x45, 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, 0x20, + 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, + 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x0a, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, - 0x42, 0x4c, 0x45, 0x5f, 0x58, 0x54, 0x52, 0x41, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x20, 0x2d, - 0x20, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x20, 0x69, 0x73, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, - 0x74, 0x68, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x0a, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, - 0x49, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x59, 0x53, 0x51, - 0x4c, 0x20, 0x2d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, - 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, - 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x20, 0x66, 0x6f, 0x72, - 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, - 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x52, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x9f, - 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, - 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, - 0x12, 0xa4, 0x01, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x27, 0x2e, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0xa4, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x12, 0x27, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, - 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x72, - 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, + 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, + 0x20, 0x2d, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x4c, 0x6f, - 0x67, 0x73, 0x42, 0x9c, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x3b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x42, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x09, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x52, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x0e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x9f, 0x01, + 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x26, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, + 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x73, 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, + 0xa4, 0x01, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x27, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0xa4, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x12, 0x27, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x3a, 0x01, 0x2a, 0x22, 0x2d, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x12, 0x72, 0x0a, + 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x2f, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, + 0x73, 0x42, 0x9c, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x3b, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x42, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x09, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x15, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1742,9 +1738,6 @@ var ( (*v1.MongoDBService)(nil), // 21: inventory.v1.MongoDBService (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp (BackupMode)(0), // 23: backup.v1.BackupMode - (*wrapperspb.BoolValue)(nil), // 24: google.protobuf.BoolValue - (*wrapperspb.StringValue)(nil), // 25: google.protobuf.StringValue - (*wrapperspb.UInt32Value)(nil), // 26: google.protobuf.UInt32Value } ) @@ -1765,36 +1758,30 @@ var file_management_v1_backup_backups_proto_depIdxs = []int32{ 23, // 13: backup.v1.ScheduleBackupRequest.mode:type_name -> backup.v1.BackupMode 19, // 14: backup.v1.ScheduleBackupRequest.data_model:type_name -> backup.v1.DataModel 6, // 15: backup.v1.ListScheduledBackupsResponse.scheduled_backups:type_name -> backup.v1.ScheduledBackup - 24, // 16: backup.v1.ChangeScheduledBackupRequest.enabled:type_name -> google.protobuf.BoolValue - 25, // 17: backup.v1.ChangeScheduledBackupRequest.cron_expression:type_name -> google.protobuf.StringValue - 22, // 18: backup.v1.ChangeScheduledBackupRequest.start_time:type_name -> google.protobuf.Timestamp - 25, // 19: backup.v1.ChangeScheduledBackupRequest.name:type_name -> google.protobuf.StringValue - 25, // 20: backup.v1.ChangeScheduledBackupRequest.description:type_name -> google.protobuf.StringValue - 18, // 21: backup.v1.ChangeScheduledBackupRequest.retry_interval:type_name -> google.protobuf.Duration - 26, // 22: backup.v1.ChangeScheduledBackupRequest.retries:type_name -> google.protobuf.UInt32Value - 26, // 23: backup.v1.ChangeScheduledBackupRequest.retention:type_name -> google.protobuf.UInt32Value - 17, // 24: backup.v1.GetLogsResponse.logs:type_name -> backup.v1.LogChunk - 0, // 25: backup.v1.BackupsService.StartBackup:input_type -> backup.v1.StartBackupRequest - 2, // 26: backup.v1.BackupsService.ListArtifactCompatibleServices:input_type -> backup.v1.ListArtifactCompatibleServicesRequest - 4, // 27: backup.v1.BackupsService.RestoreBackup:input_type -> backup.v1.RestoreBackupRequest - 7, // 28: backup.v1.BackupsService.ScheduleBackup:input_type -> backup.v1.ScheduleBackupRequest - 9, // 29: backup.v1.BackupsService.ListScheduledBackups:input_type -> backup.v1.ListScheduledBackupsRequest - 11, // 30: backup.v1.BackupsService.ChangeScheduledBackup:input_type -> backup.v1.ChangeScheduledBackupRequest - 13, // 31: backup.v1.BackupsService.RemoveScheduledBackup:input_type -> backup.v1.RemoveScheduledBackupRequest - 15, // 32: backup.v1.BackupsService.GetLogs:input_type -> backup.v1.GetLogsRequest - 1, // 33: backup.v1.BackupsService.StartBackup:output_type -> backup.v1.StartBackupResponse - 3, // 34: backup.v1.BackupsService.ListArtifactCompatibleServices:output_type -> backup.v1.ListArtifactCompatibleServicesResponse - 5, // 35: backup.v1.BackupsService.RestoreBackup:output_type -> backup.v1.RestoreBackupResponse - 8, // 36: backup.v1.BackupsService.ScheduleBackup:output_type -> backup.v1.ScheduleBackupResponse - 10, // 37: backup.v1.BackupsService.ListScheduledBackups:output_type -> backup.v1.ListScheduledBackupsResponse - 12, // 38: backup.v1.BackupsService.ChangeScheduledBackup:output_type -> backup.v1.ChangeScheduledBackupResponse - 14, // 39: backup.v1.BackupsService.RemoveScheduledBackup:output_type -> backup.v1.RemoveScheduledBackupResponse - 16, // 40: backup.v1.BackupsService.GetLogs:output_type -> backup.v1.GetLogsResponse - 33, // [33:41] is the sub-list for method output_type - 25, // [25:33] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 22, // 16: backup.v1.ChangeScheduledBackupRequest.start_time:type_name -> google.protobuf.Timestamp + 18, // 17: backup.v1.ChangeScheduledBackupRequest.retry_interval:type_name -> google.protobuf.Duration + 17, // 18: backup.v1.GetLogsResponse.logs:type_name -> backup.v1.LogChunk + 0, // 19: backup.v1.BackupsService.StartBackup:input_type -> backup.v1.StartBackupRequest + 2, // 20: backup.v1.BackupsService.ListArtifactCompatibleServices:input_type -> backup.v1.ListArtifactCompatibleServicesRequest + 4, // 21: backup.v1.BackupsService.RestoreBackup:input_type -> backup.v1.RestoreBackupRequest + 7, // 22: backup.v1.BackupsService.ScheduleBackup:input_type -> backup.v1.ScheduleBackupRequest + 9, // 23: backup.v1.BackupsService.ListScheduledBackups:input_type -> backup.v1.ListScheduledBackupsRequest + 11, // 24: backup.v1.BackupsService.ChangeScheduledBackup:input_type -> backup.v1.ChangeScheduledBackupRequest + 13, // 25: backup.v1.BackupsService.RemoveScheduledBackup:input_type -> backup.v1.RemoveScheduledBackupRequest + 15, // 26: backup.v1.BackupsService.GetLogs:input_type -> backup.v1.GetLogsRequest + 1, // 27: backup.v1.BackupsService.StartBackup:output_type -> backup.v1.StartBackupResponse + 3, // 28: backup.v1.BackupsService.ListArtifactCompatibleServices:output_type -> backup.v1.ListArtifactCompatibleServicesResponse + 5, // 29: backup.v1.BackupsService.RestoreBackup:output_type -> backup.v1.RestoreBackupResponse + 8, // 30: backup.v1.BackupsService.ScheduleBackup:output_type -> backup.v1.ScheduleBackupResponse + 10, // 31: backup.v1.BackupsService.ListScheduledBackups:output_type -> backup.v1.ListScheduledBackupsResponse + 12, // 32: backup.v1.BackupsService.ChangeScheduledBackup:output_type -> backup.v1.ChangeScheduledBackupResponse + 14, // 33: backup.v1.BackupsService.RemoveScheduledBackup:output_type -> backup.v1.RemoveScheduledBackupResponse + 16, // 34: backup.v1.BackupsService.GetLogs:output_type -> backup.v1.GetLogsResponse + 27, // [27:35] is the sub-list for method output_type + 19, // [19:27] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_management_v1_backup_backups_proto_init() } @@ -2021,6 +2008,7 @@ func file_management_v1_backup_backups_proto_init() { } } } + file_management_v1_backup_backups_proto_msgTypes[11].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/management/v1/backup/backups.pb.validate.go b/api/management/v1/backup/backups.pb.validate.go index 329152a321..dd2835e656 100644 --- a/api/management/v1/backup/backups.pb.validate.go +++ b/api/management/v1/backup/backups.pb.validate.go @@ -1681,64 +1681,6 @@ func (m *ChangeScheduledBackupRequest) validate(all bool) error { errors = append(errors, err) } - if all { - switch v := interface{}(m.GetEnabled()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Enabled", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Enabled", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetEnabled()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChangeScheduledBackupRequestValidationError{ - field: "Enabled", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetCronExpression()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "CronExpression", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "CronExpression", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetCronExpression()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChangeScheduledBackupRequestValidationError{ - field: "CronExpression", - reason: "embedded message failed validation", - cause: err, - } - } - } - if all { switch v := interface{}(m.GetStartTime()).(type) { case interface{ ValidateAll() error }: @@ -1768,64 +1710,6 @@ func (m *ChangeScheduledBackupRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetName()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetName()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChangeScheduledBackupRequestValidationError{ - field: "Name", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetDescription()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Description", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Description", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChangeScheduledBackupRequestValidationError{ - field: "Description", - reason: "embedded message failed validation", - cause: err, - } - } - } - if all { switch v := interface{}(m.GetRetryInterval()).(type) { case interface{ ValidateAll() error }: @@ -1855,62 +1739,28 @@ func (m *ChangeScheduledBackupRequest) validate(all bool) error { } } - if all { - switch v := interface{}(m.GetRetries()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Retries", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Retries", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRetries()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChangeScheduledBackupRequestValidationError{ - field: "Retries", - reason: "embedded message failed validation", - cause: err, - } - } + if m.Enabled != nil { + // no validation rules for Enabled } - if all { - switch v := interface{}(m.GetRetention()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Retention", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ChangeScheduledBackupRequestValidationError{ - field: "Retention", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetRetention()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ChangeScheduledBackupRequestValidationError{ - field: "Retention", - reason: "embedded message failed validation", - cause: err, - } - } + if m.CronExpression != nil { + // no validation rules for CronExpression + } + + if m.Name != nil { + // no validation rules for Name + } + + if m.Description != nil { + // no validation rules for Description + } + + if m.Retries != nil { + // no validation rules for Retries + } + + if m.Retention != nil { + // no validation rules for Retention } if len(errors) > 0 { diff --git a/api/management/v1/backup/backups.proto b/api/management/v1/backup/backups.proto index e718d4a778..75f71aeae9 100644 --- a/api/management/v1/backup/backups.proto +++ b/api/management/v1/backup/backups.proto @@ -5,7 +5,6 @@ package backup.v1; import "google/api/annotations.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; import "inventory/v1/services.proto"; import "management/v1/backup/common.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; @@ -142,21 +141,21 @@ message ListScheduledBackupsResponse { message ChangeScheduledBackupRequest { string scheduled_backup_id = 1 [(validate.rules).string.min_len = 1]; - google.protobuf.BoolValue enabled = 2; + optional bool enabled = 2; // How often backup should be run in cron format. - google.protobuf.StringValue cron_expression = 3; + optional string cron_expression = 3; // First backup wouldn't happen before this time. google.protobuf.Timestamp start_time = 4; // Name of backup. - google.protobuf.StringValue name = 5; + optional string name = 5; // Human-readable description. - google.protobuf.StringValue description = 6; + optional string description = 6; // Delay between each retry. Should have a suffix in JSON: 1s, 1m, 1h. google.protobuf.Duration retry_interval = 7; // How many times to retry a failed backup before giving up. - google.protobuf.UInt32Value retries = 8; + optional uint32 retries = 8; // How many artifacts keep. 0 - unlimited. - google.protobuf.UInt32Value retention = 9; + optional uint32 retention = 9; } message ChangeScheduledBackupResponse {} diff --git a/api/management/v1/backup/json/backup.json b/api/management/v1/backup/json/backup.json index 7e7e3f96c4..002d660b69 100644 --- a/api/management/v1/backup/json/backup.json +++ b/api/management/v1/backup/json/backup.json @@ -400,32 +400,38 @@ "cron_expression": { "description": "How often backup should be run in cron format.", "type": "string", + "x-nullable": true, "x-order": 2 }, "description": { "description": "Human-readable description.", "type": "string", + "x-nullable": true, "x-order": 5 }, "enabled": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "name": { "description": "Name of backup.", "type": "string", + "x-nullable": true, "x-order": 4 }, "retention": { "description": "How many artifacts keep. 0 - unlimited.", "type": "integer", "format": "int64", + "x-nullable": true, "x-order": 8 }, "retries": { "description": "How many times to retry a failed backup before giving up.", "type": "integer", "format": "int64", + "x-nullable": true, "x-order": 7 }, "retry_interval": { diff --git a/api/management/v1/backup/json/client/backups_service/change_scheduled_backup_responses.go b/api/management/v1/backup/json/client/backups_service/change_scheduled_backup_responses.go index a8d239f5ab..f40496960d 100644 --- a/api/management/v1/backup/json/client/backups_service/change_scheduled_backup_responses.go +++ b/api/management/v1/backup/json/client/backups_service/change_scheduled_backup_responses.go @@ -126,29 +126,29 @@ type ChangeScheduledBackupBody struct { ScheduledBackupID string `json:"scheduled_backup_id,omitempty"` // enabled - Enabled bool `json:"enabled,omitempty"` + Enabled *bool `json:"enabled,omitempty"` // How often backup should be run in cron format. - CronExpression string `json:"cron_expression,omitempty"` + CronExpression *string `json:"cron_expression,omitempty"` // First backup wouldn't happen before this time. // Format: date-time StartTime strfmt.DateTime `json:"start_time,omitempty"` // Name of backup. - Name string `json:"name,omitempty"` + Name *string `json:"name,omitempty"` // Human-readable description. - Description string `json:"description,omitempty"` + Description *string `json:"description,omitempty"` // Delay between each retry. Should have a suffix in JSON: 1s, 1m, 1h. RetryInterval string `json:"retry_interval,omitempty"` // How many times to retry a failed backup before giving up. - Retries int64 `json:"retries,omitempty"` + Retries *int64 `json:"retries,omitempty"` // How many artifacts keep. 0 - unlimited. - Retention int64 `json:"retention,omitempty"` + Retention *int64 `json:"retention,omitempty"` } // Validate validates this change scheduled backup body diff --git a/api/platform/v1/json/client/platform_service/search_organization_entitlements_responses.go b/api/platform/v1/json/client/platform_service/search_organization_entitlements_responses.go index 38839fe40c..7903f50fb0 100644 --- a/api/platform/v1/json/client/platform_service/search_organization_entitlements_responses.go +++ b/api/platform/v1/json/client/platform_service/search_organization_entitlements_responses.go @@ -373,16 +373,16 @@ type SearchOrganizationEntitlementsOKBodyEntitlementsItems0 struct { Summary string `json:"summary,omitempty"` // Entitlement tier. - Tier string `json:"tier,omitempty"` + Tier *string `json:"tier,omitempty"` // Total units covered by this entitlement. - TotalUnits string `json:"total_units,omitempty"` + TotalUnits *string `json:"total_units,omitempty"` // Flag indicates that unlimited units are covered. - UnlimitedUnits bool `json:"unlimited_units,omitempty"` + UnlimitedUnits *bool `json:"unlimited_units,omitempty"` // Support level covered by this entitlement. - SupportLevel string `json:"support_level,omitempty"` + SupportLevel *string `json:"support_level,omitempty"` // Percona product families covered by this entitlement. SoftwareFamilies []string `json:"software_families"` @@ -519,10 +519,10 @@ swagger:model SearchOrganizationEntitlementsOKBodyEntitlementsItems0Platform */ type SearchOrganizationEntitlementsOKBodyEntitlementsItems0Platform struct { // Flag indicates that security advisors are covered by this entitlement. - SecurityAdvisor string `json:"security_advisor,omitempty"` + SecurityAdvisor *string `json:"security_advisor,omitempty"` // Flag indicates that config advisors are covered by this entitlement. - ConfigAdvisor string `json:"config_advisor,omitempty"` + ConfigAdvisor *string `json:"config_advisor,omitempty"` } // Validate validates this search organization entitlements OK body entitlements items0 platform diff --git a/api/platform/v1/json/v1.json b/api/platform/v1/json/v1.json index 31e82c2408..9249c820e1 100644 --- a/api/platform/v1/json/v1.json +++ b/api/platform/v1/json/v1.json @@ -296,11 +296,13 @@ "config_advisor": { "description": "Flag indicates that config advisors are covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 1 }, "security_advisor": { "description": "Flag indicates that security advisors are covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 0 } }, @@ -328,21 +330,25 @@ "support_level": { "description": "Support level covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 6 }, "tier": { "description": "Entitlement tier.", "type": "string", + "x-nullable": true, "x-order": 3 }, "total_units": { "description": "Total units covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 4 }, "unlimited_units": { "description": "Flag indicates that unlimited units are covered.", "type": "boolean", + "x-nullable": true, "x-order": 5 } } diff --git a/api/platform/v1/platform.pb.go b/api/platform/v1/platform.pb.go index 64e28527ff..b646d2ff4e 100644 --- a/api/platform/v1/platform.pb.go +++ b/api/platform/v1/platform.pb.go @@ -16,7 +16,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -536,13 +536,13 @@ type OrganizationEntitlement struct { // Entitlement short summary. Summary string `protobuf:"bytes,3,opt,name=summary,proto3" json:"summary,omitempty"` // Entitlement tier. - Tier *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=tier,proto3" json:"tier,omitempty"` + Tier *string `protobuf:"bytes,4,opt,name=tier,proto3,oneof" json:"tier,omitempty"` // Total units covered by this entitlement. - TotalUnits *wrapperspb.StringValue `protobuf:"bytes,5,opt,name=total_units,json=totalUnits,proto3" json:"total_units,omitempty"` + TotalUnits *string `protobuf:"bytes,5,opt,name=total_units,json=totalUnits,proto3,oneof" json:"total_units,omitempty"` // Flag indicates that unlimited units are covered. - UnlimitedUnits *wrapperspb.BoolValue `protobuf:"bytes,6,opt,name=unlimited_units,json=unlimitedUnits,proto3" json:"unlimited_units,omitempty"` + UnlimitedUnits *bool `protobuf:"varint,6,opt,name=unlimited_units,json=unlimitedUnits,proto3,oneof" json:"unlimited_units,omitempty"` // Support level covered by this entitlement. - SupportLevel *wrapperspb.StringValue `protobuf:"bytes,7,opt,name=support_level,json=supportLevel,proto3" json:"support_level,omitempty"` + SupportLevel *string `protobuf:"bytes,7,opt,name=support_level,json=supportLevel,proto3,oneof" json:"support_level,omitempty"` // Percona product families covered by this entitlement. SoftwareFamilies []string `protobuf:"bytes,8,rep,name=software_families,json=softwareFamilies,proto3" json:"software_families,omitempty"` // Entitlement start data. @@ -608,32 +608,32 @@ func (x *OrganizationEntitlement) GetSummary() string { return "" } -func (x *OrganizationEntitlement) GetTier() *wrapperspb.StringValue { - if x != nil { - return x.Tier +func (x *OrganizationEntitlement) GetTier() string { + if x != nil && x.Tier != nil { + return *x.Tier } - return nil + return "" } -func (x *OrganizationEntitlement) GetTotalUnits() *wrapperspb.StringValue { - if x != nil { - return x.TotalUnits +func (x *OrganizationEntitlement) GetTotalUnits() string { + if x != nil && x.TotalUnits != nil { + return *x.TotalUnits } - return nil + return "" } -func (x *OrganizationEntitlement) GetUnlimitedUnits() *wrapperspb.BoolValue { - if x != nil { - return x.UnlimitedUnits +func (x *OrganizationEntitlement) GetUnlimitedUnits() bool { + if x != nil && x.UnlimitedUnits != nil { + return *x.UnlimitedUnits } - return nil + return false } -func (x *OrganizationEntitlement) GetSupportLevel() *wrapperspb.StringValue { - if x != nil { - return x.SupportLevel +func (x *OrganizationEntitlement) GetSupportLevel() string { + if x != nil && x.SupportLevel != nil { + return *x.SupportLevel } - return nil + return "" } func (x *OrganizationEntitlement) GetSoftwareFamilies() []string { @@ -959,9 +959,9 @@ type OrganizationEntitlement_Platform struct { unknownFields protoimpl.UnknownFields // Flag indicates that security advisors are covered by this entitlement. - SecurityAdvisor *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=security_advisor,json=securityAdvisor,proto3" json:"security_advisor,omitempty"` + SecurityAdvisor *string `protobuf:"bytes,1,opt,name=security_advisor,json=securityAdvisor,proto3,oneof" json:"security_advisor,omitempty"` // Flag indicates that config advisors are covered by this entitlement. - ConfigAdvisor *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=config_advisor,json=configAdvisor,proto3" json:"config_advisor,omitempty"` + ConfigAdvisor *string `protobuf:"bytes,2,opt,name=config_advisor,json=configAdvisor,proto3,oneof" json:"config_advisor,omitempty"` } func (x *OrganizationEntitlement_Platform) Reset() { @@ -996,18 +996,18 @@ func (*OrganizationEntitlement_Platform) Descriptor() ([]byte, []int) { return file_platform_v1_platform_proto_rawDescGZIP(), []int{9, 0} } -func (x *OrganizationEntitlement_Platform) GetSecurityAdvisor() *wrapperspb.StringValue { - if x != nil { - return x.SecurityAdvisor +func (x *OrganizationEntitlement_Platform) GetSecurityAdvisor() string { + if x != nil && x.SecurityAdvisor != nil { + return *x.SecurityAdvisor } - return nil + return "" } -func (x *OrganizationEntitlement_Platform) GetConfigAdvisor() *wrapperspb.StringValue { - if x != nil { - return x.ConfigAdvisor +func (x *OrganizationEntitlement_Platform) GetConfigAdvisor() string { + if x != nil && x.ConfigAdvisor != nil { + return *x.ConfigAdvisor } - return nil + return "" } // CustomerSuccess contains the contanct details of the customer success employee assigned to a customer's account. @@ -1135,224 +1135,221 @@ var file_platform_v1_platform_proto_rawDesc = []byte{ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xdd, 0x05, 0x0a, 0x17, 0x4f, 0x72, + 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xb0, 0x05, 0x0a, 0x17, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x30, 0x0a, 0x04, 0x74, - 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x74, 0x69, 0x65, 0x72, 0x12, 0x3d, 0x0a, - 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0f, - 0x75, 0x6e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x0e, 0x75, 0x6e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x74, - 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, - 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x10, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, - 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, - 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x98, - 0x01, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x47, 0x0a, 0x10, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x41, 0x64, 0x76, - 0x69, 0x73, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x61, - 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x22, 0x1e, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xe9, 0x01, 0x0a, 0x1d, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x10, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x54, - 0x69, 0x63, 0x6b, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x1a, 0x3b, 0x0a, 0x0f, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc7, 0x01, 0x0a, 0x12, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x6d, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x6d, 0x6d, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x6d, 0x6d, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x70, 0x6d, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x35, 0x0a, - 0x17, 0x70, 0x6d, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, - 0x70, 0x6d, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x6f, 0x50, 0x6f, - 0x72, 0x74, 0x61, 0x6c, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, 0x55, 0x73, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x32, 0xab, 0x0f, 0x0a, 0x0f, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x87, 0x02, - 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x70, 0x6c, 0x61, 0x74, + 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x74, + 0x69, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x69, 0x65, + 0x72, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, + 0x69, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x75, 0x6e, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0e, 0x75, 0x6e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, + 0x55, 0x6e, 0x69, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x03, 0x52, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x66, + 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, + 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x69, 0x65, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, + 0x65, 0x12, 0x49, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x1a, 0x8e, 0x01, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x41, + 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x64, 0x76, 0x69, 0x73, + 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x75, 0x6e, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x1e, 0x0a, 0x1c, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xe9, 0x01, 0x0a, + 0x1d, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, + 0x0a, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x69, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, + 0x65, 0x77, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x55, 0x72, 0x6c, 0x1a, 0x3b, 0x0a, 0x0f, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x13, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xc7, 0x01, + 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x6d, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, + 0x6d, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, + 0x70, 0x6d, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6d, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x35, 0x0a, 0x17, 0x70, 0x6d, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x70, 0x6d, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, + 0x6f, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x32, 0xab, 0x0f, 0x0a, + 0x0f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x87, 0x02, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0x92, 0x41, 0x9d, 0x01, 0x12, 0x07, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x1a, 0x91, 0x01, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x20, 0x61, - 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, - 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x2e, 0x20, 0x54, 0x68, 0x61, 0x74, 0x20, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, - 0x74, 0x6f, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, - 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x92, 0x41, 0x56, 0x12, 0x0a, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x1a, 0x48, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x20, 0x61, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, - 0x6f, 0x6e, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x72, 0x74, 0x61, - 0x6c, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, - 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x12, 0xd4, 0x02, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0x92, 0x41, 0x9d, 0x01, 0x12, 0x07, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x1a, 0x91, 0x01, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x20, 0x61, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x74, + 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x50, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x2e, 0x20, 0x54, 0x68, + 0x61, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x6f, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x61, 0x20, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0xca, 0x01, 0x0a, 0x0a, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x92, 0x41, 0x56, 0x12, + 0x0a, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x1a, 0x48, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x20, 0x61, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, + 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x50, 0x6f, + 0x72, 0x74, 0x61, 0x6c, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, + 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0xd4, 0x02, 0x0a, 0x19, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, + 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x01, 0x92, 0x41, 0xa2, 0x01, 0x12, 0x19, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x1a, 0x84, 0x01, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, - 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xd7, 0x01, 0x92, 0x41, 0xa2, 0x01, 0x12, 0x19, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x1a, 0x84, 0x01, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, - 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x20, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x6e, 0x67, 0x69, - 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, - 0x61, 0x20, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, - 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, - 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0xf6, 0x02, 0x0a, 0x1e, + 0x74, 0x73, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x20, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x20, 0x62, 0x65, 0x6c, 0x6f, + 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x20, 0x4f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12, 0xf6, + 0x02, 0x0a, 0x1e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x32, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x32, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xea, 0x01, 0x92, 0x41, 0xb0, 0x01, 0x12, 0x1e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x8d, - 0x01, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x27, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, - 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, - 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, - 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x12, 0xcb, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, - 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xda, 0x01, 0x92, 0x41, 0xa9, 0x01, 0x12, 0x15, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x8f, 0x01, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x65, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x20, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, - 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x69, 0x6e, - 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x20, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x66, - 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, 0x2a, 0x22, 0x22, - 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0xac, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x5d, 0x92, 0x41, 0x38, 0x12, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x1a, 0x2a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x20, 0x49, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0xf3, 0x01, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xa3, 0x01, 0x92, 0x41, 0x7e, 0x12, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x1a, 0x70, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, - 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x68, 0x65, - 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x64, 0x20, - 0x69, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x50, 0x65, - 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x6f, 0x72, - 0x20, 0x6e, 0x6f, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, - 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x55, 0x73, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0xb3, 0x01, 0x92, 0x41, 0x10, 0x12, 0x0e, 0x0a, - 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x41, 0x50, 0x49, 0x0a, 0x0f, 0x63, - 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0d, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, - 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x58, 0x58, 0xaa, 0x02, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xea, 0x01, 0x92, 0x41, 0xb0, + 0x01, 0x12, 0x1e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x1a, 0x8d, 0x01, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x20, 0x66, 0x65, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x27, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x20, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x01, 0x2a, 0x22, 0x2b, 0x2f, 0x76, 0x31, 0x2f, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4f, + 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0xcb, 0x02, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x29, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xda, 0x01, 0x92, 0x41, 0xa9, 0x01, 0x12, + 0x15, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x8f, 0x01, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66, + 0x65, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x20, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x65, 0x20, 0x68, 0x61, 0x6e, 0x64, + 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, + 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x20, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x3a, 0x01, + 0x2a, 0x22, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xac, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5d, 0x92, 0x41, 0x38, 0x12, 0x0a, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x1a, 0x2a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x49, 0x44, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x61, 0x6d, + 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, + 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0xf3, 0x01, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x01, 0x92, 0x41, 0x7e, 0x12, 0x0a, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x70, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6f, 0x6f, + 0x6c, 0x65, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6c, 0x6f, 0x67, 0x67, + 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, + 0x20, 0x50, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x20, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, + 0x2a, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0xb3, 0x01, 0x92, 0x41, 0x10, + 0x12, 0x0e, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x41, 0x50, 0x49, + 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x42, 0x0d, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x58, 0x58, 0xaa, 0x02, 0x0b, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0b, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x17, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1389,8 +1386,6 @@ var ( (*OrganizationEntitlement_Platform)(nil), // 16: platform.v1.OrganizationEntitlement.Platform (*GetContactInformationResponse_CustomerSuccess)(nil), // 17: platform.v1.GetContactInformationResponse.CustomerSuccess (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp - (*wrapperspb.StringValue)(nil), // 19: google.protobuf.StringValue - (*wrapperspb.BoolValue)(nil), // 20: google.protobuf.BoolValue } ) @@ -1398,35 +1393,29 @@ var file_platform_v1_platform_proto_depIdxs = []int32{ 6, // 0: platform.v1.SearchOrganizationTicketsResponse.tickets:type_name -> platform.v1.OrganizationTicket 18, // 1: platform.v1.OrganizationTicket.create_time:type_name -> google.protobuf.Timestamp 9, // 2: platform.v1.SearchOrganizationEntitlementsResponse.entitlements:type_name -> platform.v1.OrganizationEntitlement - 19, // 3: platform.v1.OrganizationEntitlement.tier:type_name -> google.protobuf.StringValue - 19, // 4: platform.v1.OrganizationEntitlement.total_units:type_name -> google.protobuf.StringValue - 20, // 5: platform.v1.OrganizationEntitlement.unlimited_units:type_name -> google.protobuf.BoolValue - 19, // 6: platform.v1.OrganizationEntitlement.support_level:type_name -> google.protobuf.StringValue - 18, // 7: platform.v1.OrganizationEntitlement.start_date:type_name -> google.protobuf.Timestamp - 18, // 8: platform.v1.OrganizationEntitlement.end_date:type_name -> google.protobuf.Timestamp - 16, // 9: platform.v1.OrganizationEntitlement.platform:type_name -> platform.v1.OrganizationEntitlement.Platform - 17, // 10: platform.v1.GetContactInformationResponse.customer_success:type_name -> platform.v1.GetContactInformationResponse.CustomerSuccess - 19, // 11: platform.v1.OrganizationEntitlement.Platform.security_advisor:type_name -> google.protobuf.StringValue - 19, // 12: platform.v1.OrganizationEntitlement.Platform.config_advisor:type_name -> google.protobuf.StringValue - 0, // 13: platform.v1.PlatformService.Connect:input_type -> platform.v1.ConnectRequest - 2, // 14: platform.v1.PlatformService.Disconnect:input_type -> platform.v1.DisconnectRequest - 4, // 15: platform.v1.PlatformService.SearchOrganizationTickets:input_type -> platform.v1.SearchOrganizationTicketsRequest - 7, // 16: platform.v1.PlatformService.SearchOrganizationEntitlements:input_type -> platform.v1.SearchOrganizationEntitlementsRequest - 10, // 17: platform.v1.PlatformService.GetContactInformation:input_type -> platform.v1.GetContactInformationRequest - 12, // 18: platform.v1.PlatformService.ServerInfo:input_type -> platform.v1.ServerInfoRequest - 14, // 19: platform.v1.PlatformService.UserStatus:input_type -> platform.v1.UserStatusRequest - 1, // 20: platform.v1.PlatformService.Connect:output_type -> platform.v1.ConnectResponse - 3, // 21: platform.v1.PlatformService.Disconnect:output_type -> platform.v1.DisconnectResponse - 5, // 22: platform.v1.PlatformService.SearchOrganizationTickets:output_type -> platform.v1.SearchOrganizationTicketsResponse - 8, // 23: platform.v1.PlatformService.SearchOrganizationEntitlements:output_type -> platform.v1.SearchOrganizationEntitlementsResponse - 11, // 24: platform.v1.PlatformService.GetContactInformation:output_type -> platform.v1.GetContactInformationResponse - 13, // 25: platform.v1.PlatformService.ServerInfo:output_type -> platform.v1.ServerInfoResponse - 15, // 26: platform.v1.PlatformService.UserStatus:output_type -> platform.v1.UserStatusResponse - 20, // [20:27] is the sub-list for method output_type - 13, // [13:20] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 18, // 3: platform.v1.OrganizationEntitlement.start_date:type_name -> google.protobuf.Timestamp + 18, // 4: platform.v1.OrganizationEntitlement.end_date:type_name -> google.protobuf.Timestamp + 16, // 5: platform.v1.OrganizationEntitlement.platform:type_name -> platform.v1.OrganizationEntitlement.Platform + 17, // 6: platform.v1.GetContactInformationResponse.customer_success:type_name -> platform.v1.GetContactInformationResponse.CustomerSuccess + 0, // 7: platform.v1.PlatformService.Connect:input_type -> platform.v1.ConnectRequest + 2, // 8: platform.v1.PlatformService.Disconnect:input_type -> platform.v1.DisconnectRequest + 4, // 9: platform.v1.PlatformService.SearchOrganizationTickets:input_type -> platform.v1.SearchOrganizationTicketsRequest + 7, // 10: platform.v1.PlatformService.SearchOrganizationEntitlements:input_type -> platform.v1.SearchOrganizationEntitlementsRequest + 10, // 11: platform.v1.PlatformService.GetContactInformation:input_type -> platform.v1.GetContactInformationRequest + 12, // 12: platform.v1.PlatformService.ServerInfo:input_type -> platform.v1.ServerInfoRequest + 14, // 13: platform.v1.PlatformService.UserStatus:input_type -> platform.v1.UserStatusRequest + 1, // 14: platform.v1.PlatformService.Connect:output_type -> platform.v1.ConnectResponse + 3, // 15: platform.v1.PlatformService.Disconnect:output_type -> platform.v1.DisconnectResponse + 5, // 16: platform.v1.PlatformService.SearchOrganizationTickets:output_type -> platform.v1.SearchOrganizationTicketsResponse + 8, // 17: platform.v1.PlatformService.SearchOrganizationEntitlements:output_type -> platform.v1.SearchOrganizationEntitlementsResponse + 11, // 18: platform.v1.PlatformService.GetContactInformation:output_type -> platform.v1.GetContactInformationResponse + 13, // 19: platform.v1.PlatformService.ServerInfo:output_type -> platform.v1.ServerInfoResponse + 15, // 20: platform.v1.PlatformService.UserStatus:output_type -> platform.v1.UserStatusResponse + 14, // [14:21] is the sub-list for method output_type + 7, // [7:14] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_platform_v1_platform_proto_init() } @@ -1652,6 +1641,8 @@ func file_platform_v1_platform_proto_init() { } } } + file_platform_v1_platform_proto_msgTypes[9].OneofWrappers = []interface{}{} + file_platform_v1_platform_proto_msgTypes[16].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/platform/v1/platform.pb.validate.go b/api/platform/v1/platform.pb.validate.go index 315192f728..9b8a01204a 100644 --- a/api/platform/v1/platform.pb.validate.go +++ b/api/platform/v1/platform.pb.validate.go @@ -1122,122 +1122,6 @@ func (m *OrganizationEntitlement) validate(all bool) error { // no validation rules for Summary - if all { - switch v := interface{}(m.GetTier()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "Tier", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "Tier", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTier()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OrganizationEntitlementValidationError{ - field: "Tier", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetTotalUnits()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "TotalUnits", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "TotalUnits", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTotalUnits()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OrganizationEntitlementValidationError{ - field: "TotalUnits", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetUnlimitedUnits()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "UnlimitedUnits", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "UnlimitedUnits", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUnlimitedUnits()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OrganizationEntitlementValidationError{ - field: "UnlimitedUnits", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetSupportLevel()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "SupportLevel", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OrganizationEntitlementValidationError{ - field: "SupportLevel", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSupportLevel()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OrganizationEntitlementValidationError{ - field: "SupportLevel", - reason: "embedded message failed validation", - cause: err, - } - } - } - if all { switch v := interface{}(m.GetStartDate()).(type) { case interface{ ValidateAll() error }: @@ -1325,6 +1209,22 @@ func (m *OrganizationEntitlement) validate(all bool) error { } } + if m.Tier != nil { + // no validation rules for Tier + } + + if m.TotalUnits != nil { + // no validation rules for TotalUnits + } + + if m.UnlimitedUnits != nil { + // no validation rules for UnlimitedUnits + } + + if m.SupportLevel != nil { + // no validation rules for SupportLevel + } + if len(errors) > 0 { return OrganizationEntitlementMultiError(errors) } @@ -2083,62 +1983,12 @@ func (m *OrganizationEntitlement_Platform) validate(all bool) error { var errors []error - if all { - switch v := interface{}(m.GetSecurityAdvisor()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OrganizationEntitlement_PlatformValidationError{ - field: "SecurityAdvisor", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OrganizationEntitlement_PlatformValidationError{ - field: "SecurityAdvisor", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSecurityAdvisor()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OrganizationEntitlement_PlatformValidationError{ - field: "SecurityAdvisor", - reason: "embedded message failed validation", - cause: err, - } - } + if m.SecurityAdvisor != nil { + // no validation rules for SecurityAdvisor } - if all { - switch v := interface{}(m.GetConfigAdvisor()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, OrganizationEntitlement_PlatformValidationError{ - field: "ConfigAdvisor", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, OrganizationEntitlement_PlatformValidationError{ - field: "ConfigAdvisor", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetConfigAdvisor()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return OrganizationEntitlement_PlatformValidationError{ - field: "ConfigAdvisor", - reason: "embedded message failed validation", - cause: err, - } - } + if m.ConfigAdvisor != nil { + // no validation rules for ConfigAdvisor } if len(errors) > 0 { diff --git a/api/platform/v1/platform.proto b/api/platform/v1/platform.proto index 989b7135f6..0d4092829a 100644 --- a/api/platform/v1/platform.proto +++ b/api/platform/v1/platform.proto @@ -4,7 +4,6 @@ package platform.v1; import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; import "validate/validate.proto"; @@ -72,9 +71,9 @@ message OrganizationEntitlement { // Platform indicates platform specific entitlements. message Platform { // Flag indicates that security advisors are covered by this entitlement. - google.protobuf.StringValue security_advisor = 1; + optional string security_advisor = 1; // Flag indicates that config advisors are covered by this entitlement. - google.protobuf.StringValue config_advisor = 2; + optional string config_advisor = 2; } // Entitlement number. string number = 1; @@ -83,13 +82,13 @@ message OrganizationEntitlement { // Entitlement short summary. string summary = 3; // Entitlement tier. - google.protobuf.StringValue tier = 4; + optional string tier = 4; // Total units covered by this entitlement. - google.protobuf.StringValue total_units = 5; + optional string total_units = 5; // Flag indicates that unlimited units are covered. - google.protobuf.BoolValue unlimited_units = 6; + optional bool unlimited_units = 6; // Support level covered by this entitlement. - google.protobuf.StringValue support_level = 7; + optional string support_level = 7; // Percona product families covered by this entitlement. repeated string software_families = 8; // Entitlement start data. diff --git a/api/server/v1/server.proto b/api/server/v1/server.proto index f652fb2cca..f3607e14c9 100644 --- a/api/server/v1/server.proto +++ b/api/server/v1/server.proto @@ -174,7 +174,7 @@ message ChangeSettingsRequest { // A number of full days for Prometheus and QAN data retention. Should have a suffix in JSON: 2592000s, 43200m, 720h. google.protobuf.Duration data_retention = 4; optional string ssh_key = 5; - optional common.v1.StringArray aws_partitions = 6; + optional common.StringArray aws_partitions = 6; // Enable Security Threat Tool. optional bool enable_stt = 11; // Enable Alerting. diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index b090fb4acd..3c481a4f3a 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -2627,21 +2627,25 @@ "tier": { "description": "Entitlement tier.", "type": "string", + "x-nullable": true, "x-order": 3 }, "total_units": { "description": "Total units covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 4 }, "unlimited_units": { "description": "Flag indicates that unlimited units are covered.", "type": "boolean", + "x-nullable": true, "x-order": 5 }, "support_level": { "description": "Support level covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 6 }, "software_families": { @@ -2671,11 +2675,13 @@ "security_advisor": { "description": "Flag indicates that security advisors are covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 0 }, "config_advisor": { "description": "Flag indicates that config advisors are covered by this entitlement.", "type": "string", + "x-nullable": true, "x-order": 1 } }, @@ -26911,11 +26917,13 @@ }, "enabled": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "cron_expression": { "description": "How often backup should be run in cron format.", "type": "string", + "x-nullable": true, "x-order": 2 }, "start_time": { @@ -26927,11 +26935,13 @@ "name": { "description": "Name of backup.", "type": "string", + "x-nullable": true, "x-order": 4 }, "description": { "description": "Human-readable description.", "type": "string", + "x-nullable": true, "x-order": 5 }, "retry_interval": { @@ -26943,12 +26953,14 @@ "description": "How many times to retry a failed backup before giving up.", "type": "integer", "format": "int64", + "x-nullable": true, "x-order": 7 }, "retention": { "description": "How many artifacts keep. 0 - unlimited.", "type": "integer", "format": "int64", + "x-nullable": true, "x-order": 8 } } diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 1679b073f1..29d0b4681c 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -9149,11 +9149,13 @@ }, "enabled": { "type": "boolean", + "x-nullable": true, "x-order": 1 }, "cron_expression": { "description": "How often backup should be run in cron format.", "type": "string", + "x-nullable": true, "x-order": 2 }, "start_time": { @@ -9165,11 +9167,13 @@ "name": { "description": "Name of backup.", "type": "string", + "x-nullable": true, "x-order": 4 }, "description": { "description": "Human-readable description.", "type": "string", + "x-nullable": true, "x-order": 5 }, "retry_interval": { @@ -9181,12 +9185,14 @@ "description": "How many times to retry a failed backup before giving up.", "type": "integer", "format": "int64", + "x-nullable": true, "x-order": 7 }, "retention": { "description": "How many artifacts keep. 0 - unlimited.", "type": "integer", "format": "int64", + "x-nullable": true, "x-order": 8 } } diff --git a/descriptor.bin b/descriptor.bin index c61b4b08a8f25a04203ae1c4cd74e1cd4e55fbb6..d7bf0c2574cdccff92cab93473f40def1e2ea32a 100644 GIT binary patch delta 1613 zcmZ9M&u<$=6vsWgv!0!?<2YM`-R4IfH)%s!A&{y@;NXfy6{a;JUB|MF4=a;w(MpaT z)|;vzq!7tcIM5Vw@I)x&jF1vV2;n1Vr1BpC5^yO(LX=8y;KG~r?%HttzW1Haz8Ssm z{`vjl*FP+N&_!LTD|c~M=|;aI$2;if{>ct$GW?g!rua8KlI9QgNa1yDnh~qjc&llx zXQV7zP>T^GD13;Jc7=_vIqjBd-P?4mPRDMyGBVg`5g7^5xDnRD&Hwm_EMHGE+-huC z8O8HShNlE;p2gO!&YELyx`Gq+`m!-v6p+vElUKH3EXQ&k+v;Rg@QoF*5flV!mQiS1 zEe}LJgJKLzV9^;`5($}12T~UD+$1Y73}+<`?<46V z-##WUUIh+_fFl8CAH^p8gA#D|#q|dtm4LI4=H~g2$K*XU$!jNMQU^e92*3d74FMPc zJ)}MD126!3=*@1WV+b0e671v;4^k zd4Oj4qfbfUwLyyj=Wxg&z&RX_MSydNw6i{k0Ot@*O|vC$ELFotNXqj2Uyv*QSSsM4 z7L26=?r4Zp0e6J7Ngt;I?g-7C-z}e#e)&|*?4sZM%_Vvn<5PvD`8#=<=3nONt1Z}F z*S4Gt_I5L3cuFkX9E-Vax6w4WTDIHqcN-bZD^^5JxF9WCt){(UyVknz6kDzqB_k0w zLiYkcU8boNEy_l`v$eU|cHEM6*J=WZKVGK4ZSNtbt~49&owl=~JLDTuhgl`Xyb EFX#_Lv@}93mDBLgL6ie>%o44#>{{z} zlvZj9k}K36(h4NT2ZY)~q#R00q^esrIYjEI$4b3aYVM69_0S%A$R%&ryWlFf{oZ@O zZ$>-c`|)Y=pFfj#s;DYeTqN&xPl*gzlw+(Fqv@#v6z za<#APbo@j3C2?~-e!Wn)6@K6h`p#Wb)u?s%00AE9?0rB?(@)b&o&%P(q!$9nx5Cn*Q6ifI70b(DWzre=4 z6T=)IASos0?va##Vi&`Vn#Tqj2Xo`o;NtjP_&nR6Kl( z7TkE)nre08SL5N<`2>sDrd`liD~4v5>nTb$rigj%yxZlMS!>16wGGWy*Xn@Syo#b{ zPvYBh+^-W;;?6j2+Z~)~i#D2`DpyJ+)3S5wEmary$LaHy8e-vDy8e`KftfE7Dh0Yo1`WLI-WhzGU(wEmS-Wa5A7Tt7ISlS zz8BD31B%>UJbjEJKy!mb;*UA{;!0oFnfNqplC7&7uu*aMDIlb$U`ePXgHs+}+*ja} zhlu(LT=I}mH!oDeTwa2JW)|p32B4*52!bsyK`!eM252cYz~1&Ch0DuQR(!KS$6aU{ zwy{12X_l9}`vV2gayrA_^dJ~q0VujiM|-^Q;Cdl|R$>7Z0%#?j+1^~F&gLQ;`{*U5 CU?M#L diff --git a/managed/services/management/backup/backups_service.go b/managed/services/management/backup/backups_service.go index 122fd57f0b..ea37f88bef 100644 --- a/managed/services/management/backup/backups_service.go +++ b/managed/services/management/backup/backups_service.go @@ -30,7 +30,6 @@ import ( "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" - "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/reform.v1" inventoryv1 "github.com/percona/pmm/api/inventory/v1" @@ -145,7 +144,7 @@ func (s *BackupsService) RestoreBackup( for _, t := range tasks { if _, err := s.ChangeScheduledBackup(ctx, &backuppb.ChangeScheduledBackupRequest{ ScheduledBackupId: t.ID, - Enabled: &wrapperspb.BoolValue{Value: false}, + Enabled: pointer.ToBool(false), }); err != nil { return nil, err } @@ -341,19 +340,19 @@ func (s *BackupsService) ChangeScheduledBackup(ctx context.Context, req *backupp } if req.Name != nil { - data.Name = req.Name.Value + data.Name = *req.Name } if req.Description != nil { - data.Description = req.Description.Value + data.Description = *req.Description } if req.Retention != nil { - data.Retention = req.Retention.Value + data.Retention = *req.Retention } if req.Retries != nil { - if req.Retries.Value > maxRetriesAttempts { + if *req.Retries > maxRetriesAttempts { return status.Errorf(codes.InvalidArgument, "exceeded max retries %d", maxRetriesAttempts) } - data.Retries = req.Retries.Value + data.Retries = *req.Retries } if req.RetryInterval != nil { if req.RetryInterval.AsDuration() > maxRetryInterval { @@ -364,20 +363,17 @@ func (s *BackupsService) ChangeScheduledBackup(ctx context.Context, req *backupp serviceID = data.ServiceID params := models.ChangeScheduledTaskParams{ - Data: scheduledTask.Data, + Data: scheduledTask.Data, + CronExpression: req.CronExpression, } if req.Enabled != nil { - params.Disable = pointer.ToBool(!req.Enabled.Value) - if scheduledTask.Type == models.ScheduledMongoDBBackupTask && !req.Enabled.Value { + params.Disable = pointer.ToBool(!*req.Enabled) + if scheduledTask.Type == models.ScheduledMongoDBBackupTask && !*req.Enabled { disablePITR = data.Mode == models.PITR } } - if req.CronExpression != nil { - params.CronExpression = pointer.ToString(req.CronExpression.Value) - } - err = s.scheduleService.Update(req.ScheduledBackupId, params) return convertError(err) diff --git a/managed/services/management/backup/backups_service_test.go b/managed/services/management/backup/backups_service_test.go index 091b5435b5..b02a2478cb 100644 --- a/managed/services/management/backup/backups_service_test.go +++ b/managed/services/management/backup/backups_service_test.go @@ -29,7 +29,6 @@ import ( "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/durationpb" "google.golang.org/protobuf/types/known/timestamppb" - "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/reform.v1" "gopkg.in/reform.v1/dialects/postgresql" @@ -366,12 +365,12 @@ func TestScheduledBackups(t *testing.T) { changeReq := &backuppb.ChangeScheduledBackupRequest{ ScheduledBackupId: task.ID, - Enabled: wrapperspb.Bool(false), - CronExpression: wrapperspb.String("2 * * * *"), + Enabled: pointer.ToBool(false), + CronExpression: pointer.ToString("2 * * * *"), StartTime: timestamppb.New(time.Now()), - Name: wrapperspb.String("test"), - Description: wrapperspb.String("test"), - Retries: wrapperspb.UInt32(0), + Name: pointer.ToString("test"), + Description: pointer.ToString("test"), + Retries: pointer.ToUint32(0), RetryInterval: durationpb.New(time.Second), } _, err = backupSvc.ChangeScheduledBackup(ctx, changeReq) @@ -380,11 +379,11 @@ func TestScheduledBackups(t *testing.T) { task, err = models.FindScheduledTaskByID(db.Querier, res.ScheduledBackupId) require.NoError(t, err) data = task.Data.MySQLBackupTask - assert.Equal(t, changeReq.CronExpression.GetValue(), task.CronExpression) - assert.Equal(t, changeReq.Enabled.GetValue(), !task.Disabled) - assert.Equal(t, changeReq.Name.GetValue(), data.Name) - assert.Equal(t, changeReq.Description.GetValue(), data.Description) - assert.Equal(t, changeReq.Retries.GetValue(), data.Retries) + assert.Equal(t, changeReq.CronExpression, task.CronExpression) + assert.Equal(t, changeReq.Enabled, !task.Disabled) + assert.Equal(t, changeReq.Name, data.Name) + assert.Equal(t, changeReq.Description, data.Description) + assert.Equal(t, changeReq.Retries, data.Retries) assert.Equal(t, changeReq.RetryInterval.AsDuration(), data.RetryInterval) }) diff --git a/managed/services/platform/platform.go b/managed/services/platform/platform.go index e1e1cdc2a2..a4ecc7f1dc 100644 --- a/managed/services/platform/platform.go +++ b/managed/services/platform/platform.go @@ -27,7 +27,6 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/timestamppb" - "google.golang.org/protobuf/types/known/wrapperspb" "gopkg.in/reform.v1" platformv1 "github.com/percona/pmm/api/platform/v1" @@ -324,16 +323,16 @@ func convertEntitlement(ent *platform.EntitlementResponse) (*platformv1.Organiza Number: ent.Number, Name: ent.Name, Summary: ent.Summary, - Tier: &wrapperspb.StringValue{Value: ent.Tier}, - TotalUnits: &wrapperspb.StringValue{Value: ent.TotalUnits}, - UnlimitedUnits: &wrapperspb.BoolValue{Value: ent.UnlimitedUnits}, - SupportLevel: &wrapperspb.StringValue{Value: ent.SupportLevel}, + Tier: &ent.Tier, + TotalUnits: &ent.TotalUnits, + UnlimitedUnits: &ent.UnlimitedUnits, + SupportLevel: &ent.SupportLevel, SoftwareFamilies: ent.SoftwareFamilies, StartDate: timestamppb.New(startDate), EndDate: timestamppb.New(endDate), Platform: &platformv1.OrganizationEntitlement_Platform{ - ConfigAdvisor: &wrapperspb.StringValue{Value: ent.Platform.ConfigAdvisor}, - SecurityAdvisor: &wrapperspb.StringValue{Value: ent.Platform.SecurityAdvisor}, + ConfigAdvisor: &ent.Platform.ConfigAdvisor, + SecurityAdvisor: &ent.Platform.SecurityAdvisor, }, }, nil } From 5192034d3ef923a245b73bffe02e092593121e7c Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 26 Dec 2023 14:46:29 +0200 Subject: [PATCH 17/20] PMM-8019 Comments --- .../management/alerting/alerting_test.go | 3 +- api/buf.yaml | 2 +- api/common/common.pb.go | 30 +- api/common/common.pb.validate.go | 2 +- api/common/common.proto | 1 + api/management/v1/backup/backups.pb.go | 5 +- api/platform/v1/platform.pb.go | 5 +- .../change_settings_responses.go | 2 +- api/server/v1/json/v1.json | 1 + api/server/v1/server.pb.go | 370 +++++++++--------- api/swagger/swagger-dev.json | 1 + api/swagger/swagger.json | 1 + descriptor.bin | Bin 700086 -> 695541 bytes managed/models/settings.go | 2 + 14 files changed, 212 insertions(+), 213 deletions(-) diff --git a/api-tests/management/alerting/alerting_test.go b/api-tests/management/alerting/alerting_test.go index 6fa96c9f8f..a28b7c8f68 100644 --- a/api-tests/management/alerting/alerting_test.go +++ b/api-tests/management/alerting/alerting_test.go @@ -40,8 +40,7 @@ import ( ) // Note: Even though the Alerting service checks for alerting enabled or disabled before returning results -// we don't enable or disable Alerting explicit in our tests since it is enabled by default through -// ENABLE_ALERTING env var. +// we don't enable or disable Alerting explicit in our tests since it is enabled by default. func TestRulesAPI(t *testing.T) { t.Parallel() client := alertingClient.Default.AlertingService diff --git a/api/buf.yaml b/api/buf.yaml index 064a98fa29..a892de90c5 100644 --- a/api/buf.yaml +++ b/api/buf.yaml @@ -26,7 +26,7 @@ lint: - management/v1/role/role.proto - management/v1/service/service.proto PACKAGE_VERSION_SUFFIX: - - common/common.proto + - common/common.proto # We don't want version this file deps: diff --git a/api/common/common.pb.go b/api/common/common.pb.go index 1b3c9cdbb3..2426f03a9f 100644 --- a/api/common/common.pb.go +++ b/api/common/common.pb.go @@ -4,7 +4,7 @@ // protoc (unknown) // source: common/common.proto -package commonv1 +package common import ( reflect "reflect" @@ -21,6 +21,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// A wrapper for a string array. This type allows to distinguish between an empty array and a null value. type StringArray struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -72,19 +73,18 @@ var File_common_common_proto protoreflect.FileDescriptor var file_common_common_proto_rawDesc = []byte{ 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x22, 0x25, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x8d, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x3b, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x15, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x56, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x25, 0x0a, + 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x42, 0x74, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0xca, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xe2, 0x02, 0x12, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -102,7 +102,7 @@ func file_common_common_proto_rawDescGZIP() []byte { var ( file_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 1) file_common_common_proto_goTypes = []interface{}{ - (*StringArray)(nil), // 0: common.v1.StringArray + (*StringArray)(nil), // 0: common.StringArray } ) diff --git a/api/common/common.pb.validate.go b/api/common/common.pb.validate.go index 5fe2354850..1c35c6ce91 100644 --- a/api/common/common.pb.validate.go +++ b/api/common/common.pb.validate.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-validate. DO NOT EDIT. // source: common/common.proto -package commonv1 +package common import ( "bytes" diff --git a/api/common/common.proto b/api/common/common.proto index a2d3c71cd8..c3c1547cee 100644 --- a/api/common/common.proto +++ b/api/common/common.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package common; +// A wrapper for a string array. This type allows to distinguish between an empty array and a null value. message StringArray { repeated string values = 1; } diff --git a/api/management/v1/backup/backups.pb.go b/api/management/v1/backup/backups.pb.go index 8559e5d239..328ba65cf3 100644 --- a/api/management/v1/backup/backups.pb.go +++ b/api/management/v1/backup/backups.pb.go @@ -17,7 +17,6 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - _ "google.golang.org/protobuf/types/known/wrapperspb" v1 "github.com/percona/pmm/api/inventory/v1" ) @@ -1338,9 +1337,7 @@ var file_management_v1_backup_backups_proto_rawDesc = []byte{ 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, 0x1e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x75, diff --git a/api/platform/v1/platform.pb.go b/api/platform/v1/platform.pb.go index b646d2ff4e..4f7b1a0212 100644 --- a/api/platform/v1/platform.pb.go +++ b/api/platform/v1/platform.pb.go @@ -16,7 +16,6 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - _ "google.golang.org/protobuf/types/known/wrapperspb" ) const ( @@ -1075,9 +1074,7 @@ var file_platform_v1_platform_proto_rawDesc = []byte{ 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 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, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, - 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, diff --git a/api/server/v1/json/client/server_service/change_settings_responses.go b/api/server/v1/json/client/server_service/change_settings_responses.go index 866bcb8927..9190129576 100644 --- a/api/server/v1/json/client/server_service/change_settings_responses.go +++ b/api/server/v1/json/client/server_service/change_settings_responses.go @@ -934,7 +934,7 @@ func (o *ChangeSettingsOKBodySettingsSttCheckIntervals) UnmarshalBinary(b []byte } /* -ChangeSettingsParamsBodyAWSPartitions change settings params body AWS partitions +ChangeSettingsParamsBodyAWSPartitions A wrapper for a string array. This type allows to distinguish between an empty array and a null value. swagger:model ChangeSettingsParamsBodyAWSPartitions */ type ChangeSettingsParamsBodyAWSPartitions struct { diff --git a/api/server/v1/json/v1.json b/api/server/v1/json/v1.json index 9b1c181255..125edb6603 100644 --- a/api/server/v1/json/v1.json +++ b/api/server/v1/json/v1.json @@ -148,6 +148,7 @@ "type": "object", "properties": { "aws_partitions": { + "description": "A wrapper for a string array. This type allows to distinguish between an empty array and a null value.", "type": "object", "properties": { "values": { diff --git a/api/server/v1/server.pb.go b/api/server/v1/server.pb.go index 093ebd327b..38c71171b6 100644 --- a/api/server/v1/server.pb.go +++ b/api/server/v1/server.pb.go @@ -1654,7 +1654,7 @@ var file_server_v1_server_proto_rawDesc = []byte{ 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x22, 0xeb, 0x07, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, + 0x6e, 0x67, 0x73, 0x22, 0xe8, 0x07, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, @@ -1672,191 +1672,191 @@ var file_server_v1_server_proto_rawDesc = []byte{ 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x07, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x06, - 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x61, 0x77, 0x73, + 0x73, 0x73, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x03, 0x52, 0x0d, 0x61, 0x77, 0x73, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, - 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x04, 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, - 0x74, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0e, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, - 0x31, 0x0a, 0x12, 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x70, - 0x6d, 0x6d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, - 0x74, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, - 0x12, 0x36, 0x0a, 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, - 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, - 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, + 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x03, 0x52, 0x0d, 0x61, 0x77, 0x73, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x04, + 0x52, 0x09, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, + 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x12, + 0x70, 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x70, 0x6d, 0x6d, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x4c, 0x0a, 0x13, 0x73, 0x74, 0x74, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x54, 0x54, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x11, 0x73, 0x74, 0x74, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, 0x36, 0x0a, + 0x14, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x48, 0x07, 0x52, 0x13, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x16, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x1e, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x73, 0x68, 0x5f, 0x6b, 0x65, + 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x73, 0x74, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x6d, 0x6d, 0x5f, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x48, 0x08, 0x52, 0x16, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x48, 0x09, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, - 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x73, 0x68, - 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x77, 0x73, 0x5f, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, - 0x6d, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x7a, 0x75, - 0x72, 0x65, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, - 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, - 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, 0x08, 0x12, 0x10, - 0x13, 0x22, 0x49, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x17, - 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, - 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xce, 0x01, - 0x0a, 0x12, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, - 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, - 0x5f, 0x44, 0x4f, 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, - 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, - 0x5f, 0x4f, 0x56, 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, - 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x4d, - 0x49, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, - 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0xa2, - 0x0d, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x7f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x3d, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x1a, 0x1c, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0xa4, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, - 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, + 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4a, 0x04, + 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, + 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04, 0x08, 0x10, + 0x10, 0x11, 0x4a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x22, 0x49, + 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x43, 0x0a, 0x17, 0x41, 0x57, 0x53, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x1a, + 0x0a, 0x18, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0xce, 0x01, 0x0a, 0x12, 0x44, + 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, + 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, + 0x43, 0x4b, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, + 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4f, 0x56, + 0x46, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x4d, 0x49, 0x10, 0x03, + 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, + 0x1a, 0x0a, 0x16, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x44, 0x4f, 0x10, 0x05, 0x32, 0xa2, 0x0d, 0x0a, 0x0d, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7f, 0x0a, + 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x3d, 0x92, 0x41, 0x27, 0x12, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x1c, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0d, 0x12, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xa4, + 0x02, 0x0a, 0x09, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc5, - 0x01, 0x12, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, - 0x6e, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, - 0x6e, 0x74, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x79, 0x20, 0x79, 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x41, 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, - 0x20, 0x4b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, - 0x31, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x92, 0x41, 0x79, 0x12, - 0x10, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, - 0x70, 0x1a, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, - 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, - 0x2a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x39, 0x12, - 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, - 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x48, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, - 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xa3, 0x01, - 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x52, 0x92, 0x41, 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, - 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, - 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x2f, 0x47, 0x65, 0x74, 0x12, 0xa7, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, - 0x92, 0x41, 0x2f, 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, - 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, - 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0xb0, 0x01, 0x0a, 0x10, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, - 0x92, 0x41, 0x31, 0x12, 0x12, 0x41, 0x57, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, - 0x41, 0x57, 0x53, 0x20, 0x45, 0x43, 0x32, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x20, 0x49, 0x44, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, - 0x76, 0x31, 0x2f, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x15, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc5, 0x01, 0x12, 0x16, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x1a, 0xaa, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, + 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, + 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x79, + 0x65, 0x74, 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x6f, 0x63, 0x6b, + 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x20, 0x4b, 0x75, + 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x65, + 0x73, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x7a, 0x12, 0xfd, 0x01, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x23, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, 0x92, 0x41, 0x79, 0x12, 0x10, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x20, 0x4c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x1a, 0x65, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x2e, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, + 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x39, 0x12, 0x0d, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x28, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, + 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x12, 0x96, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x48, 0x92, 0x41, 0x29, 0x12, 0x0c, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x1a, 0x19, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0xa3, 0x01, 0x0a, 0x0c, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x92, 0x41, + 0x32, 0x12, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x1a, 0x21, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x76, + 0x31, 0x2f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x2f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x52, 0x92, 0x41, 0x34, 0x12, 0x0c, 0x47, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x1a, 0x24, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, + 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, + 0x47, 0x65, 0x74, 0x12, 0xa7, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x92, 0x41, 0x2f, + 0x12, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x1a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x50, 0x4d, 0x4d, 0x20, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0xb0, 0x01, + 0x0a, 0x10, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x12, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x31, + 0x12, 0x12, 0x41, 0x57, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x1b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x41, 0x57, 0x53, + 0x20, 0x45, 0x43, 0x32, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x49, 0x44, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, + 0x41, 0x57, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x42, 0x90, 0x01, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x76, 0x31, 0x42, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, + 0x72, 0x63, 0x6f, 0x6e, 0x61, 0x2f, 0x70, 0x6d, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, + 0xa2, 0x02, 0x03, 0x53, 0x58, 0x58, 0xaa, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x09, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x15, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1900,7 +1900,7 @@ var ( (*AWSInstanceCheckResponse)(nil), // 22: server.v1.AWSInstanceCheckResponse (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp (*durationpb.Duration)(nil), // 24: google.protobuf.Duration - (*common.StringArray)(nil), // 25: common.v1.StringArray + (*common.StringArray)(nil), // 25: common.StringArray } ) @@ -1924,7 +1924,7 @@ var file_server_v1_server_proto_depIdxs = []int32{ 16, // 16: server.v1.GetSettingsResponse.settings:type_name -> server.v1.Settings 14, // 17: server.v1.ChangeSettingsRequest.metrics_resolutions:type_name -> server.v1.MetricsResolutions 24, // 18: server.v1.ChangeSettingsRequest.data_retention:type_name -> google.protobuf.Duration - 25, // 19: server.v1.ChangeSettingsRequest.aws_partitions:type_name -> common.v1.StringArray + 25, // 19: server.v1.ChangeSettingsRequest.aws_partitions:type_name -> common.StringArray 15, // 20: server.v1.ChangeSettingsRequest.stt_check_intervals:type_name -> server.v1.STTCheckIntervals 16, // 21: server.v1.ChangeSettingsResponse.settings:type_name -> server.v1.Settings 2, // 22: server.v1.ServerService.Version:input_type -> server.v1.VersionRequest diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 3c481a4f3a..2ff91a04d5 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -3047,6 +3047,7 @@ "x-order": 4 }, "aws_partitions": { + "description": "A wrapper for a string array. This type allows to distinguish between an empty array and a null value.", "type": "object", "properties": { "values": { diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 29d0b4681c..d4655e8280 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -190,6 +190,7 @@ "x-order": 4 }, "aws_partitions": { + "description": "A wrapper for a string array. This type allows to distinguish between an empty array and a null value.", "type": "object", "properties": { "values": { diff --git a/descriptor.bin b/descriptor.bin index d7bf0c2574cdccff92cab93473f40def1e2ea32a..7140bea9d4996febe935dea9be51254d932bcba8 100644 GIT binary patch delta 5993 zcmYjVX>47^6@F*#ygTpBv!9=@9q$g$A$FW+$1%; zg{3iz5n>BT5uK(fO9@cIl7%G(QL0izt5T{$N!3;V$z$GlgStSeVyVtVfJ_W70Msje%*E3N6hg~zd8LO zX+MyOgfh2CRX$Oo$F-1&KqeE4YKHPX`Q2mvqoadk`7PVW^8NW8<6~P#uFdz4jrCvO zmcM*x>yG^R^`nFN{^8;6yYc__{54y5jKgH-)*VCns|Uw-4-Ssx`$zJF*Nu)}AMyaN zfz-&(;oH4V~Z&kZyr0-s;Rgg?1J~s`GdWI?au4*-z_fr{a zF}HN3Drf6314W5?isJH$QZ;&36joMrnb+>~s=hPeOEa@9>0g``smMKo$)?L9gkZ82 zl@Uq-Rdwo|PVdC%R4Fd#d>o!Vz<^D)Cmj-02WhbCuD7397m3 zE~iRPHCNNA7g|-g2+TJRs>OvM))UYR(#1|sKrhIZ>VmZgC^zpMRIP>b*xrMEdFa> zmq~D|(mBUXf?HKqu9sUboYa`=LuzHAMr53Y5Br*;iU`5Jrn*MAS$h?Db>^N!s@?3l zROd=coRNZ2T~KEJJgzH?YIOr_i7T(c{P&PL(_FMu=Q_f)V;Qy$I5yXZ2;}UjTsdbM8Z`c~wWO$1T#~N>mDN zkq(z`An0|tbTbO|I*@KI4m`BLTWFqnNVP9rC~EC#u?D?`b%h8)Zy^%Mk0%+(vlHir zXXg?*Ut(rHtXc|7TwGX##S(W;Am}W?IeVdlx!akz#_V`l_2xQLmHJF* z_^i<_8qC{os`_>yG(@-40)kd|y3WP~1g-8f^18+Hu+?MUKCLQD-?gd~RGuI`F_qKP zD9vk9O)LUPuw&muNEvgzUWYSw6v$%|wr^D{W9$3rKz2{jL3|E?UKTw^8m9agi zeq}nGg1+GCu(GyJcUpT?@oMws57m+hU-%5%V+8_hbzNBCKwzz&TX3;qM)ZlGCYSFS z8{fL6e_%X6(tjPlow$j7p%6u1>|Q~r&y7&*L8uQSwAQ*uxvde^HQD@yX6#W_*}5iX zrNCMfrzQo~8l;8?sV~xjw^qzIUmaB|%zqwLy0F$wQEY*>)=g0$(AKuL*(r*bV&JVa zXB}3nTGz#HH0;;8$q5VCuPd9Oo2{En;H?+s=3htDEIfk@4z*tR?uZ%i)~jrUz*}Eh zrq8y#qQJY-d~sMUDO~9$t}lvUf2EtaK(N2Ex>k2v`{KacV7~sC>Y3OO$5jmb4e4oiIN zZB6R1pacS&Vu2C}Y=XdI8$>SfHk&n%t8)sQC(XKHzyuf^{xG)$XS%azP~uUo%o^@_Wk7*cGCDF2)qHj^7b84&3!;f{y^*} z0B;~p4qnOL0Fslzq`-A$OX3y^M-CU>7K|Kz-6$RxLm0P<&57M!Sv+V<&G(*A6&DXV zZJ2>HtUDcb?kw=3%4ZhbtRCcJ?8Txs!-VDdK_!8-{X252=;qQ16%%z zN6-yi{v9}08eVRQz3>FO!8HN)z`DUTf#L~t6E{I6SooUoZgQ;v1lCQi6@b9H39Z2M zL2c$bg``;j3ex# zg&f31>SjU@6`_Yxfqxq%ZbuVk@U4L)$lEA26I)WI&_!~RM1$o4;SCQMssh4xlJMGP zRY0gt65hLf7f1&a@(xNgSyAK&Aa$norvv{^O5E-IArbOUO7YZ^QnSCiNStLAfpD7w z)DgtR;4aG4L=e=wsJ1nNaDNxgZ?{e|f!}a1B_48KkT`j7513WYstY;~OiQ4b_4jJoo}WU(EHL%E1>xSgL+mq@P!~_23lRPeNA(Ga_zy?*$uO+X!(5-- zfZ0Gk5k-WX0f39BB=Dc4#Ir6Uyz}LgG?C)#rIaNc(h(A2%773NU>Fe~jE@jzIHwB` z5gj4>T4O3UpCS=$asvQHRBnK$q6q|BP@kfJe-2>k1RCIJ5@k-9OA0XJvhvfE&PKc7 zK1~?SAs6Tw5>;*!7jA|Tm23YQ!uvgp81FVf`+^rT7x>30@f;^&0+SE78F`HGxxunI zPQ-D-&n!#?LS+Dkl>vx~Jx-ZW77*0qR363v2rtLUzLHr9nRqG^Sc6cs%0@C10czfBH*V%0Zqa5%whzqyfXT1H$$s zrNj9F2<4Mh&fhFd#pV==z=iUp(l;#KmkV_wI@eU*aQEXELGuhRUbx+H`$@PAD5HS%?t zPV>Gz{^pNn#f#a{fEh0_+${uRl$V{PHI-C}r3SS8;f`D^J;DI}jVT*3Dqym*0s zio_pq%9i}P0i#Z;1y`IR-!>g@BZyNpqu_$zaz90jR=XfP1o2yvzmJ3PTo7(?nRNl9 z(x#}E2qticc_=ulzKV!t-bWRx&7?)Hq(5o zzjEqp=cKc_^cU^nZ?dQOH`&E!o}<&+-q2N|0srDlLZ%ZL!S9_EYK6fa@2*Hsy}Lrs z3FwzoUtXnO)b!V>6N9>u^4&VyzkA2#(SCf!k8j;RvZKn+Q*)-HtS$WId+LiV`l`mx p@cI=9_2pKS72@n{N%wWJ68{&diXb~GEEofJ$ zGIiH(X^4%Dh=aM<^-#OUah=!=c3X>d94Bcr&WsbBq^&dKj?*S_XWBZcU1!GibUK;o z@7#CaThxKf^bcnCci%a`bMCq4}3 zHIeovbLqpAqk=@d^w>~(co^P#$0jmknSAC1gfin^{z%#z^bfitIOvXzGr2riC*|$Ec1eNQQbW1)_@T6yJ?y25#)RSn zStdO?tY|a&oHv|4oSGcXdnYJ!I)u<$2twfVMLCQPT<|LHFlmKodBYTS*`Pk*(;XjhAHfWuO{hX^|VDpZ?+sW1U)D>_+J4h~JVHt~S=P`p*T)iDS#< zQX^@VL4(7pSq#c=?Pm-6uj?FxUMA-a+R6KKhgaCZ(*FFM4xnKJT1Rwk1BOPnRweB)@v*w!}>*V!L zUe}{<;$;Me?$XB^Auo4@$Lcf9aT5}7bC>C;-~mB|Rj}rEdR4C+FlIawl@H4y8p-?z=ve-7Dt!2m$!GPlpl+%KLOEf#Bml9m=R{9W;i1 zdniLEDU`q6%P0&T)S--$m#I0S{6B6&0&b>sD1o4z(xC)`n<<1cixbD(88Mna&*~4| zxN?Rt8FeJXAz2LMV18mUJ*YbT;NjG0E-V7p#j$b0$-RtIc(cw8o#9=6_W6H_N<6%sF zxjAk^0&X7HF$IG5aUD}2xOrTsr{h{vhWEft({qR}4M9-D3&c&FbYNymr>8?sPKW8K zc;@&B0r)tr(-R2F(>gtY;Nx^fV#rprzgzrbT*z(5_*r@JKr~Ujl6>h-XOX<~V6;Vk zw!|5jJ$RgpDsiDta5rigpE0_ZCgm%2yqdMiZ|`xc*it!j&8bR`qN)&uj$pci$-Y@d@WK}3nEwC!IA0ZLg->u|v zU$2qJCEu~!phAq)nDyFE>Pa;Xw*&}UHSNp9Hl>9Fu9F{2z8P9k0--JH5p}T&trdk< zUFAHnRcV2~L4M&8-k)qR<644>w4tOrK#*^!s}~(gp1YAI`QMN5<$X;dKh;Z9tX#`; z$Tzu_nBQvrdd5Qk*eT+k(;yarM~%-GdGt}fu&+h)_%pIa#{>vGEr<#6U`8%B+I$|0 z^kQe3*aRLm;#%d89_4owS~ZV9$67UyKgU}2*#hBgTlLuz@>8Z2XG?Z4=aR-U-wvHn z(&j-qOX%0AUwPmjx_%)NXd`M+_|OAqxXb zdwfaoj3iq-0tAxwt`*8f%(zZtmG2^@L#NXy`Vb1CW>lBiTfb7iI)wyX{up02(4~Xo zPoyqgNB%_W(scxcpmgavBIF093w5*v%oatwTfX=hZyV?i`RF*ib&w$e54&}cfxy?T zgG|Wh>qd|%iEwIeWTmWo97(j&Y*2f|8u(T=`e6eC-%5my4h0kQHe;Q?V@l=QoF;J# zc+|LCE6+U6mnPS0zxowByXOHtuWxY;~SO^X^gEq*nvwU%K zgXZuj&4yT`@(c*RY-skxQY8-u`s71r`LbkRC{MBI(>84ti$2(FRPxyCW_jfYyjFgE zmfOkAp%QI)bF4}mp$%`Yty7K5Ca^^|&+v}qmQbGZaf=Q(BuE4SZ&F5(N!w(_4|ttC zHv=QvLM6(OZ85);ZOZS+Hk9%@rGy?aAiq7sdy)g8JjHh)<~Ksyq*gJ|&?tJ8JQ8%f zJaU1rk%Q-8WV=2(+oXQ6z0pryASi9WC8<3_zt|zqo#V~P9ib8G7dv#Xv`y+4JJ2f| zlo4dkPWj$B-jv)K%G0RZ8SdPH{7&qgdZlf~+{kX}eTnaB->thO)*!!IcS#_~?{4o< zUD7u3RHM_b;S)2EDzBO0in$;hp_HIrtRshP4tz@IKvTfuMDt?y^A8y05N5tXEp4Ze+h% zCGYw^UsJHnQdrv`dRYp+{kq%Y8T9t!yGyOoD{~|Fo5}jPw>_21dlQr6s33Y9vCT5r zzCS#%GH~4A=yxnU1IPWXw`h)XH*!F6>`4DEIM!T8QVx;>AxSw%4umA-AUOb%RmzbH zH!>*S_%gpOIT$)#0r|n0s~xI<{9sj$KK6tg8ItqQ^QQJ8Gq~X;AU{;j7izoU530wHTNx_=V#`&~xgLpW9X(cm63^Ca#e zM?+d_9Y=L;LlE8`)om0Av`2LtCFIi{MH{7pj*AI+^d}M1(7ceBiH--YH z8~_5}SW}<6*AVjg#^!I-d=So3fv-~{(^2Zmrmn`0X zso@;gwG9c#AJ_LFZX%6ybPrmx9KQ*KUQ^r2g;AiklhYN>P2}7p-G=rgCv}Bm4f2z^ z!hs+^sqaDDM8}z;d(c2~D&(ibp3;>K3CK_321J$3DJawO&_$k1PV0)s8sw*SMFT;8 z8h3a~ZB8BMB&GHW>>`F;oD8i{-#Muh9M7P2QYSd4zVjd@c#T~C6q@IQI?M3@N)PHR z2ZGXr$Z~2P+(gqUQ1e)`tf1Ql)*xTdZ377M1+P|k7Re8v;-UcPh*EX> z=r?$Z!q5Yk-&QgK~+dtYPmygA&w%n&M~u5^!p09=@It# zfTu8aj>Y|x094WyHJTkg08i^1L@%NdN0D1kFms9g`IEd`{>LA4(E}JTp``E>U-NxC zWcLZ?`bPy-Fg?K*E!Ipx=NZ-a%GJJj1hG8NQ0f{&`#eLfYpCQ=?DV}Wj$*ei$Y-D7 z3vRzqv`=@l3q|`Ven7WcGthPV0>gcSZccIX^`iXEGkjUk#UcaxfOWCRfJOl5HfaWQ z0zhwpxLYy6-=`V%f`PTZkG5JtThI{NPc!rd4Wa!sLu2Sy+W1KD3^V7`?C;&;OK|K8 zYe6_UoO!0`47vuOTc_#JHUJx&RB^`9H>^uCdkGWzQjx&{!=)kvRnjHq1`$Rh0i55g zssqLP95dQfaZqhO$DG9~Z%bYKd1kzz(-!02dOk?oQcBy)LD~Yr+~q=$x4;m-9ONw^ z>|GA>77#994)T_upSPDOZ>e6(TQGPuiUS?*c z=A|qG3{;8uWrnXUbe`p=S%B`#487Xd1$u>NcVLy+W^%}H?0cS zzQT;Z&^yM>#k#`q%0R3YbOx_7{CSP^fRICgehw9Y5sz0{+@}SE?yGE`?*kyLyvo!_ zCMrC9jhTKY0D^;nwq~ZdyvDfCjHgh2jg^*(l{l+}YroEnZ!lKh>TS=CY&tSIeiVNT zk>9Lz8Vl6KaeJ~}XAZsfTULU6o@J(AnLscE=tlw&va>Aaw-G=Xnq~9o)r3^>@GAc9 zpqv7NDqx^WK3-)Q_!JC0h3eIEhLOKPn6}~CZ!qIC`Jd16_3j&#GIt8g#+Mq`ev_Hs zl^g$*4;0>HwlYlXIO{i=yNJjLg6vJ!*(b_>j>Xjj7ow@c~%=|u!)bIATXXGy);*E02^SpQOTg(njW53p0Z1I5h zgtqk-yXU0#1pVCp9<$yKJz?4ty?DE_W4iV=X8yhW>*x8p!Zl{AjDSbf(yy_3ZJL|9 z^flJKO>?8s+V3#y$04_=x%HyIOGrikj#)pn^e#<{cImI+?G9EVuKg}E{}H=f>fL=v z<}dT^z3(zxl^{Ka6YsLBq;`Um|6R87PVGblPW*&f?}bi8v=e&q4rKyD?=$n~@;8_H z=DqJTTeV?u)90G^S;H#LO=IAFw()l~w*|GIGV5m{x23uD;(+3gy7mXm{5L6I;QgQb zfZ3{rf;$TC4_M=Enwtj12W-=z=8l5qVd2cI^+D`7uJX){|fVJzgbu zeua1L{jg{SFBsN`MJu>q0)|#>SotNhJ_@ba+KOJ>uXey)`x9pVmwfjteBYK&n5{|# zJK*5{gq5iq6G3o)!dh499bh8azh>5_Avf3Dw0JuIBA?B_=sfuQ>?8T>#j($;FSK0$ zrBpur@7Au_7na1zD#WQS|Fi5rsL!(VWapp7;&S~N5tq-d6LEZ?eW=-~sgBWK5iMbq zm^6hPq!5AARjXsORjWm-%ifvo=@)+`tY6|&ul&vdQ8gRiBTCuAK2esM${jqGn#kj? z$l38+t&KnU$5&K$g#T$__O^S({>44F(m`3SiGOIJx=RA0NnT-b|3(FfE^>t}=nRAr QlPhdR_v{ZJ5KCJA7ru-eA^-pY diff --git a/managed/models/settings.go b/managed/models/settings.go index 08ead86d32..b55f238b84 100644 --- a/managed/models/settings.go +++ b/managed/models/settings.go @@ -21,6 +21,7 @@ import ( "github.com/aws/aws-sdk-go/aws/endpoints" ) +// Default values for settings. These values are used when settings are not set. const ( AdvisorsEnabledDefault = true AlertingEnabledDefault = true @@ -151,6 +152,7 @@ func (s *Settings) IsAzureDiscoverEnabled() bool { return AzureDiscoverEnabledDefault } +// IsAccessControlEnabled returns true if access control is enabled. func (s *Settings) IsAccessControlEnabled() bool { if s.AccessControl.Enabled != nil { return *s.AccessControl.Enabled From ff8cc4f895c1b7d6fd2a0e9d5dba665336005fbf Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 26 Dec 2023 14:48:12 +0200 Subject: [PATCH 18/20] PMM-8019 Fix tests --- .../services/management/backup/backups_service_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/managed/services/management/backup/backups_service_test.go b/managed/services/management/backup/backups_service_test.go index b02a2478cb..3c641a03ca 100644 --- a/managed/services/management/backup/backups_service_test.go +++ b/managed/services/management/backup/backups_service_test.go @@ -379,11 +379,11 @@ func TestScheduledBackups(t *testing.T) { task, err = models.FindScheduledTaskByID(db.Querier, res.ScheduledBackupId) require.NoError(t, err) data = task.Data.MySQLBackupTask - assert.Equal(t, changeReq.CronExpression, task.CronExpression) - assert.Equal(t, changeReq.Enabled, !task.Disabled) - assert.Equal(t, changeReq.Name, data.Name) - assert.Equal(t, changeReq.Description, data.Description) - assert.Equal(t, changeReq.Retries, data.Retries) + assert.Equal(t, *changeReq.CronExpression, task.CronExpression) + assert.Equal(t, *changeReq.Enabled, !task.Disabled) + assert.Equal(t, *changeReq.Name, data.Name) + assert.Equal(t, *changeReq.Description, data.Description) + assert.Equal(t, *changeReq.Retries, data.Retries) assert.Equal(t, changeReq.RetryInterval.AsDuration(), data.RetryInterval) }) From 87cb62efb51e0ed6b3bf2f38c5ce2a40751baa7c Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 26 Dec 2023 16:21:04 +0200 Subject: [PATCH 19/20] PMM-8019 Fix linters --- .golangci.yml | 5 +++-- agent/agents/cache/cache_test.go | 6 +++--- agent/utils/mongo_fix/mongo_fix_test.go | 4 ++-- managed/services/inventory/services.go | 2 +- managed/services/management/role_test.go | 12 ++++++------ managed/services/server/server_test.go | 6 +++--- managed/utils/pprof/pprof_test.go | 7 ++++--- managed/utils/tests/asserts.go | 4 ++-- 8 files changed, 24 insertions(+), 22 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a36a87a56f..b1b3db9ab7 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -81,11 +81,11 @@ linters: enable-all: true disable: # keep the rules sorted alpahbetically + - deadcode # unmaintained, we leverage `unused` + - dupl # we can't avoid duplicating code - execinquery # false positives only - exhaustivestruct # too annoying - exhaustruct # too many files to fix/nolint - - deadcode # unmaintained, we leverage `unused` - - dupl # we can't avoid duplicating code - funlen # useless - gochecknoglobals # mostly useless - gochecknoinits # we use init functions @@ -100,6 +100,7 @@ linters: - maligned # deprecated - nlreturn # too annoying - nosnakecase # deprecated + - protogetter # we need direct access to proto fields - rowserrcheck # disabled because of generics - scopelint # too many false positives - structcheck # replaced by unused diff --git a/agent/agents/cache/cache_test.go b/agent/agents/cache/cache_test.go index 6299f736bb..7b90eaca70 100644 --- a/agent/agents/cache/cache_test.go +++ b/agent/agents/cache/cache_test.go @@ -146,13 +146,13 @@ func TestCacheErrors(t *testing.T) { t.Parallel() var err error _, err = New(100, time.Second*100, 100, logrus.WithField("test", t.Name())) - assert.NotNil(t, err) + assert.Error(t, err) //nolint:testifylint _, err = New([]float64{}, time.Second*100, 100, logrus.WithField("test", t.Name())) - assert.NotNil(t, err) + assert.Error(t, err) //nolint:testifylint _, err = New(struct{}{}, time.Second*100, 100, logrus.WithField("test", t.Name())) - assert.NotNil(t, err) + assert.Error(t, err) //nolint:testifylint }) t.Run("WrongTypeOnRefresh", func(t *testing.T) { diff --git a/agent/utils/mongo_fix/mongo_fix_test.go b/agent/utils/mongo_fix/mongo_fix_test.go index 146a6135de..24afab1a7e 100644 --- a/agent/utils/mongo_fix/mongo_fix_test.go +++ b/agent/utils/mongo_fix/mongo_fix_test.go @@ -72,8 +72,8 @@ func TestClientOptionsForDSN(t *testing.T) { assert.Equal(t, err.Error(), tt.error) } else { assert.Empty(t, err) - assert.Equal(t, got.Auth.Username, tt.expectedUser) - assert.Equal(t, got.Auth.Password, tt.expectedPassword) + assert.Equal(t, tt.expectedUser, got.Auth.Username) + assert.Equal(t, tt.expectedPassword, got.Auth.Password) } }) } diff --git a/managed/services/inventory/services.go b/managed/services/inventory/services.go index 8c642ad2fa..282ccc4c11 100644 --- a/managed/services/inventory/services.go +++ b/managed/services/inventory/services.go @@ -75,7 +75,7 @@ func (ss *ServicesService) List(ctx context.Context, filters models.ServiceFilte return res, nil } -// ListActiveServiceTypes lists all active Service Types +// ListActiveServiceTypes lists all active Service Types. func (ss *ServicesService) ListActiveServiceTypes(ctx context.Context) ([]inventoryv1.ServiceType, error) { var types []models.ServiceType e := ss.db.InTransactionContext(ctx, nil, func(tx *reform.TX) error { diff --git a/managed/services/management/role_test.go b/managed/services/management/role_test.go index 2db7886db7..b5a66179a4 100644 --- a/managed/services/management/role_test.go +++ b/managed/services/management/role_test.go @@ -91,12 +91,12 @@ func TestRoleService(t *testing.T) { roles, err := s.ListRoles(ctx, &rolev1beta1.ListRolesRequest{}) require.NoError(t, err) - assert.Equal(t, roles.Roles[0].Title, "Role A") - assert.Equal(t, roles.Roles[0].Filter, "filter A") - assert.Equal(t, roles.Roles[0].Description, "Role A description") - assert.Equal(t, roles.Roles[1].Title, "Role B - updated") - assert.Equal(t, roles.Roles[1].Filter, "") - assert.Equal(t, roles.Roles[1].Description, "Role B description") + assert.Equal(t, "Role A", roles.Roles[0].Title) + assert.Equal(t, "filter A", roles.Roles[0].Filter) + assert.Equal(t, "Role A description", roles.Roles[0].Description) + assert.Equal(t, "Role B - updated", roles.Roles[1].Title) + assert.Empty(t, roles.Roles[1].Filter) + assert.Equal(t, "Role B description", roles.Roles[1].Description) }) t.Run("Shall return not found", func(t *testing.T) { diff --git a/managed/services/server/server_test.go b/managed/services/server/server_test.go index 2807a0d096..da85f5f791 100644 --- a/managed/services/server/server_test.go +++ b/managed/services/server/server_test.go @@ -100,8 +100,8 @@ func TestServer(t *testing.T) { "PMM_PUBLIC_ADDRESS=1.2.3.4:5678", }) require.Empty(t, errs) - assert.Equal(t, true, *s.envSettings.EnableUpdates) - assert.Equal(t, true, *s.envSettings.EnableTelemetry) + assert.True(t, *s.envSettings.EnableUpdates) + assert.True(t, *s.envSettings.EnableTelemetry) assert.Equal(t, time.Second, s.envSettings.MetricsResolutions.HR) assert.Equal(t, 2*time.Second, s.envSettings.MetricsResolutions.MR) assert.Equal(t, 3*time.Second, s.envSettings.MetricsResolutions.LR) @@ -117,7 +117,7 @@ func TestServer(t *testing.T) { "DATA_RETENTION=360H", }) require.Empty(t, errs) - assert.Equal(t, true, *s.envSettings.EnableTelemetry) + assert.True(t, *s.envSettings.EnableTelemetry) assert.Equal(t, 3*time.Second, s.envSettings.MetricsResolutions.HR) assert.Equal(t, 15*24*time.Hour, s.envSettings.DataRetention) }) diff --git a/managed/utils/pprof/pprof_test.go b/managed/utils/pprof/pprof_test.go index 1dcc59a4ba..5b1e53e546 100644 --- a/managed/utils/pprof/pprof_test.go +++ b/managed/utils/pprof/pprof_test.go @@ -23,6 +23,7 @@ import ( "time" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestHeap(t *testing.T) { @@ -30,15 +31,15 @@ func TestHeap(t *testing.T) { t.Run("Heap test", func(t *testing.T) { t.Parallel() heapBytes, err := Heap(true) - assert.NoError(t, err) + require.NoError(t, err) // read gzip reader, err := gzip.NewReader(bytes.NewBuffer(heapBytes)) - assert.NoError(t, err) + require.NoError(t, err) var resB bytes.Buffer _, err = resB.ReadFrom(reader) - assert.NoError(t, err) + require.NoError(t, err) assert.NotEmpty(t, resB.Bytes()) }) } diff --git a/managed/utils/tests/asserts.go b/managed/utils/tests/asserts.go index cb52d9296a..9471816420 100644 --- a/managed/utils/tests/asserts.go +++ b/managed/utils/tests/asserts.go @@ -33,7 +33,7 @@ func AssertGRPCError(tb testing.TB, expected *status.Status, actual error) { return } err := s.Err() - if !assert.NotNil(tb, err) { + if assert.NoError(tb, err) { //nolint:testifylint return } assert.Equal(tb, expected.Err().Error(), err.Error()) // gives the best error message @@ -61,5 +61,5 @@ func AssertGRPCErrorCode(tb testing.TB, expectedCode codes.Code, actual error) { return } - assert.Equal(tb, s.Code(), expectedCode) + assert.Equal(tb, expectedCode, s.Code()) } From ca6219a2c717cf91c4cd4206128c05a5fe70f205 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 26 Dec 2023 16:39:43 +0200 Subject: [PATCH 20/20] PMM-8019 Fix --- managed/utils/tests/asserts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/managed/utils/tests/asserts.go b/managed/utils/tests/asserts.go index 9471816420..a78cd8483e 100644 --- a/managed/utils/tests/asserts.go +++ b/managed/utils/tests/asserts.go @@ -33,7 +33,7 @@ func AssertGRPCError(tb testing.TB, expected *status.Status, actual error) { return } err := s.Err() - if assert.NoError(tb, err) { //nolint:testifylint + if !assert.Error(tb, err) { //nolint:testifylint return } assert.Equal(tb, expected.Err().Error(), err.Error()) // gives the best error message