From a77286524ca4cd0cb839135db0e51fd758119afb Mon Sep 17 00:00:00 2001 From: Michal Kralik Date: Mon, 5 Jun 2023 14:07:40 +0200 Subject: [PATCH 001/123] PMM-7438: fix reading long log lines (#1957) * PMM-7438: fix reading long log lines * Fix line counting * Support log files without new line ending --- managed/services/supervisord/logs.go | 23 ++++++++++++----- managed/services/supervisord/logs_test.go | 30 +++++++++++++++++++++-- 2 files changed, 45 insertions(+), 8 deletions(-) diff --git a/managed/services/supervisord/logs.go b/managed/services/supervisord/logs.go index a9f8d628ca..ab558f3e34 100644 --- a/managed/services/supervisord/logs.go +++ b/managed/services/supervisord/logs.go @@ -302,13 +302,24 @@ func readLog(name string, maxLines int, maxBytes int64) ([]byte, time.Time, erro } r := ring.New(maxLines) - s := bufio.NewScanner(f) - for s.Scan() { - r.Value = []byte(s.Text() + "\n") + reader := bufio.NewReader(f) + for { + b, err := reader.ReadBytes('\n') + if err == io.EOF { + // A special case when the last line does not end with a new line + if len(b) != 0 { + r.Value = b + r = r.Next() + } + break + } + + r.Value = b r = r.Next() - } - if err = s.Err(); err != nil { - return nil, m, errors.WithStack(err) + + if err != nil { + return nil, m, errors.WithStack(err) + } } res := make([]byte, 0, maxBytes) diff --git a/managed/services/supervisord/logs_test.go b/managed/services/supervisord/logs_test.go index 265e17c112..d0b18530c4 100644 --- a/managed/services/supervisord/logs_test.go +++ b/managed/services/supervisord/logs_test.go @@ -70,11 +70,19 @@ var commonExpectedFiles = []string{ func TestReadLog(t *testing.T) { f, err := os.CreateTemp("", "pmm-managed-supervisord-tests-") require.NoError(t, err) + fNoNewLineEnding, err := os.CreateTemp("", "pmm-managed-supervisord-tests-") + require.NoError(t, err) + for i := 0; i < 10; i++ { - fmt.Fprintf(f, "line #%03d\n", i) // 10 bytes + fmt.Fprintf(f, "line #%03d\n", i) // 10 bytes + fmt.Fprintf(fNoNewLineEnding, "line #%03d\n", i) // 10 bytes } + fmt.Fprintf(fNoNewLineEnding, "some string without new line") require.NoError(t, f.Close()) - defer os.Remove(f.Name()) //nolint:errcheck + require.NoError(t, fNoNewLineEnding.Close()) + + defer os.Remove(f.Name()) //nolint:errcheck + defer os.Remove(fNoNewLineEnding.Name()) //nolint:errcheck t.Run("LimitByLines", func(t *testing.T) { b, m, err := readLog(f.Name(), 5, 500) @@ -85,6 +93,15 @@ func TestReadLog(t *testing.T) { assert.Equal(t, expected, actual) }) + t.Run("LimitByLines - no new line ending", func(t *testing.T) { + b, m, err := readLog(fNoNewLineEnding.Name(), 5, 500) + require.NoError(t, err) + assert.WithinDuration(t, time.Now(), m, 5*time.Second) + expected := []string{"line #006", "line #007", "line #008", "line #009", "some string without new line"} + actual := strings.Split(strings.TrimSpace(string(b)), "\n") + assert.Equal(t, expected, actual) + }) + t.Run("LimitByBytes", func(t *testing.T) { b, m, err := readLog(f.Name(), 500, 5) require.NoError(t, err) @@ -93,6 +110,15 @@ func TestReadLog(t *testing.T) { actual := strings.Split(strings.TrimSpace(string(b)), "\n") assert.Equal(t, expected, actual) }) + + t.Run("LimitByBytes - no new line ending", func(t *testing.T) { + b, m, err := readLog(fNoNewLineEnding.Name(), 500, 5) + require.NoError(t, err) + assert.WithinDuration(t, time.Now(), m, 5*time.Second) + expected := []string{"line"} + actual := strings.Split(strings.TrimSpace(string(b)), "\n") + assert.Equal(t, expected, actual) + }) } func TestAddAdminSummary(t *testing.T) { From 2b965137a0c6d237d848eb7adeef6216fbe0dbf2 Mon Sep 17 00:00:00 2001 From: Pavel Khripkov <94828791+PavelKhripkov@users.noreply.github.com> Date: Mon, 5 Jun 2023 15:25:49 +0300 Subject: [PATCH 002/123] PMM-11645 change list-unit command to list-unit-files. (#2150) Co-authored-by: Artem Gavrilov --- agent/runner/jobs/mysql_restore_job.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/runner/jobs/mysql_restore_job.go b/agent/runner/jobs/mysql_restore_job.go index e355b9fee6..761ce2ef5e 100644 --- a/agent/runner/jobs/mysql_restore_job.go +++ b/agent/runner/jobs/mysql_restore_job.go @@ -433,7 +433,7 @@ func getMysqlServiceName(ctx context.Context) (string, error) { ctx, cancel := context.WithTimeout(ctx, systemctlTimeout) defer cancel() - cmd := exec.CommandContext(ctx, "systemctl", "list-units", "--type=service") + cmd := exec.CommandContext(ctx, "systemctl", "list-unit-files", "--type=service") output, err := cmd.CombinedOutput() if err != nil { return "", errors.Wrapf(err, "failed to list system services, output: %s", string(output)) From ad5c49c52ce15f6118bd96dc56feddf6cbf7f994 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Mon, 5 Jun 2023 15:49:51 +0300 Subject: [PATCH 003/123] PMM-7 enable `tparallel` linter rule (#2225) * PMM-7 enable tparallel linter rule * PMM-7 more fixes of lint warnings * PMM-7 revert tparallel on some tests * PMM-7 revert more fixes as they do not pass * PMM-7 revert some changes * PMM-7 revert checks_test.go * PMM-7 revert checks_test.go * PMM-7 revert more prior corrections * PMM-7 fix install-dev-tools script * PMM-7 revert one more parallel run * PMM-7 restore install-dev-tools * PMM-7 revert tparallel for a starlark test * PMM-7 follow up on review comments * PMM-7 fix TestRDSExporter * PMM-7 try several tparallel fixes * PMM-7 fix parallel api tests * PMM-7 disable parallel run for TestChannelsAPI * PMM-7 fix yum being unable to use epel's metalink * PMM-7 disable parallel run for TestAzureDatabaseExporter * PMM-7 disable https for the metalink * PMM-7 disable parrallel test for TestAzureDatabaseExporter --- .golangci.yml | 2 -- agent/agents/cache/cache_test.go | 2 ++ .../parser/continuous_file_reader_test.go | 1 + agent/agents/mysql/slowlog/parser/parser_test.go | 1 + agent/agents/mysql/slowlog/slowlog_test.go | 3 ++- agent/agents/process/process_test.go | 1 - agent/agents/supervisor/supervisor_test.go | 1 + agent/client/client_test.go | 2 ++ agent/connectionuptime/service_test.go | 3 +++ .../runner/actions/mysql_explain_action_test.go | 16 +++++++++++++++- .../actions/mysql_query_select_action_test.go | 8 +++++++- .../actions/mysql_query_show_action_test.go | 3 ++- .../mysql_show_create_table_action_test.go | 5 ++++- .../actions/mysql_show_index_action_test.go | 5 ++++- .../mysql_show_table_status_action_test.go | 5 ++++- .../postgresql_query_select_action_test.go | 5 ++++- .../actions/postgresql_query_show_action_test.go | 3 ++- .../postgresql_show_create_table_action_test.go | 6 +++++- .../actions/postgresql_show_index_action_test.go | 6 +++++- .../agents_azure_database_exporter_test.go | 5 +++-- .../inventory/agents_external_exporter_test.go | 1 + .../inventory/agents_mongodb_exporter_test.go | 1 + .../inventory/agents_mysqld_exporter_test.go | 1 + api-tests/inventory/agents_node_exporter_test.go | 1 + .../inventory/agents_postgres_exporter_test.go | 1 + .../inventory/agents_proxysql_exporter_test.go | 1 + api-tests/inventory/agents_rds_exporter_test.go | 3 +-- api-tests/inventory/agents_test.go | 5 +++++ api-tests/inventory/nodes_test.go | 6 ++++++ api-tests/inventory/services_test.go | 8 ++++++++ api-tests/management/alerting/alerting_test.go | 1 + api-tests/management/ia/channels_test.go | 4 +++- api-tests/management/ia/rules_test.go | 1 + api-tests/server/auth_test.go | 4 ++++ api-tests/server/panics_test.go | 1 + api-tests/server/readyz_test.go | 1 + api-tests/server/version_test.go | 1 + managed/cmd/pmm-managed-starlark/main_test.go | 2 +- managed/models/check_settings_helper_test.go | 6 +++--- managed/models/models_json_test.go | 2 +- managed/models/postgresql_version_test.go | 3 ++- managed/models/restore_history_helpers_test.go | 1 + managed/services/agents/agentversion_test.go | 1 + managed/services/agents/jobs.go | 2 +- managed/services/agents/proxysql_test.go | 1 + managed/services/agents/versioner_test.go | 4 ++++ .../backup/compatibility_service_test.go | 8 ++++++++ managed/services/checks/checks_test.go | 3 +-- managed/services/checks/funcs_test.go | 1 + managed/services/grafana/auth_server_test.go | 7 ++++--- .../services/management/alerting/service_test.go | 2 ++ .../management/dbaas/components_service_test.go | 1 - .../management/dbaas/kubernetes_server_test.go | 2 +- .../management/dbaas/pxc_cluster_service_test.go | 4 ++-- .../dbaas/version_service_client_test.go | 2 +- managed/services/server/server_test.go | 2 ++ managed/services/supervisord/maintail_test.go | 1 + managed/services/supervisord/supervisord_test.go | 7 +++++++ .../services/telemetry/distribution_util_test.go | 2 ++ managed/services/telemetry/telemetry_test.go | 1 + managed/utils/pprof/pprof_test.go | 3 +++ update/.devcontainer/install-dev-tools.sh | 2 ++ vmproxy/main_test.go | 1 + 63 files changed, 159 insertions(+), 36 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index d53f23da50..3fa6f65321 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -99,9 +99,7 @@ linters: # TODO: carefully review all the rules below and either fix the code # or leave disabled and provide a reason why - - paralleltest - tagliatelle - - tparallel - gocritic - godot - godox diff --git a/agent/agents/cache/cache_test.go b/agent/agents/cache/cache_test.go index 5a1e937826..fd82ab594a 100644 --- a/agent/agents/cache/cache_test.go +++ b/agent/agents/cache/cache_test.go @@ -34,6 +34,7 @@ type someType struct { type innerStruct struct{ float64 } func TestCache(t *testing.T) { + t.Parallel() set1 := map[int64]*someType{ 1: {}, 2: {}, @@ -140,6 +141,7 @@ func TestCache(t *testing.T) { } func TestCacheErrors(t *testing.T) { + t.Parallel() t.Run("WrongTypeOnNew", func(t *testing.T) { t.Parallel() var err error diff --git a/agent/agents/mysql/slowlog/parser/continuous_file_reader_test.go b/agent/agents/mysql/slowlog/parser/continuous_file_reader_test.go index 0912591c72..d2190bc7e9 100644 --- a/agent/agents/mysql/slowlog/parser/continuous_file_reader_test.go +++ b/agent/agents/mysql/slowlog/parser/continuous_file_reader_test.go @@ -32,6 +32,7 @@ func cleanup(t *testing.T, files []string) { } func TestContinuousFileReader(t *testing.T) { + t.Parallel() t.Run("Normal", func(t *testing.T) { t.Parallel() diff --git a/agent/agents/mysql/slowlog/parser/parser_test.go b/agent/agents/mysql/slowlog/parser/parser_test.go index c3a68bf315..2e30d4db9f 100644 --- a/agent/agents/mysql/slowlog/parser/parser_test.go +++ b/agent/agents/mysql/slowlog/parser/parser_test.go @@ -66,6 +66,7 @@ func TestParserGolden(t *testing.T) { goldenFile := strings.TrimSuffix(file, ".log") + ".json" name := strings.TrimSuffix(filepath.Base(file), ".log") t.Run(name, func(t *testing.T) { + t.Parallel() opts := log.Options{ DefaultLocation: time.UTC, } diff --git a/agent/agents/mysql/slowlog/slowlog_test.go b/agent/agents/mysql/slowlog/slowlog_test.go index 6e0b338ded..b514c56bf3 100644 --- a/agent/agents/mysql/slowlog/slowlog_test.go +++ b/agent/agents/mysql/slowlog/slowlog_test.go @@ -113,8 +113,9 @@ func TestSlowLogMakeBuckets(t *testing.T) { } func TestSlowLog(t *testing.T) { + t.Parallel() sqlDB := tests.OpenTestMySQL(t) - defer sqlDB.Close() //nolint:errcheck + t.Cleanup(func() { sqlDB.Close() }) //nolint:errcheck q := reform.NewDB(sqlDB, mysql.Dialect, reform.NewPrintfLogger(t.Logf)).WithTag(queryTag) ctx := context.Background() diff --git a/agent/agents/process/process_test.go b/agent/agents/process/process_test.go index 749ccd5abe..719d23138e 100644 --- a/agent/agents/process/process_test.go +++ b/agent/agents/process/process_test.go @@ -62,7 +62,6 @@ func build(t *testing.T, tag string, fileName string, outputFile string) *exec.C func setup(t *testing.T) (context.Context, context.CancelFunc, *logrus.Entry) { t.Helper() - t.Parallel() ctx, cancel := context.WithCancel(context.Background()) l := logrus.WithField("test", t.Name()) diff --git a/agent/agents/supervisor/supervisor_test.go b/agent/agents/supervisor/supervisor_test.go index 4432c69d8f..33673f0462 100644 --- a/agent/agents/supervisor/supervisor_test.go +++ b/agent/agents/supervisor/supervisor_test.go @@ -280,6 +280,7 @@ func TestFilter(t *testing.T) { } func TestSupervisorProcessParams(t *testing.T) { + t.Parallel() setup := func(t *testing.T) (*Supervisor, func()) { t.Helper() diff --git a/agent/client/client_test.go b/agent/client/client_test.go index 10a551e97d..afb17d091b 100644 --- a/agent/client/client_test.go +++ b/agent/client/client_test.go @@ -76,6 +76,8 @@ func setup(t *testing.T, connect func(agentpb.Agent_ConnectServer) error) (port } func TestClient(t *testing.T) { + t.Parallel() + t.Run("NoAddress", func(t *testing.T) { t.Parallel() ctx, cancel := context.WithCancel(context.Background()) diff --git a/agent/connectionuptime/service_test.go b/agent/connectionuptime/service_test.go index 5d562b63e4..50ebd59b22 100644 --- a/agent/connectionuptime/service_test.go +++ b/agent/connectionuptime/service_test.go @@ -26,6 +26,7 @@ import ( ) func TestConnectionUpTime(t *testing.T) { + t.Parallel() now := time.Now() tests := []struct { name string @@ -175,6 +176,7 @@ func TestConnectionUpTime(t *testing.T) { } func TestConnectionUpTimeWithUpdatingConnectionUptime(t *testing.T) { + t.Parallel() now := time.Now() tests := []struct { name string @@ -269,6 +271,7 @@ func compareFloatWithTolerance(a, b float32) bool { } func TestCalculationConnectionUpTimeWhenCleanupMethodIsNotCalled(t *testing.T) { + t.Parallel() now := time.Now() tests := []struct { name string diff --git a/agent/runner/actions/mysql_explain_action_test.go b/agent/runner/actions/mysql_explain_action_test.go index 1e32edfd8d..5ee6843eb2 100644 --- a/agent/runner/actions/mysql_explain_action_test.go +++ b/agent/runner/actions/mysql_explain_action_test.go @@ -37,7 +37,7 @@ func TestMySQLExplain(t *testing.T) { dsn := tests.GetTestMySQLDSN(t) sqlDB := tests.OpenTestMySQL(t) - defer sqlDB.Close() //nolint:errcheck + t.Cleanup(func() { sqlDB.Close() }) //nolint:errcheck q := reform.NewDB(sqlDB, mysql.Dialect, reform.NewPrintfLogger(t.Logf)).WithTag(queryTag) ctx := context.Background() @@ -46,6 +46,7 @@ func TestMySQLExplain(t *testing.T) { const query = "SELECT * FROM city ORDER BY Population" t.Run("Default", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLExplainParams{ Dsn: dsn, Query: query, @@ -72,6 +73,7 @@ func TestMySQLExplain(t *testing.T) { }) t.Run("JSON", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLExplainParams{ Dsn: dsn, Query: query, @@ -116,6 +118,8 @@ func TestMySQLExplain(t *testing.T) { }) t.Run("TraditionalJSON", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLExplainParams{ Dsn: dsn, Query: query, @@ -157,6 +161,8 @@ func TestMySQLExplain(t *testing.T) { }) t.Run("Error", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLExplainParams{ Dsn: "pmm-agent:pmm-agent-wrong-password@tcp(127.0.0.1:3306)/world", OutputFormat: agentpb.MysqlExplainOutputFormat_MYSQL_EXPLAIN_OUTPUT_FORMAT_DEFAULT, @@ -171,6 +177,8 @@ func TestMySQLExplain(t *testing.T) { }) t.Run("DML Query Insert", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLExplainParams{ Dsn: dsn, Query: `INSERT INTO city (Name) VALUES ('Rosario')`, @@ -190,6 +198,8 @@ func TestMySQLExplain(t *testing.T) { }) t.Run("LittleBobbyTables", func(t *testing.T) { + t.Parallel() + checkCity := func(t *testing.T) { t.Helper() @@ -200,6 +210,8 @@ func TestMySQLExplain(t *testing.T) { } t.Run("Drop", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLExplainParams{ Dsn: dsn, Query: `SELECT 1; DROP TABLE city; --`, @@ -218,6 +230,8 @@ func TestMySQLExplain(t *testing.T) { }) t.Run("Delete", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLExplainParams{ Dsn: dsn, Query: `DELETE FROM city`, diff --git a/agent/runner/actions/mysql_query_select_action_test.go b/agent/runner/actions/mysql_query_select_action_test.go index 4afe4acdee..30d778d3d4 100644 --- a/agent/runner/actions/mysql_query_select_action_test.go +++ b/agent/runner/actions/mysql_query_select_action_test.go @@ -32,9 +32,11 @@ func TestMySQLQuerySelect(t *testing.T) { dsn := tests.GetTestMySQLDSN(t) db := tests.OpenTestMySQL(t) - defer db.Close() //nolint:errcheck + t.Cleanup(func() { db.Close() }) //nolint:errcheck t.Run("Default", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLQuerySelectParams{ Dsn: dsn, Query: "COUNT(*) AS count FROM mysql.user WHERE plugin NOT IN ('caching_sha2_password')", @@ -55,6 +57,8 @@ func TestMySQLQuerySelect(t *testing.T) { }) t.Run("Binary", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLQuerySelectParams{ Dsn: dsn, Query: `x'0001feff' AS bytes`, @@ -78,6 +82,8 @@ func TestMySQLQuerySelect(t *testing.T) { }) t.Run("LittleBobbyTables", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_MySQLQuerySelectParams{ Dsn: dsn, Query: "* FROM city; DROP TABLE city; --", diff --git a/agent/runner/actions/mysql_query_show_action_test.go b/agent/runner/actions/mysql_query_show_action_test.go index bb5fa68963..f2baefee7d 100644 --- a/agent/runner/actions/mysql_query_show_action_test.go +++ b/agent/runner/actions/mysql_query_show_action_test.go @@ -32,9 +32,10 @@ func TestMySQLQueryShow(t *testing.T) { dsn := tests.GetTestMySQLDSN(t) db := tests.OpenTestMySQL(t) - defer db.Close() //nolint:errcheck + t.Cleanup(func() { db.Close() }) //nolint:errcheck t.Run("Default", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLQueryShowParams{ Dsn: dsn, Query: "VARIABLES", diff --git a/agent/runner/actions/mysql_show_create_table_action_test.go b/agent/runner/actions/mysql_show_create_table_action_test.go index 586608b571..f61e7abd3a 100644 --- a/agent/runner/actions/mysql_show_create_table_action_test.go +++ b/agent/runner/actions/mysql_show_create_table_action_test.go @@ -35,7 +35,7 @@ func TestMySQLShowCreateTable(t *testing.T) { dsn := tests.GetTestMySQLDSN(t) sqlDB := tests.OpenTestMySQL(t) - defer sqlDB.Close() //nolint:errcheck + t.Cleanup(func() { sqlDB.Close() }) //nolint:errcheck q := reform.NewDB(sqlDB, mysql.Dialect, reform.NewPrintfLogger(t.Logf)).WithTag(queryTag) ctx := context.Background() @@ -43,6 +43,7 @@ func TestMySQLShowCreateTable(t *testing.T) { t.Logf("version = %q, vendor = %q", mySQLVersion, mySQLVendor) t.Run("Default", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowCreateTableParams{ Dsn: dsn, Table: "city", @@ -121,6 +122,7 @@ CREATE TABLE "city" ( }) t.Run("Error", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowCreateTableParams{ Dsn: dsn, Table: "no_such_table", @@ -134,6 +136,7 @@ CREATE TABLE "city" ( }) t.Run("LittleBobbyTables", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowCreateTableParams{ Dsn: dsn, Table: `city"; DROP TABLE city; --`, diff --git a/agent/runner/actions/mysql_show_index_action_test.go b/agent/runner/actions/mysql_show_index_action_test.go index 369b2601f4..9ddf0f7ed9 100644 --- a/agent/runner/actions/mysql_show_index_action_test.go +++ b/agent/runner/actions/mysql_show_index_action_test.go @@ -35,13 +35,14 @@ func TestMySQLShowIndex(t *testing.T) { dsn := tests.GetTestMySQLDSN(t) sqlDB := tests.OpenTestMySQL(t) - defer sqlDB.Close() //nolint:errcheck + t.Cleanup(func() { sqlDB.Close() }) //nolint:errcheck q := reform.NewDB(sqlDB, mysql.Dialect, reform.NewPrintfLogger(t.Logf)).WithTag(queryTag) ctx := context.Background() mySQLVersion, mySQLVendor, _ := version.GetMySQLVersion(ctx, q) t.Run("Default", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowIndexParams{ Dsn: dsn, Table: "city", @@ -102,6 +103,7 @@ func TestMySQLShowIndex(t *testing.T) { }) t.Run("Error", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowIndexParams{ Dsn: dsn, Table: "no_such_table", @@ -115,6 +117,7 @@ func TestMySQLShowIndex(t *testing.T) { }) t.Run("LittleBobbyTables", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowIndexParams{ Dsn: dsn, Table: `city"; DROP TABLE city; --`, diff --git a/agent/runner/actions/mysql_show_table_status_action_test.go b/agent/runner/actions/mysql_show_table_status_action_test.go index 17680ed485..9c82418364 100644 --- a/agent/runner/actions/mysql_show_table_status_action_test.go +++ b/agent/runner/actions/mysql_show_table_status_action_test.go @@ -32,9 +32,10 @@ func TestShowTableStatus(t *testing.T) { dsn := tests.GetTestMySQLDSN(t) db := tests.OpenTestMySQL(t) - defer db.Close() //nolint:errcheck + t.Cleanup(func() { db.Close() }) //nolint:errcheck t.Run("Default", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowTableStatusParams{ Dsn: dsn, Table: "city", @@ -79,6 +80,7 @@ func TestShowTableStatus(t *testing.T) { }) t.Run("Error", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowTableStatusParams{ Dsn: dsn, Table: "no_such_table", @@ -92,6 +94,7 @@ func TestShowTableStatus(t *testing.T) { }) t.Run("LittleBobbyTables", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_MySQLShowTableStatusParams{ Dsn: dsn, Table: `city"; DROP TABLE city; --`, diff --git a/agent/runner/actions/postgresql_query_select_action_test.go b/agent/runner/actions/postgresql_query_select_action_test.go index f25ab986e9..74451f4efc 100644 --- a/agent/runner/actions/postgresql_query_select_action_test.go +++ b/agent/runner/actions/postgresql_query_select_action_test.go @@ -33,9 +33,10 @@ func TestPostgreSQLQuerySelect(t *testing.T) { dsn := tests.GetTestPostgreSQLDSN(t) db := tests.OpenTestPostgreSQL(t) - defer db.Close() //nolint:errcheck + t.Cleanup(func() { db.Close() }) //nolint:errcheck t.Run("Default", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLQuerySelectParams{ Dsn: dsn, Query: "* FROM pg_extension", @@ -68,6 +69,7 @@ func TestPostgreSQLQuerySelect(t *testing.T) { }) t.Run("Binary", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLQuerySelectParams{ Dsn: dsn, Query: `'\x0001feff'::bytea AS bytes`, @@ -91,6 +93,7 @@ func TestPostgreSQLQuerySelect(t *testing.T) { }) t.Run("LittleBobbyTables", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLQuerySelectParams{ Dsn: dsn, Query: "* FROM city; DROP TABLE city CASCADE; --", diff --git a/agent/runner/actions/postgresql_query_show_action_test.go b/agent/runner/actions/postgresql_query_show_action_test.go index 3ff31771ba..e95c8b52ed 100644 --- a/agent/runner/actions/postgresql_query_show_action_test.go +++ b/agent/runner/actions/postgresql_query_show_action_test.go @@ -33,9 +33,10 @@ func TestPostgreSQLQueryShow(t *testing.T) { dsn := tests.GetTestPostgreSQLDSN(t) db := tests.OpenTestPostgreSQL(t) - defer db.Close() //nolint:errcheck + t.Cleanup(func() { db.Close() }) //nolint:errcheck t.Run("Default", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLQueryShowParams{ Dsn: dsn, } diff --git a/agent/runner/actions/postgresql_show_create_table_action_test.go b/agent/runner/actions/postgresql_show_create_table_action_test.go index 695042b989..ba74a95304 100644 --- a/agent/runner/actions/postgresql_show_create_table_action_test.go +++ b/agent/runner/actions/postgresql_show_create_table_action_test.go @@ -32,9 +32,10 @@ func TestPostgreSQLShowCreateTable(t *testing.T) { dsn := tests.GetTestPostgreSQLDSN(t) db := tests.OpenTestPostgreSQL(t) - defer db.Close() //nolint:errcheck + t.Cleanup(func() { db.Close() }) //nolint:errcheck t.Run("With Schema Name", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLShowCreateTableParams{ Dsn: dsn, Table: "public.country", @@ -77,6 +78,7 @@ Referenced by: }) t.Run("Without constraints", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLShowCreateTableParams{ Dsn: dsn, Table: "city", @@ -105,6 +107,7 @@ Referenced by: }) t.Run("Without references", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLShowCreateTableParams{ Dsn: dsn, Table: "countrylanguage", @@ -132,6 +135,7 @@ Foreign-key constraints: }) t.Run("LittleBobbyTables", func(t *testing.T) { + t.Parallel() params := &agentpb.StartActionRequest_PostgreSQLShowCreateTableParams{ Dsn: dsn, Table: `city; DROP TABLE city; --`, diff --git a/agent/runner/actions/postgresql_show_index_action_test.go b/agent/runner/actions/postgresql_show_index_action_test.go index 1ff794e914..32daae5bf3 100644 --- a/agent/runner/actions/postgresql_show_index_action_test.go +++ b/agent/runner/actions/postgresql_show_index_action_test.go @@ -33,9 +33,11 @@ func TestPostgreSQLShowIndex(t *testing.T) { dsn := tests.GetTestPostgreSQLDSN(t) db := tests.OpenTestPostgreSQL(t) - defer db.Close() //nolint:errcheck + t.Cleanup(func() { db.Close() }) //nolint:errcheck t.Run("Default", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_PostgreSQLShowIndexParams{ Dsn: dsn, Table: "city", @@ -60,6 +62,8 @@ func TestPostgreSQLShowIndex(t *testing.T) { }) t.Run("WithSchemaName", func(t *testing.T) { + t.Parallel() + params := &agentpb.StartActionRequest_PostgreSQLShowIndexParams{ Dsn: dsn, Table: "public.city", diff --git a/api-tests/inventory/agents_azure_database_exporter_test.go b/api-tests/inventory/agents_azure_database_exporter_test.go index 172bf443f4..8762c1866a 100644 --- a/api-tests/inventory/agents_azure_database_exporter_test.go +++ b/api-tests/inventory/agents_azure_database_exporter_test.go @@ -27,10 +27,11 @@ import ( "github.com/percona/pmm/api/inventorypb/json/client/agents" ) -func TestAzureDatabaseExporter(t *testing.T) { +func TestAzureDatabaseExporter(t *testing.T) { //nolint:tparallel + // TODO Fix this test to run in parallel. + // t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() - genericNodeID := pmmapitests.AddGenericNode(t, pmmapitests.TestString(t, "")).NodeID require.NotEmpty(t, genericNodeID) defer pmmapitests.RemoveNodes(t, genericNodeID) diff --git a/api-tests/inventory/agents_external_exporter_test.go b/api-tests/inventory/agents_external_exporter_test.go index d1e35739ef..a39632cc46 100644 --- a/api-tests/inventory/agents_external_exporter_test.go +++ b/api-tests/inventory/agents_external_exporter_test.go @@ -29,6 +29,7 @@ import ( ) func TestExternalExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/agents_mongodb_exporter_test.go b/api-tests/inventory/agents_mongodb_exporter_test.go index 2ed805374e..3485be366a 100644 --- a/api-tests/inventory/agents_mongodb_exporter_test.go +++ b/api-tests/inventory/agents_mongodb_exporter_test.go @@ -29,6 +29,7 @@ import ( ) func TestMongoDBExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/agents_mysqld_exporter_test.go b/api-tests/inventory/agents_mysqld_exporter_test.go index fcfa1bd31e..963cbb7781 100644 --- a/api-tests/inventory/agents_mysqld_exporter_test.go +++ b/api-tests/inventory/agents_mysqld_exporter_test.go @@ -29,6 +29,7 @@ import ( ) func TestMySQLdExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/agents_node_exporter_test.go b/api-tests/inventory/agents_node_exporter_test.go index e68cdcb548..f1e66e7086 100644 --- a/api-tests/inventory/agents_node_exporter_test.go +++ b/api-tests/inventory/agents_node_exporter_test.go @@ -28,6 +28,7 @@ import ( ) func TestNodeExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/agents_postgres_exporter_test.go b/api-tests/inventory/agents_postgres_exporter_test.go index e9acc16319..d81f5c80e4 100644 --- a/api-tests/inventory/agents_postgres_exporter_test.go +++ b/api-tests/inventory/agents_postgres_exporter_test.go @@ -29,6 +29,7 @@ import ( ) func TestPostgresExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/agents_proxysql_exporter_test.go b/api-tests/inventory/agents_proxysql_exporter_test.go index edd57ab1e5..472360232e 100644 --- a/api-tests/inventory/agents_proxysql_exporter_test.go +++ b/api-tests/inventory/agents_proxysql_exporter_test.go @@ -29,6 +29,7 @@ import ( ) func TestProxySQLExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/agents_rds_exporter_test.go b/api-tests/inventory/agents_rds_exporter_test.go index 95ea82df18..9fd25072a6 100644 --- a/api-tests/inventory/agents_rds_exporter_test.go +++ b/api-tests/inventory/agents_rds_exporter_test.go @@ -28,9 +28,8 @@ import ( ) func TestRDSExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { - t.Parallel() - genericNodeID := pmmapitests.AddGenericNode(t, pmmapitests.TestString(t, "")).NodeID require.NotEmpty(t, genericNodeID) defer pmmapitests.RemoveNodes(t, genericNodeID) diff --git a/api-tests/inventory/agents_test.go b/api-tests/inventory/agents_test.go index 46c6733304..f760ab10ce 100644 --- a/api-tests/inventory/agents_test.go +++ b/api-tests/inventory/agents_test.go @@ -36,6 +36,7 @@ import ( var AgentStatusUnknown = inventorypb.AgentStatus_name[int32(inventorypb.AgentStatus_UNKNOWN)] func TestAgents(t *testing.T) { + t.Parallel() t.Run("List", func(t *testing.T) { t.Parallel() @@ -235,6 +236,7 @@ func TestAgents(t *testing.T) { } func TestPMMAgent(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -446,6 +448,7 @@ func TestPMMAgent(t *testing.T) { } func TestQanAgentExporter(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -675,6 +678,7 @@ func TestQanAgentExporter(t *testing.T) { } func TestPGStatStatementsQanAgent(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -904,6 +908,7 @@ func TestPGStatStatementsQanAgent(t *testing.T) { } func TestPGStatMonitorQanAgent(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/nodes_test.go b/api-tests/inventory/nodes_test.go index 7844890ba3..e3adc01ac9 100644 --- a/api-tests/inventory/nodes_test.go +++ b/api-tests/inventory/nodes_test.go @@ -32,6 +32,7 @@ import ( ) func TestNodes(t *testing.T) { + t.Parallel() t.Run("List", func(t *testing.T) { t.Parallel() @@ -91,6 +92,7 @@ func TestNodes(t *testing.T) { } func TestGetNode(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -144,6 +146,7 @@ func TestGetNode(t *testing.T) { } func TestGenericNode(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -203,6 +206,7 @@ func TestGenericNode(t *testing.T) { } func TestContainerNode(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -267,6 +271,7 @@ func TestContainerNode(t *testing.T) { } func TestRemoteNode(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -331,6 +336,7 @@ func TestRemoteNode(t *testing.T) { } func TestRemoveNode(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/inventory/services_test.go b/api-tests/inventory/services_test.go index 8d3fe8f0c9..21c83853bf 100644 --- a/api-tests/inventory/services_test.go +++ b/api-tests/inventory/services_test.go @@ -31,6 +31,7 @@ import ( ) func TestServices(t *testing.T) { + t.Parallel() t.Run("List", func(t *testing.T) { t.Parallel() @@ -172,6 +173,7 @@ func TestServices(t *testing.T) { } func TestGetService(t *testing.T) { + t.Parallel() t.Run("NotFound", func(t *testing.T) { t.Parallel() @@ -198,6 +200,7 @@ func TestGetService(t *testing.T) { } func TestRemoveService(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -319,6 +322,7 @@ func TestRemoveService(t *testing.T) { } func TestMySQLService(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -521,6 +525,7 @@ func TestMySQLService(t *testing.T) { } func TestMongoDBService(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -732,6 +737,7 @@ func TestMongoDBService(t *testing.T) { } func TestPostgreSQLService(t *testing.T) { + t.Parallel() const defaultPostgresDBName = "postgres" t.Run("Basic", func(t *testing.T) { @@ -937,6 +943,7 @@ func TestPostgreSQLService(t *testing.T) { } func TestProxySQLService(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() @@ -1139,6 +1146,7 @@ func TestProxySQLService(t *testing.T) { } func TestExternalService(t *testing.T) { + t.Parallel() t.Run("Basic", func(t *testing.T) { t.Parallel() diff --git a/api-tests/management/alerting/alerting_test.go b/api-tests/management/alerting/alerting_test.go index c8ca4835de..960500e36e 100644 --- a/api-tests/management/alerting/alerting_test.go +++ b/api-tests/management/alerting/alerting_test.go @@ -118,6 +118,7 @@ func assertTemplate(t *testing.T, expectedTemplate alert.Template, listTemplates } func TestTemplatesAPI(t *testing.T) { + t.Parallel() client := alertingClient.Default.Alerting templateData, err := os.ReadFile("../../testdata/ia/template.yaml") diff --git a/api-tests/management/ia/channels_test.go b/api-tests/management/ia/channels_test.go index 72b271c426..fa29d7bbde 100644 --- a/api-tests/management/ia/channels_test.go +++ b/api-tests/management/ia/channels_test.go @@ -34,7 +34,9 @@ import ( // we don't enable or disable IA explicit in our tests since it is enabled by default through // ENABLE_ALERTING env var. -func TestChannelsAPI(t *testing.T) { +func TestChannelsAPI(t *testing.T) { //nolint:tparallel + // TODO Fix this test to run in parallel. + // t.Parallel() client := channelsClient.Default.Channels t.Run("add", func(t *testing.T) { diff --git a/api-tests/management/ia/rules_test.go b/api-tests/management/ia/rules_test.go index e7e0e0764b..7015c1228e 100644 --- a/api-tests/management/ia/rules_test.go +++ b/api-tests/management/ia/rules_test.go @@ -39,6 +39,7 @@ import ( // we don't enable or disable IA explicit in our tests since it is enabled by default through // ENABLE_ALERTING env var. func TestRulesAPI(t *testing.T) { + t.Parallel() rulesClient := client.Default.Rules templatesClient := alertingClient.Default.Alerting channelsClient := client.Default.Channels diff --git a/api-tests/server/auth_test.go b/api-tests/server/auth_test.go index cbee3479e1..f58a205190 100644 --- a/api-tests/server/auth_test.go +++ b/api-tests/server/auth_test.go @@ -94,6 +94,7 @@ func TestAuth(t *testing.T) { } func TestSetup(t *testing.T) { + t.Parallel() // make a BaseURL without authentication baseURL, err := url.Parse(pmmapitests.BaseURL.String()) require.NoError(t, err) @@ -125,6 +126,7 @@ func TestSetup(t *testing.T) { }) t.Run("Redirect", func(t *testing.T) { + t.Parallel() paths := map[string]int{ "graph": 303, "graph/": 303, @@ -185,6 +187,7 @@ func TestSetup(t *testing.T) { } func TestSwagger(t *testing.T) { + t.Parallel() for _, path := range []string{ "swagger", "swagger/", @@ -194,6 +197,7 @@ func TestSwagger(t *testing.T) { path := path t.Run(path, func(t *testing.T) { + t.Parallel() t.Run("NoAuth", func(t *testing.T) { t.Parallel() diff --git a/api-tests/server/panics_test.go b/api-tests/server/panics_test.go index 8570d73ac3..216a0645e7 100644 --- a/api-tests/server/panics_test.go +++ b/api-tests/server/panics_test.go @@ -27,6 +27,7 @@ import ( ) func TestPanics(t *testing.T) { + t.Parallel() for _, mode := range []string{"panic-error", "panic-fmterror", "panic-string"} { mode := mode t.Run(mode, func(t *testing.T) { diff --git a/api-tests/server/readyz_test.go b/api-tests/server/readyz_test.go index f9259385db..093ea8c57e 100644 --- a/api-tests/server/readyz_test.go +++ b/api-tests/server/readyz_test.go @@ -28,6 +28,7 @@ import ( ) func TestReadyz(t *testing.T) { + t.Parallel() paths := []string{ "ping", "v1/readyz", diff --git a/api-tests/server/version_test.go b/api-tests/server/version_test.go index 9546e921bf..0332c31c30 100644 --- a/api-tests/server/version_test.go +++ b/api-tests/server/version_test.go @@ -32,6 +32,7 @@ import ( ) func TestVersion(t *testing.T) { + t.Parallel() paths := []string{ "managed/v1/version", "v1/version", diff --git a/managed/cmd/pmm-managed-starlark/main_test.go b/managed/cmd/pmm-managed-starlark/main_test.go index f53c75620f..f52f76ce86 100644 --- a/managed/cmd/pmm-managed-starlark/main_test.go +++ b/managed/cmd/pmm-managed-starlark/main_test.go @@ -47,7 +47,7 @@ var validQueryActionResult = []map[string]interface{}{ {"Value": "-log", "Variable_name": "version_suffix"}, } -func TestStarlarkSandbox(t *testing.T) { +func TestStarlarkSandbox(t *testing.T) { //nolint:tparallel testCases := []struct { name string script string diff --git a/managed/models/check_settings_helper_test.go b/managed/models/check_settings_helper_test.go index 01bccac0ff..427de8750a 100644 --- a/managed/models/check_settings_helper_test.go +++ b/managed/models/check_settings_helper_test.go @@ -27,12 +27,12 @@ import ( "github.com/percona/pmm/managed/utils/testdb" ) -func TestChecksSettings(t *testing.T) { +func TestChecksSettings(t *testing.T) { //nolint:tparallel t.Parallel() sqlDB := testdb.Open(t, models.SkipFixtures, nil) - defer func() { + t.Cleanup(func() { require.NoError(t, sqlDB.Close()) - }() + }) db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) t.Run("create", func(t *testing.T) { diff --git a/managed/models/models_json_test.go b/managed/models/models_json_test.go index f189521d9a..8baec878a5 100644 --- a/managed/models/models_json_test.go +++ b/managed/models/models_json_test.go @@ -27,7 +27,7 @@ import ( "github.com/percona/pmm/managed/utils/testdb" ) -func TestJSON(t *testing.T) { +func TestJSON(t *testing.T) { //nolint:tparallel sqlDB := testdb.Open(t, models.SkipFixtures, nil) db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) diff --git a/managed/models/postgresql_version_test.go b/managed/models/postgresql_version_test.go index 8851004940..5a676118ca 100644 --- a/managed/models/postgresql_version_test.go +++ b/managed/models/postgresql_version_test.go @@ -30,7 +30,7 @@ func TestGetPostgreSQLVersion(t *testing.T) { t.Parallel() sqlDB, mock, err := sqlmock.New() require.NoError(t, err) - defer sqlDB.Close() //nolint:errcheck + t.Cleanup(func() { sqlDB.Close() }) //nolint:errcheck q := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)).WithTag("pmm-agent:postgresqlversion") ctx := context.Background() @@ -78,6 +78,7 @@ func TestGetPostgreSQLVersion(t *testing.T) { for _, tc := range testCases { tc := tc t.Run(tc.name, func(t *testing.T) { + t.Parallel() for _, version := range tc.mockedData { mock.ExpectQuery("SELECT"). WillReturnRows(sqlmock.NewRows(column).AddRow(version)) diff --git a/managed/models/restore_history_helpers_test.go b/managed/models/restore_history_helpers_test.go index 68efa7143f..db837c1644 100644 --- a/managed/models/restore_history_helpers_test.go +++ b/managed/models/restore_history_helpers_test.go @@ -238,6 +238,7 @@ func TestRestoreHistory(t *testing.T) { } func TestRestoreHistoryValidation(t *testing.T) { + t.Parallel() testCases := []struct { name string params models.CreateRestoreHistoryItemParams diff --git a/managed/services/agents/agentversion_test.go b/managed/services/agents/agentversion_test.go index d079bfaca5..f6b22abb49 100644 --- a/managed/services/agents/agentversion_test.go +++ b/managed/services/agents/agentversion_test.go @@ -26,6 +26,7 @@ import ( ) func TestPMMAgentSupported(t *testing.T) { + t.Parallel() prefix := "testing prefix" minVersion := version.Must(version.NewVersion("2.30.5")) diff --git a/managed/services/agents/jobs.go b/managed/services/agents/jobs.go index ec4a9a9ea3..a78fffd381 100644 --- a/managed/services/agents/jobs.go +++ b/managed/services/agents/jobs.go @@ -169,7 +169,7 @@ func (s *JobsService) RestartJob(ctx context.Context, jobID string) error { return nil } -func (s *JobsService) handleJobResult(_ context.Context, l *logrus.Entry, result *agentpb.JobResult) { +func (s *JobsService) handleJobResult(_ context.Context, l *logrus.Entry, result *agentpb.JobResult) { //nolint:cyclop var scheduleID string if errTx := s.db.InTransaction(func(t *reform.TX) error { job, err := models.FindJobByID(t.Querier, result.JobId) diff --git a/managed/services/agents/proxysql_test.go b/managed/services/agents/proxysql_test.go index 1e6e836c13..ce4ee0ae0b 100644 --- a/managed/services/agents/proxysql_test.go +++ b/managed/services/agents/proxysql_test.go @@ -29,6 +29,7 @@ import ( ) func TestProxySQLExporterConfig(t *testing.T) { + t.Parallel() pmmAgentVersion := version.MustParse("2.18.0") proxysql := &models.Service{ Address: pointer.ToString("1.2.3.4"), diff --git a/managed/services/agents/versioner_test.go b/managed/services/agents/versioner_test.go index 56b3e274aa..53e1cc0b53 100644 --- a/managed/services/agents/versioner_test.go +++ b/managed/services/agents/versioner_test.go @@ -40,7 +40,9 @@ func TestSoftwareName(t *testing.T) { } for _, tc := range tests { + tc := tc t.Run(string(tc.name), func(t *testing.T) { + t.Parallel() res := tc.sw.Name() assert.Equal(t, tc.name, res) }) @@ -64,7 +66,9 @@ func TestGetVersionRequest(t *testing.T) { } for _, tc := range tests { + tc := tc t.Run(tc.name, func(t *testing.T) { + t.Parallel() res := tc.sw.GetVersionRequest() assert.Equal(t, tc.request, res) }) diff --git a/managed/services/backup/compatibility_service_test.go b/managed/services/backup/compatibility_service_test.go index 865888fb23..856a299605 100644 --- a/managed/services/backup/compatibility_service_test.go +++ b/managed/services/backup/compatibility_service_test.go @@ -183,7 +183,9 @@ func TestCheckCompatibility(t *testing.T) { expectedError: ErrIncompatibleService, }, } { + tc := tc t.Run(string(tc.serviceType)+"_"+tc.name, func(t *testing.T) { + t.Parallel() var sw []agents.Software switch tc.serviceType { case models.MySQLServiceType: @@ -286,18 +288,22 @@ func TestFindCompatibleServiceIDs(t *testing.T) { } t.Run("empty db version", func(t *testing.T) { + t.Parallel() res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: ""}, testSet) assert.Equal(t, 0, len(res)) }) t.Run("matches several", func(t *testing.T) { + t.Parallel() res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: "8.0.25"}, testSet) assert.ElementsMatch(t, []string{"5", "8"}, res) }) t.Run("matches one", func(t *testing.T) { + t.Parallel() res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: "8.0.24"}, testSet) assert.ElementsMatch(t, []string{"7"}, res) }) t.Run("artifact version greater then existing services", func(t *testing.T) { + t.Parallel() res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: "8.0.30"}, testSet) assert.Equal(t, 0, len(res)) }) @@ -632,7 +638,9 @@ func TestArtifactCompatibility(t *testing.T) { } for _, tc := range tests { + tc := tc t.Run(tc.name, func(t *testing.T) { + t.Parallel() err := cSvc.artifactCompatibility(tc.artifact, tc.service, tc.targetDBVersion) if tc.expectedErr == nil { diff --git a/managed/services/checks/checks_test.go b/managed/services/checks/checks_test.go index 9360df9f9f..c43b8271ff 100644 --- a/managed/services/checks/checks_test.go +++ b/managed/services/checks/checks_test.go @@ -618,6 +618,7 @@ func setupClients(t *testing.T) { } func TestFindTargets(t *testing.T) { + t.Parallel() sqlDB := testdb.Open(t, models.SetupFixtures, nil) t.Cleanup(func() { require.NoError(t, sqlDB.Close()) @@ -703,8 +704,6 @@ func TestFilterChecksByInterval(t *testing.T) { } func TestGetFailedChecks(t *testing.T) { - t.Parallel() - sqlDB := testdb.Open(t, models.SkipFixtures, nil) t.Cleanup(func() { require.NoError(t, sqlDB.Close()) diff --git a/managed/services/checks/funcs_test.go b/managed/services/checks/funcs_test.go index 3c9115fbb9..2212e34e6f 100644 --- a/managed/services/checks/funcs_test.go +++ b/managed/services/checks/funcs_test.go @@ -98,6 +98,7 @@ Traceback (most recent call last): } func TestAdditionalContext(t *testing.T) { + t.Parallel() predeclaredFuncs, err := GetFuncsForVersion(1) require.NoError(t, err) contextFuncs := GetAdditionalContext() diff --git a/managed/services/grafana/auth_server_test.go b/managed/services/grafana/auth_server_test.go index 7ef2246e4e..7c4d44865a 100644 --- a/managed/services/grafana/auth_server_test.go +++ b/managed/services/grafana/auth_server_test.go @@ -160,11 +160,12 @@ func TestAuthServerMustSetup(t *testing.T) { } func TestAuthServerAuthenticate(t *testing.T) { + t.Parallel() // logrus.SetLevel(logrus.TraceLevel) checker := &mockAwsInstanceChecker{} checker.Test(t) - defer checker.AssertExpectations(t) + t.Cleanup(func() { checker.AssertExpectations(t) }) ctx := context.Background() c := NewClient("127.0.0.1:3000") @@ -242,8 +243,8 @@ func TestAuthServerAuthenticate(t *testing.T) { role := role t.Run(fmt.Sprintf("uri=%s,minRole=%s,role=%s", uri, minRole, role), func(t *testing.T) { - // do not run this test in parallel - they lock Grafana's sqlite3 database - // t.Parallel() + // This test couldn't run in parallel on sqlite3 - they locked Grafana's sqlite3 database + t.Parallel() login := fmt.Sprintf("%s-%s-%d", minRole, role, time.Now().Nanosecond()) userID, err := c.testCreateUser(ctx, login, role, authHeaders) diff --git a/managed/services/management/alerting/service_test.go b/managed/services/management/alerting/service_test.go index 81458b321c..37de5b37a2 100644 --- a/managed/services/management/alerting/service_test.go +++ b/managed/services/management/alerting/service_test.go @@ -42,6 +42,7 @@ const ( ) func TestCollect(t *testing.T) { + t.Parallel() clientID, clientSecret := os.Getenv("OAUTH_PMM_CLIENT_ID"), os.Getenv("OAUTH_PMM_CLIENT_SECRET") if clientID == "" || clientSecret == "" { t.Skip("Environment variables OAUTH_PMM_CLIENT_ID / OAUTH_PMM_CLIENT_SECRET are not defined, skipping test") @@ -160,6 +161,7 @@ func TestDownloadTemplates(t *testing.T) { } func TestTemplateValidation(t *testing.T) { + t.Parallel() ctx := context.Background() sqlDB := testdb.Open(t, models.SkipFixtures, nil) db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) diff --git a/managed/services/management/dbaas/components_service_test.go b/managed/services/management/dbaas/components_service_test.go index fdb361630c..5680fe59bd 100644 --- a/managed/services/management/dbaas/components_service_test.go +++ b/managed/services/management/dbaas/components_service_test.go @@ -670,7 +670,6 @@ func TestInstallOperator(t *testing.T) { } func TestCheckForOperatorUpdate(t *testing.T) { - t.Parallel() response := &VersionServiceResponse{ Versions: []Version{ { diff --git a/managed/services/management/dbaas/kubernetes_server_test.go b/managed/services/management/dbaas/kubernetes_server_test.go index d04471bb04..7a2ea1640b 100644 --- a/managed/services/management/dbaas/kubernetes_server_test.go +++ b/managed/services/management/dbaas/kubernetes_server_test.go @@ -689,7 +689,7 @@ users: provideClusterInfo: false ` -func TestUseIAMAuthenticator(t *testing.T) { +func TestUseIAMAuthenticator(t *testing.T) { //nolint:tparallel t.Parallel() testCases := []struct { name string diff --git a/managed/services/management/dbaas/pxc_cluster_service_test.go b/managed/services/management/dbaas/pxc_cluster_service_test.go index 651f635194..ed2e747f19 100644 --- a/managed/services/management/dbaas/pxc_cluster_service_test.go +++ b/managed/services/management/dbaas/pxc_cluster_service_test.go @@ -80,7 +80,7 @@ const pxcKubeconfigTest = ` ` const pxcKubernetesClusterNameTest = "test-k8s-cluster-name" -func TestPXCClusterService(t *testing.T) { +func TestPXCClusterService(t *testing.T) { //nolint:tparallel // This is for local testing. When running local tests, if pmmversion.PMMVersion is empty // these lines in kubernetes_server.go will throw an error and tests won't finish. // @@ -117,7 +117,7 @@ func TestPXCClusterService(t *testing.T) { } ctx, db, dbaasClient, grafanaClient, componentsClient, kubeClient, teardown := setup(t) - defer teardown(t) + t.Cleanup(func() { teardown(t) }) versionService := &mockVersionService{} v1120, _ := goversion.NewVersion("1.12.0") diff --git a/managed/services/management/dbaas/version_service_client_test.go b/managed/services/management/dbaas/version_service_client_test.go index a25dfb4fdf..8595848e36 100644 --- a/managed/services/management/dbaas/version_service_client_test.go +++ b/managed/services/management/dbaas/version_service_client_test.go @@ -261,7 +261,7 @@ const ( psmdbImage = "percona/percona-server-mongodb" ) -func TestGetNextDatabaseVersion(t *testing.T) { +func TestGetNextDatabaseVersion(t *testing.T) { //nolint:tparallel ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*100) response := &VersionServiceResponse{ Versions: []Version{ diff --git a/managed/services/server/server_test.go b/managed/services/server/server_test.go index 382a99f35e..f4f77d4e7e 100644 --- a/managed/services/server/server_test.go +++ b/managed/services/server/server_test.go @@ -426,7 +426,9 @@ func TestServer_TestEmailAlertingSettings(t *testing.T) { }, }, } { + tc := tc t.Run(tc.testName, func(t *testing.T) { + t.Parallel() if tc.mock != nil { tc.mock() } diff --git a/managed/services/supervisord/maintail_test.go b/managed/services/supervisord/maintail_test.go index 3b9d3e7375..94603da72d 100644 --- a/managed/services/supervisord/maintail_test.go +++ b/managed/services/supervisord/maintail_test.go @@ -24,6 +24,7 @@ import ( ) func TestParseEvent(t *testing.T) { + t.Parallel() t.Run("Normal", func(t *testing.T) { t.Parallel() diff --git a/managed/services/supervisord/supervisord_test.go b/managed/services/supervisord/supervisord_test.go index 963187c71c..ed6e515ff5 100644 --- a/managed/services/supervisord/supervisord_test.go +++ b/managed/services/supervisord/supervisord_test.go @@ -52,6 +52,7 @@ func TestConfig(t *testing.T) { tmpl := tmpl t.Run(tmpl.Name(), func(t *testing.T) { + t.Parallel() expected, err := os.ReadFile(filepath.Join(configDir, tmpl.Name()+".ini")) //nolint:gosec require.NoError(t, err) actual, err := s.marshalConfig(tmpl, settings, nil) @@ -125,6 +126,7 @@ func TestAddAlertManagerParam(t *testing.T) { t.Parallel() t.Run("empty alertmanager url", func(t *testing.T) { + t.Parallel() params := make(map[string]interface{}) err := addAlertManagerParams("", params) require.NoError(t, err) @@ -132,6 +134,7 @@ func TestAddAlertManagerParam(t *testing.T) { }) t.Run("simple alertmanager url", func(t *testing.T) { + t.Parallel() params := make(map[string]interface{}) err := addAlertManagerParams("https://some-alertmanager", params) require.NoError(t, err) @@ -139,6 +142,7 @@ func TestAddAlertManagerParam(t *testing.T) { }) t.Run("extract username and password from alertmanager url", func(t *testing.T) { + t.Parallel() params := make(map[string]interface{}) err := addAlertManagerParams("https://username1:PAsds!234@some-alertmanager", params) require.NoError(t, err) @@ -148,6 +152,7 @@ func TestAddAlertManagerParam(t *testing.T) { }) t.Run("incorrect alertmanager url", func(t *testing.T) { + t.Parallel() params := make(map[string]interface{}) err := addAlertManagerParams("*:9095", params) require.EqualError(t, err, `cannot parse AlertManagerURL: parse "*:9095": first path segment in URL cannot contain colon`) @@ -175,7 +180,9 @@ func TestSavePMMConfig(t *testing.T) { }, } for _, test := range tests { + test := test t.Run(test.description, func(t *testing.T) { + t.Parallel() expected, err := os.ReadFile(filepath.Join(configDir, test.file+".ini")) //nolint:gosec require.NoError(t, err) actual, err := marshalConfig(test.params) diff --git a/managed/services/telemetry/distribution_util_test.go b/managed/services/telemetry/distribution_util_test.go index cfed5ce801..b45d814fca 100644 --- a/managed/services/telemetry/distribution_util_test.go +++ b/managed/services/telemetry/distribution_util_test.go @@ -28,6 +28,7 @@ import ( ) func Test_distributionUtilServiceImpl_getDistributionMethodAndOS(t *testing.T) { + t.Parallel() const ( ami = "ami" ovf = "ovf" @@ -160,6 +161,7 @@ func writeToTmpFile(t *testing.T, tmpDistributionFile string, s string) (*os.Fil } func Test_distributionUtilServiceImpl_getLinuxDistribution(t *testing.T) { + t.Parallel() const ( tmpDistributionFile = "/tmp/distribution" tmpOsInfoFilePath = "/tmp/version" diff --git a/managed/services/telemetry/telemetry_test.go b/managed/services/telemetry/telemetry_test.go index a2fd61a9ea..640e374be6 100644 --- a/managed/services/telemetry/telemetry_test.go +++ b/managed/services/telemetry/telemetry_test.go @@ -46,6 +46,7 @@ const ( ) func TestRunTelemetryService(t *testing.T) { + t.Parallel() pgHostPort := "127.0.0.1:5432" pgHostPortFromEnv, ok := os.LookupEnv(envPGHostPort) if ok { diff --git a/managed/utils/pprof/pprof_test.go b/managed/utils/pprof/pprof_test.go index 627780d8fc..00358fa8c6 100644 --- a/managed/utils/pprof/pprof_test.go +++ b/managed/utils/pprof/pprof_test.go @@ -29,6 +29,7 @@ import ( func TestHeap(t *testing.T) { t.Parallel() t.Run("Heap test", func(t *testing.T) { + t.Parallel() heapBytes, err := Heap(true) assert.NoError(t, err) @@ -65,6 +66,7 @@ func TestProfile(t *testing.T) { }) t.Run("Profile break test", func(t *testing.T) { + t.Parallel() ctx, cancel := context.WithTimeout(context.Background(), time.Second*30) go func() { profileBytes, err := Profile(ctx, 30*time.Second) @@ -91,6 +93,7 @@ func TestTrace(t *testing.T) { }) t.Run("Trace break test", func(t *testing.T) { + t.Parallel() // Create a new context ctx, cancel := context.WithTimeout(context.Background(), time.Second*30) go func() { diff --git a/update/.devcontainer/install-dev-tools.sh b/update/.devcontainer/install-dev-tools.sh index 130c967792..dda62aea54 100755 --- a/update/.devcontainer/install-dev-tools.sh +++ b/update/.devcontainer/install-dev-tools.sh @@ -20,6 +20,8 @@ percona-release enable original testing # this mirror always fails, on both AWS and github echo "exclude=mirror.es.its.nyu.edu" >> /etc/yum/pluginconf.d/fastestmirror.conf yum clean plugins +# https://stackoverflow.com/questions/26734777/yum-error-cannot-retrieve-metalink-for-repository-epel-please-verify-its-path +sed -i "s/metalink=https/metalink=http/" /etc/yum.repos.d/epel.repo # reinstall with man pages yum install -y yum rpm diff --git a/vmproxy/main_test.go b/vmproxy/main_test.go index 48d132f500..c4d72f4287 100644 --- a/vmproxy/main_test.go +++ b/vmproxy/main_test.go @@ -27,6 +27,7 @@ func TestProxy(t *testing.T) { t.Parallel() t.Run("shall run proxy with no error", func(t *testing.T) { + t.Parallel() err := runProxy(flags{}, func(cfg proxy.Config) error { return nil }) From 56028333a8079fdcca6254811fb39ad5b1bfcc39 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 14:22:24 +0000 Subject: [PATCH 004/123] Bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 (#2228) Bumps [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus) from 1.9.2 to 1.9.3. - [Release notes](https://github.com/sirupsen/logrus/releases) - [Changelog](https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md) - [Commits](https://github.com/sirupsen/logrus/compare/v1.9.2...v1.9.3) --- updated-dependencies: - dependency-name: github.com/sirupsen/logrus dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 71ae9392e5..46549104da 100644 --- a/go.mod +++ b/go.mod @@ -69,7 +69,7 @@ require ( github.com/prometheus/common v0.44.0 github.com/ramr/go-reaper v0.2.1 github.com/robfig/cron/v3 v3.0.1 - github.com/sirupsen/logrus v1.9.2 + github.com/sirupsen/logrus v1.9.3 github.com/stretchr/objx v0.5.0 github.com/stretchr/testify v1.8.4 go.mongodb.org/mongo-driver v1.11.6 diff --git a/go.sum b/go.sum index 480835219b..34d21ef5a2 100644 --- a/go.sum +++ b/go.sum @@ -754,8 +754,8 @@ github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= -github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= From 5a292d9c9c5849fae6a0d30a10f77c68c9728f76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 14:39:19 +0000 Subject: [PATCH 005/123] Bump google.golang.org/grpc from 1.56.0-dev to 1.57.0-dev (#2231) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.56.0-dev to 1.57.0-dev. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.56.0-dev...v1.57.0-dev) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 46549104da..e9c8cd54aa 100644 --- a/go.mod +++ b/go.mod @@ -81,7 +81,7 @@ require ( golang.org/x/tools v0.9.3 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc - google.golang.org/grpc v1.56.0-dev + google.golang.org/grpc v1.57.0-dev google.golang.org/protobuf v1.30.0 gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/reform.v1 v1.5.1 diff --git a/go.sum b/go.sum index 34d21ef5a2..fcbdfa521c 100644 --- a/go.sum +++ b/go.sum @@ -1169,8 +1169,8 @@ google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.56.0-dev h1:3XdSkn+E4E0OxKEID50paHDwVA7cqZVolkHtMFaoQJA= -google.golang.org/grpc v1.56.0-dev/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.57.0-dev h1:XCvzqke2TBzQUs3a1MO1VsqVkWeAdJ/KmxHCAVtPpe8= +google.golang.org/grpc v1.57.0-dev/go.mod h1:ZPf89/axrdgRDfHqb7fa0GF5t4VUER0vWnqnPNuRP7k= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 76dfdc28d565e9e17dc9906d26e7d8adc6a63fff Mon Sep 17 00:00:00 2001 From: Roman Novikov Date: Mon, 5 Jun 2023 19:53:02 +0300 Subject: [PATCH 006/123] Create authfix.sh (#2234) PMM-12182 fix --- scripts/authfix.sh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 scripts/authfix.sh diff --git a/scripts/authfix.sh b/scripts/authfix.sh new file mode 100644 index 0000000000..0b21fc01c4 --- /dev/null +++ b/scripts/authfix.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -eu +trap "echo FAILED" ERR +sed -i 's^error_page 401 = /auth_request;^\0\nif ($request ~ (\\.\\.|%2e%2e)) { return 403; }^' /etc/nginx/conf.d/pmm.conf +grep -Fq 'request ~ (\.\.|%2e%2e)' /etc/nginx/conf.d/pmm.conf +nginx -t +nginx -s reload From c97f2e8407b48ee04d0f1af6f4cdbbf5b9df40c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Jun 2023 12:28:03 +0200 Subject: [PATCH 007/123] Bump github.com/golang-migrate/migrate/v4 from 4.16.0 to 4.16.1 (#2235) Bumps [github.com/golang-migrate/migrate/v4](https://github.com/golang-migrate/migrate) from 4.16.0 to 4.16.1. - [Release notes](https://github.com/golang-migrate/migrate/releases) - [Changelog](https://github.com/golang-migrate/migrate/blob/master/.goreleaser.yml) - [Commits](https://github.com/golang-migrate/migrate/compare/v4.16.0...v4.16.1) --- updated-dependencies: - dependency-name: github.com/golang-migrate/migrate/v4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e9c8cd54aa..75fc76b56f 100644 --- a/go.mod +++ b/go.mod @@ -40,7 +40,7 @@ require ( github.com/go-openapi/swag v0.22.3 github.com/go-openapi/validate v0.22.1 github.com/go-sql-driver/mysql v1.7.1 - github.com/golang-migrate/migrate/v4 v4.16.0 + github.com/golang-migrate/migrate/v4 v4.16.1 github.com/golang/protobuf v1.5.3 github.com/google/uuid v1.3.0 github.com/grafana/grafana-api-golang-client v0.22.0 diff --git a/go.sum b/go.sum index fcbdfa521c..96f05e5237 100644 --- a/go.sum +++ b/go.sum @@ -329,8 +329,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-migrate/migrate/v4 v4.16.0 h1:FU2GR7EdAO0LmhNLcKthfDzuYCtMcWNR7rUbZjsgH3o= -github.com/golang-migrate/migrate/v4 v4.16.0/go.mod h1:qXiwa/3Zeqaltm1MxOCZDYysW/F6folYiBgBG03l9hc= +github.com/golang-migrate/migrate/v4 v4.16.1 h1:O+0C55RbMN66pWm5MjO6mw0px6usGpY0+bkSGW9zCo0= +github.com/golang-migrate/migrate/v4 v4.16.1/go.mod h1:qXiwa/3Zeqaltm1MxOCZDYysW/F6folYiBgBG03l9hc= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= From 53a11b8ff48915dd33276e4e017c3ef8c09aab40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Jun 2023 10:46:28 +0000 Subject: [PATCH 008/123] Bump github.com/bufbuild/buf from 1.20.0 to 1.21.0 in /tools (#2236) Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.20.0 to 1.21.0. - [Release notes](https://github.com/bufbuild/buf/releases) - [Changelog](https://github.com/bufbuild/buf/blob/main/CHANGELOG.md) - [Commits](https://github.com/bufbuild/buf/compare/v1.20.0...v1.21.0) --- updated-dependencies: - dependency-name: github.com/bufbuild/buf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 10 +++++----- tools/go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 39d4f2b194..05308cd2fb 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -8,7 +8,7 @@ require ( github.com/BurntSushi/go-sumtype v0.0.0-20190304192233-fcb4a6205bdc github.com/Percona-Lab/swagger-order v0.0.0-20191002141859-166b3973d026 github.com/apache/skywalking-eyes v0.4.0 - github.com/bufbuild/buf v1.20.0 + github.com/bufbuild/buf v1.21.0 github.com/daixiang0/gci v0.10.1 github.com/envoyproxy/protoc-gen-validate v1.0.1 github.com/go-delve/delve v1.20.2 @@ -44,7 +44,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/bmatcuk/doublestar/v2 v2.0.4 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 // indirect - github.com/bufbuild/connect-go v1.7.0 // indirect + github.com/bufbuild/connect-go v1.8.0 // indirect github.com/bufbuild/protocompile v0.5.1 // indirect github.com/cilium/ebpf v0.7.0 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect @@ -97,7 +97,7 @@ require ( github.com/google/go-github/v41 v41.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/licensecheck v0.3.1 // indirect - github.com/google/pprof v0.0.0-20230510103437-eeec1cb781c3 // indirect + github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.7.1 // indirect @@ -154,7 +154,7 @@ require ( github.com/rs/cors v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect - github.com/sirupsen/logrus v1.9.2 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/afero v1.9.2 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.7.0 // indirect @@ -162,7 +162,7 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.12.0 // indirect github.com/subosito/gotenv v1.4.0 // indirect - github.com/tetratelabs/wazero v1.1.0 // indirect + github.com/tetratelabs/wazero v1.2.0 // indirect github.com/toqueteos/webbrowser v1.2.0 // indirect github.com/vbatts/tar-split v0.11.3 // indirect github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc // indirect diff --git a/tools/go.sum b/tools/go.sum index 3b69a56b0c..5701647f1b 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -103,10 +103,10 @@ github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 h1:tXKVfhE7FcSkhkv0UwkLvPDeZ4k github.com/bradleyfalzon/ghinstallation/v2 v2.0.4/go.mod h1:B40qPqJxWE0jDZgOR1JmaMy+4AY1eBP+IByOvqyAKp0= github.com/brianvoe/gofakeit v3.18.0+incompatible h1:wDOmHc9DLG4nRjUVVaxA+CEglKOW72Y5+4WNxUIkjM8= github.com/brianvoe/gofakeit v3.18.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= -github.com/bufbuild/buf v1.20.0 h1:B5+RQGsN+cs9eF0IyO6hdZAxEROVPjUPeX3a7PUVuBc= -github.com/bufbuild/buf v1.20.0/go.mod h1:4zmuvfUHapwU0dP2y4KNBjprXcBcr+Mtm1/KOHtR/Ng= -github.com/bufbuild/connect-go v1.7.0 h1:MGp82v7SCza+3RhsVhV7aMikwxvI3ZfD72YiGt8FYJo= -github.com/bufbuild/connect-go v1.7.0/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/buf v1.21.0 h1:fgmvmA5xDFbKYd9wtpExH6YtCcTUo4GDt+7yizSNqUE= +github.com/bufbuild/buf v1.21.0/go.mod h1:o7qgHprFF7rrwY9OEE3Jv+zVMqEjtYjETR+klgPcPoE= +github.com/bufbuild/connect-go v1.8.0 h1:srluNkFkZBfSfg9Qb6DrO+5nMaxix//h2ctrHZhMGKc= +github.com/bufbuild/connect-go v1.8.0/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -379,8 +379,8 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230510103437-eeec1cb781c3 h1:2XF1Vzq06X+inNqgJ9tRnGuw+ZVCB3FazXODD6JE1R8= -github.com/google/pprof v0.0.0-20230510103437-eeec1cb781c3/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 h1:hR7/MlvK23p6+lIw9SN1TigNLn9ZnF3W4SYRKq2gAHs= +github.com/google/pprof v0.0.0-20230602150820-91b7bce49751/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -635,8 +635,8 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= -github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -682,8 +682,8 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69 github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/tetratelabs/wazero v1.1.0 h1:EByoAhC+QcYpwSZJSs/aV0uokxPwBgKxfiokSUwAknQ= -github.com/tetratelabs/wazero v1.1.0/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= +github.com/tetratelabs/wazero v1.2.0 h1:I/8LMf4YkCZ3r2XaL9whhA0VMyAvF6QE+O7rco0DCeQ= +github.com/tetratelabs/wazero v1.2.0/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= From 8abe97295deb2c84e2b6fa5d9f165effc7a2cedc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Jun 2023 11:14:20 +0000 Subject: [PATCH 009/123] Bump modernc.org/sqlite from 1.22.1 to 1.23.0 (#2230) Bumps [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) from 1.22.1 to 1.23.0. - [Commits](https://gitlab.com/cznic/sqlite/compare/v1.22.1...v1.23.0) --- updated-dependencies: - dependency-name: modernc.org/sqlite dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 75fc76b56f..9513f10139 100644 --- a/go.mod +++ b/go.mod @@ -92,7 +92,7 @@ require ( k8s.io/cli-runtime v0.27.2 k8s.io/client-go v0.27.2 k8s.io/kubectl v0.27.2 - modernc.org/sqlite v1.22.1 + modernc.org/sqlite v1.23.0 sigs.k8s.io/controller-runtime v0.14.6 ) diff --git a/go.sum b/go.sum index 96f05e5237..955ac36655 100644 --- a/go.sum +++ b/go.sum @@ -1259,8 +1259,8 @@ modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.22.1 h1:P2+Dhp5FR1RlVRkQ3dDfCiv3Ok8XPxqpe70IjYVA9oE= -modernc.org/sqlite v1.22.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= +modernc.org/sqlite v1.23.0 h1:MWTFBI5H1WLnXpNBh/BTruBVqzzoh28DA0iOnlkkRaM= +modernc.org/sqlite v1.23.0/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= From be84e8267cd66166c14d4a40b1875ea365964d3c Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Tue, 6 Jun 2023 16:58:46 +0300 Subject: [PATCH 010/123] PMM-7 enable `gosimple` linter rule (#2227) * PMM-7 enable `gosimple` linter rule * Update managed/services/grafana/auth_server.go Co-authored-by: Artem Gavrilov * PMM-7 removed redundant check for nil * PMM-7 fix a deprecated function * PMM-7 follow up on PR review * PMM-7 disable WS Security Check --------- Co-authored-by: Artem Gavrilov --- .github/workflows/main.yml | 2 +- .golangci.yml | 3 +-- admin/commands/pmm/server/docker/upgrade_test.go | 4 ++-- agent/agents/mongodb/mongodb.go | 1 - managed/services/dbaas/kubernetes/kubernetes.go | 2 +- managed/services/grafana/auth_server.go | 2 +- managed/services/supervisord/pmm_config.go | 2 +- vmproxy/proxy/proxy.go | 13 +++++-------- 8 files changed, 12 insertions(+), 17 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dc57749d36..5a44a430a6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -133,7 +133,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} interval: 45 timeout: 1200 - ignored: "WhiteSource License Check" + ignored: "WhiteSource License Check, WhiteSource Security Check" ref: ${{ github.event.pull_request.head.sha || github.sha }} workflow_success: diff --git a/.golangci.yml b/.golangci.yml index 3fa6f65321..8d1df00743 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -92,6 +92,7 @@ linters: - interfacer # deprecated - maligned # deprecated - nlreturn # too annoying + - nosnakecase # deprecated - scopelint # too many false positives - varnamelen # useless - wrapcheck # we do not use wrapping everywhere @@ -104,13 +105,11 @@ linters: - godot - godox - revive - - nosnakecase - paralleltest - ireturn - gocognit - maintidx - interfacebloat - - gosimple - forbidigo - errcheck # ENDTODO diff --git a/admin/commands/pmm/server/docker/upgrade_test.go b/admin/commands/pmm/server/docker/upgrade_test.go index 3d286cfe45..e9d9e04099 100644 --- a/admin/commands/pmm/server/docker/upgrade_test.go +++ b/admin/commands/pmm/server/docker/upgrade_test.go @@ -134,8 +134,8 @@ func TestUpgradeCmd(t *testing.T) { } func setWaitForContainerMock(m *MockFunctions) { - ch := func() <-chan container.ContainerWaitOKBody { - c := make(chan container.ContainerWaitOKBody) + ch := func() <-chan container.WaitResponse { + c := make(chan container.WaitResponse) close(c) return c }() diff --git a/agent/agents/mongodb/mongodb.go b/agent/agents/mongodb/mongodb.go index e987cd6564..0c98a8e75e 100644 --- a/agent/agents/mongodb/mongodb.go +++ b/agent/agents/mongodb/mongodb.go @@ -91,7 +91,6 @@ func (m *MongoDB) Run(ctx context.Context) { <-ctx.Done() m.changes <- agents.Change{Status: inventorypb.AgentStatus_STOPPING} - return } // Changes returns channel that should be read until it is closed. diff --git a/managed/services/dbaas/kubernetes/kubernetes.go b/managed/services/dbaas/kubernetes/kubernetes.go index c120ea5aee..1578508404 100644 --- a/managed/services/dbaas/kubernetes/kubernetes.go +++ b/managed/services/dbaas/kubernetes/kubernetes.go @@ -901,7 +901,7 @@ func (k *Kubernetes) UpgradeOperator(ctx context.Context, namespace, name string return errors.Wrapf(err, "cannot get install plan to upgrade %q", name) } - if ip.Spec.Approved == true { + if ip.Spec.Approved { return nil // There are no upgrades. } diff --git a/managed/services/grafana/auth_server.go b/managed/services/grafana/auth_server.go index e413f12731..5f39ba3d8c 100644 --- a/managed/services/grafana/auth_server.go +++ b/managed/services/grafana/auth_server.go @@ -298,7 +298,7 @@ func (s *AuthServer) maybeAddVMProxyFilters(ctx context.Context, rw http.Respons return err } - if filters == nil || len(filters) == 0 { + if len(filters) == 0 { return nil } diff --git a/managed/services/supervisord/pmm_config.go b/managed/services/supervisord/pmm_config.go index b971a80796..602b9a5546 100644 --- a/managed/services/supervisord/pmm_config.go +++ b/managed/services/supervisord/pmm_config.go @@ -56,7 +56,7 @@ func saveConfig(path string, cfg []byte) (err error) { } // compare with new config - if bytes.Compare(cfg, oldCfg) == 0 { + if bytes.Equal(cfg, oldCfg) { // nothing to change return nil } diff --git a/vmproxy/proxy/proxy.go b/vmproxy/proxy/proxy.go index 907043345b..8fcb9e6683 100644 --- a/vmproxy/proxy/proxy.go +++ b/vmproxy/proxy/proxy.go @@ -26,6 +26,7 @@ import ( "net/url" "time" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -93,10 +94,8 @@ func director(target *url.URL, headerName string) func(*http.Request) { logrus.Error(err) } - if parsed != nil { - for _, f := range parsed { - q.Add("extra_filters[]", f) - } + for _, f := range parsed { + q.Add("extra_filters[]", f) } req.URL.RawQuery = q.Encode() @@ -121,13 +120,11 @@ func parseFilters(filters string) ([]string, error) { decoded, err := base64.StdEncoding.DecodeString(filters) if err != nil { - logrus.Errorf("Could not decode filters header. %v", err) - return nil, fmt.Errorf("could not decode filters header") + return nil, errors.Wrapf(err, "could not decode filters header") } if err := json.Unmarshal(decoded, &parsed); err != nil { - logrus.Errorf("Could not parse filters JSON. %v", err) - return nil, fmt.Errorf("could not parse filters JSON") + return nil, errors.Wrapf(err, "could not parse filters JSON") } return parsed, nil From 47de3c8707e5625788b2e56a48136849a49f7efe Mon Sep 17 00:00:00 2001 From: Alexey Mukas <91831719+ritbl@users.noreply.github.com> Date: Tue, 6 Jun 2023 16:32:03 +0200 Subject: [PATCH 011/123] PMM-5081: prometheus metrics for inventory data (#2214) * PMM-5081: Prometheus metrics for Inventory data * PMM-5081: Prometheus metrics for Inventory data (formatting) * PMM-5081: Prometheus metrics for Inventory data (fix license header) * PMM-5081: Prometheus metrics for Inventory data (fix linter issues) * PMM-5081: Prometheus metrics for Inventory data (fix) * PMM-5081: Prometheus metrics for Inventory data (use `DescribeByCollect`) * PMM-5081: Prometheus metrics for Inventory data (added tests) * PMM-5081: Prometheus metrics for Inventory data (fix license header) * PMM-5081: Prometheus metrics for Inventory data (fix test) * PMM-5081: Prometheus metrics for Inventory data (fix linter issues) * PMM-5081: Prometheus metrics for Inventory data (fix linter issues #2) * PMM-5081: Prometheus metrics for Inventory data (added mockInventoryAPI) * refactor * revert * style * fix test * fixing running tests * fixing running tests * PMM-5081: Prometheus metrics for Inventory data (fixed PR issues) * PMM-5081: Prometheus metrics for Inventory data (fixed PR issues #2) * PMM-5081: Prometheus metrics for Inventory data (apply formatter) * revert * PMM-5081: Prometheus metrics for Inventory data (use context in logger) * PMM-5081: Prometheus metrics for Inventory data (fix problem with wrong status of connected/disconnected agent, added a new label `status` to pmm_managed_inventory_agents metrics) * PMM-5081: Prometheus metrics for Inventory data (fix test) * PMM-5081: Prometheus metrics for Inventory data (use connected/disconnected as value for pmm agent metrics, use status as value for other agent type metrics) * PMM-5081: Prometheus metrics for Inventory data (use `RunsOnNodeID` as `node_id` in agents metrics) * PMM-5081: Prometheus metrics for Inventory data (refactor) * PMM-5081: Prometheus metrics for Inventory data (removed unnecessary mutex) * refactor * refactor * reformat * trigger ci --------- Co-authored-by: Denis Stoyanov Co-authored-by: Michael Okoko <10512379+idoqo@users.noreply.github.com> Co-authored-by: Roman Novikov --- managed/cmd/pmm-managed/main.go | 4 + managed/services/inventory/deps.go | 7 + .../services/inventory/inventory_metrics.go | 249 ++++++++++++++++++ .../inventory/inventory_metrics_test.go | 128 +++++++++ .../inventory/mock_inventory_metrics_test.go | 83 ++++++ 5 files changed, 471 insertions(+) create mode 100644 managed/services/inventory/inventory_metrics.go create mode 100644 managed/services/inventory/inventory_metrics_test.go create mode 100644 managed/services/inventory/mock_inventory_metrics_test.go diff --git a/managed/cmd/pmm-managed/main.go b/managed/cmd/pmm-managed/main.go index fd9dd728ef..d3b0a1e7d1 100644 --- a/managed/cmd/pmm-managed/main.go +++ b/managed/cmd/pmm-managed/main.go @@ -827,6 +827,10 @@ func main() { //nolint:cyclop backupRetentionService := backup.NewRetentionService(db, backupRemovalService) prom.MustRegister(agentsRegistry) + inventoryMetrics := inventory.NewInventoryMetrics(db, agentsRegistry) + inventoryMetricsCollector := inventory.NewInventoryMetricsCollector(inventoryMetrics) + prom.MustRegister(inventoryMetricsCollector) + connectionCheck := agents.NewConnectionChecker(agentsRegistry) alertManager := alertmanager.New(db) diff --git a/managed/services/inventory/deps.go b/managed/services/inventory/deps.go index 900fb69e3c..b00c9d8734 100644 --- a/managed/services/inventory/deps.go +++ b/managed/services/inventory/deps.go @@ -29,6 +29,7 @@ import ( //go:generate ../../../bin/mockery -name=prometheusService -case=snake -inpkg -testonly //go:generate ../../../bin/mockery -name=connectionChecker -case=snake -inpkg -testonly //go:generate ../../../bin/mockery -name=versionCache -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery -name=inventoryMetrics -case=snake -inpkg -testonly // agentsRegistry is a subset of methods of agents.Registry used by this package. // We use it instead of real type for testing and to avoid dependency cycle. @@ -68,3 +69,9 @@ type connectionChecker interface { type versionCache interface { RequestSoftwareVersionsUpdate() } + +type inventoryMetrics interface { + GetAgentMetrics(ctx context.Context) (metrics []Metric, err error) + GetNodeMetrics(ctx context.Context) (metrics []Metric, err error) + GetServiceMetrics(ctx context.Context) (metrics []Metric, err error) +} diff --git a/managed/services/inventory/inventory_metrics.go b/managed/services/inventory/inventory_metrics.go new file mode 100644 index 0000000000..7b45b92ca4 --- /dev/null +++ b/managed/services/inventory/inventory_metrics.go @@ -0,0 +1,249 @@ +// Copyright (C) 2023 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package inventory + +import ( + "context" + "time" + + "github.com/AlekSi/pointer" + "github.com/pkg/errors" + prom "github.com/prometheus/client_golang/prometheus" + "gopkg.in/reform.v1" + + "github.com/percona/pmm/api/inventorypb" + "github.com/percona/pmm/managed/models" + "github.com/percona/pmm/managed/utils/logger" +) + +const ( + requestTimeout = 3 * time.Second + serviceEnabled float64 = 1 + prometheusNamespace = "pmm_managed" + prometheusSubsystem = "inventory" +) + +type Metric struct { + labels []string + value float64 +} + +//goland:noinspection GoNameStartsWithPackageName +type InventoryMetrics struct { + db *reform.DB + registry agentsRegistry +} + +//goland:noinspection GoNameStartsWithPackageName +type InventoryMetricsCollector struct { + mAgentsDesc *prom.Desc + mNodesDesc *prom.Desc + mServicesDesc *prom.Desc + + metrics inventoryMetrics +} + +func NewInventoryMetrics(db *reform.DB, registry agentsRegistry) *InventoryMetrics { + return &InventoryMetrics{ + db: db, + registry: registry, + } +} + +func NewInventoryMetricsCollector(metrics inventoryMetrics) *InventoryMetricsCollector { + return &InventoryMetricsCollector{ + mAgentsDesc: prom.NewDesc( + prom.BuildFQName(prometheusNamespace, prometheusSubsystem, "agents"), + "Inventory Agent", + []string{"agent_id", "agent_type", "service_id", "node_id", "pmm_agent_id", "disabled", "version"}, + nil), + mNodesDesc: prom.NewDesc( + prom.BuildFQName(prometheusNamespace, prometheusSubsystem, "nodes"), + "Inventory Node", + []string{"node_id", "node_type", "node_name", "container_name"}, + nil), + mServicesDesc: prom.NewDesc( + prom.BuildFQName(prometheusNamespace, prometheusSubsystem, "services"), + "Inventory Service", + []string{"service_id", "service_type", "node_id"}, + nil), + + metrics: metrics, + } +} + +func GetRunsOnNodeIDByPMMAgentID(agents []*models.Agent, pmmAgentID string) string { + for _, agent := range agents { + if agent.AgentID == pmmAgentID { + return pointer.GetString(agent.RunsOnNodeID) + } + } + return "" +} + +func (i *InventoryMetrics) GetAgentMetrics(ctx context.Context) ([]Metric, error) { + metrics := []Metric{} + + errTx := i.db.InTransactionContext(ctx, nil, func(tx *reform.TX) error { + dbAgents, err := models.FindAgents(tx.Querier, models.AgentFilters{}) + if err != nil { + return err + } + + for _, agent := range dbAgents { + runsOnNodeID := "" + disabled := "0" + metricValue := float64(0) + + pmmAgentID := pointer.GetString(agent.PMMAgentID) + + if agent.Disabled { + disabled = "1" + } + + if agent.AgentType == models.PMMAgentType { + if i.registry.IsConnected(agent.AgentID) { + metricValue = 1 + } + runsOnNodeID = pointer.GetString(agent.RunsOnNodeID) + } else { + metricValue = float64(inventorypb.AgentStatus_value[agent.Status]) + runsOnNodeID = GetRunsOnNodeIDByPMMAgentID(dbAgents, pmmAgentID) + } + + agentMetricLabels := []string{ + agent.AgentID, + string(agent.AgentType), + pointer.GetString(agent.ServiceID), + runsOnNodeID, + pmmAgentID, + disabled, + pointer.GetString(agent.Version), + } + + metrics = append(metrics, Metric{labels: agentMetricLabels, value: metricValue}) + } + return nil + }) + + if errTx != nil { + return nil, errors.WithStack(errTx) + } + return metrics, nil +} + +func (i *InventoryMetrics) GetNodeMetrics(ctx context.Context) ([]Metric, error) { + var metrics []Metric + + errTx := i.db.InTransactionContext(ctx, nil, func(tx *reform.TX) error { + dbNodes, err := models.FindNodes(tx.Querier, models.NodeFilters{}) + if err != nil { + return err + } + + for _, node := range dbNodes { + nodeMetricLabels := []string{ + node.NodeID, + string(node.NodeType), + node.NodeName, + pointer.GetString(node.ContainerName), + } + + metrics = append(metrics, Metric{labels: nodeMetricLabels, value: serviceEnabled}) + } + + return nil + }) + + if errTx != nil { + return nil, errors.WithStack(errTx) + } + return metrics, nil +} + +func (i *InventoryMetrics) GetServiceMetrics(ctx context.Context) ([]Metric, error) { + var metrics []Metric + + errTx := i.db.InTransactionContext(ctx, nil, func(tx *reform.TX) error { + dbServices, err := models.FindServices(tx.Querier, models.ServiceFilters{}) + if err != nil { + return err + } + + for _, service := range dbServices { + serviceMetricLabels := []string{ + service.ServiceID, + string(service.ServiceType), + service.NodeID, + } + + metrics = append(metrics, Metric{labels: serviceMetricLabels, value: serviceEnabled}) + } + + return nil + }) + + if errTx != nil { + return nil, errors.WithStack(errTx) + } + return metrics, nil +} + +func (i *InventoryMetricsCollector) Describe(ch chan<- *prom.Desc) { + prom.DescribeByCollect(i, ch) +} + +func (i *InventoryMetricsCollector) Collect(ch chan<- prom.Metric) { + ctx, cancelCtx := context.WithTimeout(context.Background(), requestTimeout) + defer cancelCtx() + + ctx = logger.Set(ctx, "inventoryMetrics") + l := logger.Get(ctx) + + agentMetrics, err := i.metrics.GetAgentMetrics(ctx) + if err != nil { + l.Error(err) + return + } + + for _, agentMetric := range agentMetrics { + ch <- prom.MustNewConstMetric(i.mAgentsDesc, prom.GaugeValue, agentMetric.value, agentMetric.labels...) + } + + nodeMetrics, nodeError := i.metrics.GetNodeMetrics(ctx) + + if nodeError != nil { + l.Error(nodeError) + return + } + + for _, nodeMetric := range nodeMetrics { + ch <- prom.MustNewConstMetric(i.mNodesDesc, prom.GaugeValue, nodeMetric.value, nodeMetric.labels...) + } + + serviceMetrics, serviceError := i.metrics.GetServiceMetrics(ctx) + + if serviceError != nil { + l.Error(serviceError) + return + } + + for _, serviceMetric := range serviceMetrics { + ch <- prom.MustNewConstMetric(i.mServicesDesc, prom.GaugeValue, serviceMetric.value, serviceMetric.labels...) + } +} + +var _ prom.Collector = (*InventoryMetricsCollector)(nil) diff --git a/managed/services/inventory/inventory_metrics_test.go b/managed/services/inventory/inventory_metrics_test.go new file mode 100644 index 0000000000..c65631588f --- /dev/null +++ b/managed/services/inventory/inventory_metrics_test.go @@ -0,0 +1,128 @@ +// Copyright (C) 2023 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package inventory + +import ( + "context" + "io" + "net/http" + "strconv" + "strings" + "testing" + "time" + + "github.com/prometheus/client_golang/prometheus/testutil" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + + "github.com/percona/pmm/managed/models" +) + +func TestNewInventoryMetricsCollector(t *testing.T) { + metricsMock := &mockInventoryMetrics{} + inventoryCollector := NewInventoryMetricsCollector(metricsMock) + + agentMetrics := []Metric{ + { + labels: []string{"A1", string(models.PMMAgentType), "S1", "N1", "PA1", strconv.Itoa(1), "V1"}, + value: float64(1), + }, + } + + nodeMetrics := []Metric{ + { + labels: []string{"N1", string(models.GenericNodeType), "N1", "C1"}, + value: float64(1), + }, + } + + serviceMetrics := []Metric{ + { + labels: []string{"C1", string(models.ProxySQLServiceType), "N1"}, + value: float64(1), + }, + } + + t.Run("Metrics returns inventory metrics", func(t *testing.T) { + client := http.Client{} + + ctx, cancelCtx := context.WithTimeout(context.Background(), 3*time.Second) + defer cancelCtx() + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, "http://localhost:7773/debug/metrics", nil) + require.NoError(t, err) + resp, err := client.Do(req) + require.NoError(t, err) + defer resp.Body.Close() //nolint:gosec + + body, err := io.ReadAll(resp.Body) + require.NoError(t, err) + assert.Equal(t, http.StatusOK, resp.StatusCode) + assert.NotEmpty(t, body) + + assert.Contains(t, string(body), "TYPE pmm_managed_inventory_agents gauge") + assert.Contains(t, string(body), "TYPE pmm_managed_inventory_nodes gauge") + assert.Contains(t, string(body), "TYPE pmm_managed_inventory_services gauge") + }) + + t.Run("Collector", func(t *testing.T) { + metricsMock.On("GetAgentMetrics", mock.Anything).Return(agentMetrics, nil) + metricsMock.On("GetNodeMetrics", mock.Anything).Return(nodeMetrics, nil) + metricsMock.On("GetServiceMetrics", mock.Anything).Return(serviceMetrics, nil) + + const expectedAgentMetrics = ` + # HELP pmm_managed_inventory_agents Inventory Agent + # TYPE pmm_managed_inventory_agents gauge + pmm_managed_inventory_agents{agent_id="A1",agent_type="pmm-agent",disabled="1",node_id="N1",pmm_agent_id="PA1",service_id="S1",version="V1"} 1 + ` + + const expectedNodeMetrics = ` + # HELP pmm_managed_inventory_nodes Inventory Node + # TYPE pmm_managed_inventory_nodes gauge + pmm_managed_inventory_nodes{container_name="C1",node_id="N1",node_name="N1",node_type="generic"} 1 + ` + + const expectedServiceMetrics = ` + # HELP pmm_managed_inventory_services Inventory Service + # TYPE pmm_managed_inventory_services gauge + pmm_managed_inventory_services{node_id="N1",service_id="C1",service_type="proxysql"} 1 + ` + + if err := testutil.CollectAndCompare( + inventoryCollector, + strings.NewReader(expectedAgentMetrics), + "pmm_managed_inventory_agents"); err != nil { + t.Errorf("Unexpected collecting result:\n%s", err) + } + + if err := testutil.CollectAndCompare( + inventoryCollector, + strings.NewReader(expectedNodeMetrics), + "pmm_managed_inventory_nodes"); err != nil { + t.Errorf("Unexpected collecting result:\n%s", err) + } + + if err := testutil.CollectAndCompare( + inventoryCollector, + strings.NewReader(expectedServiceMetrics), + "pmm_managed_inventory_services"); err != nil { + t.Errorf("Unexpected collecting result:\n%s", err) + } + + metricsMock.AssertExpectations(t) + }) +} diff --git a/managed/services/inventory/mock_inventory_metrics_test.go b/managed/services/inventory/mock_inventory_metrics_test.go new file mode 100644 index 0000000000..2f0154ea20 --- /dev/null +++ b/managed/services/inventory/mock_inventory_metrics_test.go @@ -0,0 +1,83 @@ +// Code generated by mockery v1.0.0. DO NOT EDIT. + +package inventory + +import ( + context "context" + + mock "github.com/stretchr/testify/mock" +) + +// mockInventoryMetrics is an autogenerated mock type for the inventoryMetrics type +type mockInventoryMetrics struct { + mock.Mock +} + +// GetAgentMetrics provides a mock function with given fields: ctx +func (_m *mockInventoryMetrics) GetAgentMetrics(ctx context.Context) ([]Metric, error) { + ret := _m.Called(ctx) + + var r0 []Metric + if rf, ok := ret.Get(0).(func(context.Context) []Metric); ok { + r0 = rf(ctx) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]Metric) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetNodeMetrics provides a mock function with given fields: ctx +func (_m *mockInventoryMetrics) GetNodeMetrics(ctx context.Context) ([]Metric, error) { + ret := _m.Called(ctx) + + var r0 []Metric + if rf, ok := ret.Get(0).(func(context.Context) []Metric); ok { + r0 = rf(ctx) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]Metric) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// GetServiceMetrics provides a mock function with given fields: ctx +func (_m *mockInventoryMetrics) GetServiceMetrics(ctx context.Context) ([]Metric, error) { + ret := _m.Called(ctx) + + var r0 []Metric + if rf, ok := ret.Get(0).(func(context.Context) []Metric); ok { + r0 = rf(ctx) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]Metric) + } + } + + var r1 error + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} From 0eac120932f2bdc144d8aa66c19640f3108174aa Mon Sep 17 00:00:00 2001 From: Andrew Minkin Date: Tue, 6 Jun 2023 21:32:47 +0600 Subject: [PATCH 012/123] PMM-7 Upgrade aws-iam-authenticator (#1839) --- build/packages/rpm/server/SPECS/dbaas-tools.spec | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/build/packages/rpm/server/SPECS/dbaas-tools.spec b/build/packages/rpm/server/SPECS/dbaas-tools.spec index 8295a45ee6..1f211f708b 100644 --- a/build/packages/rpm/server/SPECS/dbaas-tools.spec +++ b/build/packages/rpm/server/SPECS/dbaas-tools.spec @@ -1,12 +1,12 @@ %undefine _missing_build_ids_terminate_build %define debug_package %{nil} -%global commit_aws 2a9ee95fecab59fab41a0b646a63227d66113434 +%global commit_aws d72e1b46444d0efcb995a28c3846223b39bc4964 %global shortcommit_aws %(c=%{commit_aws}; echo ${c:0:7}) -%global commit_k8s ad3338546da947756e8a88aa6822e9c11e7eac22 +%global commit_k8s ef70d260f3d036fc22b30538576bbf6b36329995 %global shortcommit_k8s %(c=%{commit_k8s}; echo ${c:0:7}) -%global version_k8s v1.23.7 +%global version_k8s v1.24.12 %global install_golang 1 %global debug_package %{nil} @@ -16,7 +16,7 @@ %define rpm_release %{release}.%{build_timestamp}%{?dist} Name: dbaas-tools -Version: 0.5.7 +Version: 0.6.2 Release: %{rpm_release} Summary: A set of tools for Percona DBaaS License: ASL 2.0 @@ -71,6 +71,10 @@ install -D -p -m 0775 _output/local/go/bin/kubectl %{buildroot}/opt/dbaas-tools/ /opt/dbaas-tools/bin/kubectl-1.23 %changelog + +* Mon Jun 05 2023 Andrew Minkin - 0.6.2-1 +- Update versions of kubectl and aws-iam-authenticator + * Mon Nov 21 2022 Alex Tymchuk - 0.5.7-2 - Fix the double description warning From b82ac11f8411bd5ed5ca33f7147dd0b9ed86e20f Mon Sep 17 00:00:00 2001 From: Michal Kralik Date: Wed, 7 Jun 2023 09:58:26 +0200 Subject: [PATCH 013/123] PMM-11472: telemetry for access control (#1690) Co-authored-by: Roman Novikov --- managed/services/telemetry/config.default.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/managed/services/telemetry/config.default.yml b/managed/services/telemetry/config.default.yml index 4d63fc7da4..87e8252d2b 100644 --- a/managed/services/telemetry/config.default.yml +++ b/managed/services/telemetry/config.default.yml @@ -65,6 +65,14 @@ telemetry: - metric_name: "pmm_server_dbaas_enabled" column: "dbaas_enabled" + - id: PMMServerAccessControlEnabled + source: PMMDB_SELECT + query: (CASE WHEN access_control->'enabled' = 'true' THEN '1' ELSE '0' END) AS access_control_enabled FROM settings s, jsonb_extract_path(s.settings, 'access_control') AS access_control + summary: "PMM Server Access Control feature enabled/disabled" + data: + - metric_name: "pmm_server_access_control_enabled" + column: "access_control_enabled" + - id: PMMServerUpdatesDisabled source: PMMDB_SELECT query: (CASE WHEN updates->'disabled' = 'true' THEN '1' ELSE '0' END) AS updates_disabled FROM settings s, jsonb_extract_path(s.settings, 'updates') AS updates @@ -409,6 +417,14 @@ telemetry: - metric_name: "pmm_server_usage_environments_count" column: "environments_count" + - id: PMMUsagePerconaRolesCount + source: PMMDB_SELECT + query: count(*) as roles_count from roles + summary: "Percona roles count" + data: + - metric_name: "pmm_server_percona_roles_count" + column: "roles_count" + - id: PMMUsageClustersCount source: PMMDB_SELECT query: count(distinct cluster) as clusters_count from services where cluster != ''; From 07b1e4e5694fc6ae4969124ca7aa93224eea13fc Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Wed, 7 Jun 2023 14:00:57 +0500 Subject: [PATCH 014/123] PMM fix el9 and el7 build (#2244) * PMM-12156 Update build/Makefile * PMM-12156 Update packer/pmm2.json ansible/roles/ami-ovf/tasks/main.yml * chore: clean up the makefile * chore: realign the code --------- Co-authored-by: Alex Tymchuk --- build/Makefile | 26 ++++++++++------------ build/ansible/roles/ami-ovf/tasks/main.yml | 11 ++++++++- build/packer/pmm2.json | 2 +- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/build/Makefile b/build/Makefile index 8f46fb48e6..b46808d5fb 100644 --- a/build/Makefile +++ b/build/Makefile @@ -1,7 +1,6 @@ export PACKER_CACHE_DIR := .cache export PACKER_VERSION := 1.8.2 export CENTOS_ISO := 2004.01 -export ORACLE_VERSION := 4.2.6 # if pulled from vagrant repository (see below) ## ----------------- PACKER ------------------ fetch: @@ -24,10 +23,6 @@ fetch-el9: chmod 600 ${PACKER_CACHE_DIR}/id_rsa_vagrant test -f ${PACKER_CACHE_DIR}/box/oracle9.ova \ || wget --progress=dot:giga https://vagrantcloud.com/bento/boxes/oracle-9.0/versions/202207.20.0/providers/virtualbox.box -O ${PACKER_CACHE_DIR}/box/oracle9.ova - #|| wget --progress=dot:giga https://yum.oracle.com/boxes/oraclelinux/ol9/OL9U1_x86_64-vagrant-virtualbox-b407.box -O ${PACKER_CACHE_DIR}/box/oracle9.ova - # https://app.vagrantup.com/generic/boxes/oracle9/versions/${ORACLE_VERSION}/providers/virtualbox.box - # https://yum.oracle.com/boxes/oraclelinux/ol9/OL9U1_x86_64-vagrant-virtualbox-b389.box - # https://yum.oracle.com/boxes/oraclelinux/ol8/OL8U7_x86_64-vagrant-virtualbox-b377.box # NOTE: image from vagrant registry is twice as large test -f ${PACKER_CACHE_DIR}/box/box.ovf \ @@ -81,18 +76,21 @@ pmm2-ami-rc: packer/pmm2.json pmm2-ami-el9: - docker run --rm -v ${HOME}/.aws:/root/.aws -v `pwd`:/build -w /build hashicorp/packer:${PACKER_VERSION} \ - build -var 'pmm_client_repos=original experimental' \ - -var 'pmm_client_repo_name=percona-experimental-x86_64' \ - -var 'pmm2_server_repo=experimental' \ - -only amazon-ebs -color=false \ - packer/pmm2.el9.json + mkdir -p update && \ + cp -r ../update/ansible/playbook/* update/ && \ + sed -i 's|become_method: su|become_method: sudo|g' update/tasks/roles/postgres/tasks/main.yml && \ + docker run --rm -v ${HOME}/.aws:/root/.aws -v `pwd`:/build -w /build hashicorp/packer:${PACKER_VERSION} \ + build -var 'pmm_client_repos=original experimental' \ + -var 'pmm_client_repo_name=percona-experimental-x86_64' \ + -var 'pmm2_server_repo=experimental' \ + -only amazon-ebs -color=false \ + packer/pmm2.el9.json pmm2-ami-el9-rc: mkdir -p update && \ - cp -r ../update/ansible/playbook/* update/ && \ - sed -i 's|become_method: su|become_method: sudo|g' update/tasks/roles/postgres/tasks/main.yml && \ - docker run --rm -v ${HOME}/.aws:/root/.aws -v `pwd`:/build -w /build hashicorp/packer:${PACKER_VERSION} \ + cp -r ../update/ansible/playbook/* update/ && \ + sed -i 's|become_method: su|become_method: sudo|g' update/tasks/roles/postgres/tasks/main.yml && \ + docker run --rm -v ${HOME}/.aws:/root/.aws -v `pwd`:/build -w /build hashicorp/packer:${PACKER_VERSION} \ build -var 'pmm_client_repos=original testing' \ -var 'pmm_client_repo_name=percona-testing-x86_64' \ -var 'pmm2_server_repo=testing' \ diff --git a/build/ansible/roles/ami-ovf/tasks/main.yml b/build/ansible/roles/ami-ovf/tasks/main.yml index c7affc1f58..2446fc09dc 100644 --- a/build/ansible/roles/ami-ovf/tasks/main.yml +++ b/build/ansible/roles/ami-ovf/tasks/main.yml @@ -48,8 +48,17 @@ dest: /var/lib/cloud/scripts/per-boot/show-pmm-url mode: 0755 -- name: PMM | Delete centos +- name: PMM | Delete centos EL7 shell: cd /tmp; nohup sh -c "trap 'userdel -r centos' EXIT; sleep 600" /dev/null 2>&1 & + when: + - ansible_distribution == 'CentOS' + - ansible_distribution_major_version == '7' + +- name: PMM | Delete ec2-user EL9 + shell: cd /tmp; nohup sh -c "trap 'userdel -r ec2-user' EXIT; sleep 600" /dev/null 2>&1 & + when: + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' - name: PMM | Delete vagrant shell: cd /tmp; nohup sh -c "trap 'userdel -r vagrant' EXIT; sleep 600" /dev/null 2>&1 & diff --git a/build/packer/pmm2.json b/build/packer/pmm2.json index 74aa89ae6c..01aaa57072 100644 --- a/build/packer/pmm2.json +++ b/build/packer/pmm2.json @@ -7,7 +7,7 @@ }, "builders": [{ "type": "amazon-ebs", - "ami_name": "PMM2 Server [{{isotime \"2006-01-02 1504\"}}]", + "ami_name": "PMM2 Server EL7 [{{isotime \"2006-01-02 1504\"}}]", "instance_type": "c4.xlarge", "launch_block_device_mappings": [{ "delete_on_termination": true, From f5fb32a60afd72d2c0194e75908910835cf1140c Mon Sep 17 00:00:00 2001 From: Oleksii <39950859+0leksii@users.noreply.github.com> Date: Wed, 7 Jun 2023 13:38:09 +0300 Subject: [PATCH 015/123] PMM-11982 Add datapoint for the number of DBs (#2116) * PMM-11982 Add datapoint for the number of DBs Add datapoint to show the number of databases per PostreSQL server. * PMM-11982 Exclude PMM database Exclude PMM postgres instance from the telemetry data. --------- Co-authored-by: Roman Novikov --- managed/services/telemetry/config.default.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/managed/services/telemetry/config.default.yml b/managed/services/telemetry/config.default.yml index 87e8252d2b..74924104e0 100644 --- a/managed/services/telemetry/config.default.yml +++ b/managed/services/telemetry/config.default.yml @@ -928,3 +928,11 @@ telemetry: - id: UIEvents summary: "UI Events" extension: UIEventsExtension + + - id: PostgresDBCount + source: VM + query: count by (service_id) (pg_stat_database_tup_fetched{service_name!="pmm-server-postgresql", datname!~"template.*|postgres", datid!="0"}) + summary: "Number of databases monitored per PostgreSQL server" + data: + - metric_name: "postgresql_db_count" + value: 1 From 93b86386212a97f74f83a1121d5bc5970962836a Mon Sep 17 00:00:00 2001 From: Nikita Beletskii Date: Wed, 7 Jun 2023 14:59:35 +0200 Subject: [PATCH 016/123] PMM-12157 disable home dashboard (#2191) Co-authored-by: Alex Tymchuk --- .../playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml b/update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml index 3d035a4a5a..d8f6b90937 100644 --- a/update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml @@ -91,7 +91,7 @@ when: not ansible_check_mode - name: Run grafana migrator - command: grafana-db-migrator --change-char-to-text --reset-home-dashboard /srv/grafana/grafana.db "postgres://grafana:grafana@localhost:5432/grafana?sslmode=disable" + command: grafana-db-migrator --change-char-to-text /srv/grafana/grafana.db "postgres://grafana:grafana@localhost:5432/grafana?sslmode=disable" register: migrator_output changed_when: "'All done' in migrator_output.stdout" From 5249218b6b5276a8367df1907234ab7e72896839 Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Thu, 8 Jun 2023 00:07:30 +0200 Subject: [PATCH 017/123] Deprecate config package (#1454) --- managed/services/config/config.go | 2 ++ managed/services/config/pmm-managed.yaml | 1 + 2 files changed, 3 insertions(+) diff --git a/managed/services/config/config.go b/managed/services/config/config.go index 271a23881a..c8637bd278 100644 --- a/managed/services/config/config.go +++ b/managed/services/config/config.go @@ -14,6 +14,8 @@ // along with this program. If not, see . // Package config provides configuration facility. +// +// Deprecated: please don't extend this package, it will be removed soon https://jira.percona.com/browse/PMM-11155 package config import ( diff --git a/managed/services/config/pmm-managed.yaml b/managed/services/config/pmm-managed.yaml index 8068096020..af40bfc254 100644 --- a/managed/services/config/pmm-managed.yaml +++ b/managed/services/config/pmm-managed.yaml @@ -1,3 +1,4 @@ +# DEPRECATED! Please don't add anything there, this package is deprecated and will be removed soon https://jira.percona.com/browse/PMM-11155 services: telemetry: enabled: true From bacb149a1eeaed6dccfa927de29e7c8ffe2ec3aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:19:49 +0000 Subject: [PATCH 018/123] Bump typescript from 5.0.4 to 5.1.3 in /cli-tests (#2223) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.0.4 to 5.1.3. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.0.4...v5.1.3) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 10 +++++----- cli-tests/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index c361b89c1d..830488d776 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -15,7 +15,7 @@ "playwright": "^1.33.0", "promise-retry": "^2.0.1", "shelljs": "^0.8.5", - "typescript": "^5.0.4" + "typescript": "^5.1.3" }, "devDependencies": { "@types/promise-retry": "^1.1.3", @@ -2563,15 +2563,15 @@ } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", + "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/unbox-primitive": { diff --git a/cli-tests/package.json b/cli-tests/package.json index 092605ffc5..b4228cebf8 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -19,7 +19,7 @@ "playwright": "^1.33.0", "promise-retry": "^2.0.1", "shelljs": "^0.8.5", - "typescript": "^5.0.4" + "typescript": "^5.1.3" }, "devDependencies": { "@types/promise-retry": "^1.1.3", From 3c14bc66c0e26ac14ec2b4b299fc8d87cb0a3137 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:31:56 +0000 Subject: [PATCH 019/123] Bump dotenv from 16.0.3 to 16.1.4 in /cli-tests (#2233) Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.0.3 to 16.1.4. - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v16.0.3...v16.1.4) --- updated-dependencies: - dependency-name: dotenv dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 11 +++++++---- cli-tests/package.json | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 830488d776..79f73a93ab 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@playwright/test": "^1.34.2", "@types/luxon": "^3.3.0", - "dotenv": "^16.0.3", + "dotenv": "^16.1.4", "luxon": "^3.3.0", "playwright": "^1.33.0", "promise-retry": "^2.0.1", @@ -741,11 +741,14 @@ } }, "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", + "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, "node_modules/err-code": { diff --git a/cli-tests/package.json b/cli-tests/package.json index b4228cebf8..1af11be17a 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -14,7 +14,7 @@ "dependencies": { "@playwright/test": "^1.34.2", "@types/luxon": "^3.3.0", - "dotenv": "^16.0.3", + "dotenv": "^16.1.4", "luxon": "^3.3.0", "playwright": "^1.33.0", "promise-retry": "^2.0.1", From cdb88afc9db53d2a0360bf1d9811c43e3e14e4e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:42:46 +0000 Subject: [PATCH 020/123] Bump @typescript-eslint/parser from 5.59.7 to 5.59.9 in /cli-tests (#2238) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.7 to 5.59.9. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.9/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 88 ++++++++++++++++++++++++++++++++++--- cli-tests/package.json | 2 +- 2 files changed, 82 insertions(+), 8 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 79f73a93ab..3e55e69e3e 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -21,7 +21,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.7", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/parser": "^5.59.9", "eslint": "8.41", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", @@ -286,14 +286,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.7.tgz", - "integrity": "sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.9.tgz", + "integrity": "sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/scope-manager": "5.59.9", + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/typescript-estree": "5.59.9", "debug": "^4.3.4" }, "engines": { @@ -312,6 +312,80 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", + "integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/visitor-keys": "5.59.9" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", + "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", + "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/visitor-keys": "5.59.9", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", + "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.9", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.59.7", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index 1af11be17a..2718eaa4b2 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -25,7 +25,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.7", - "@typescript-eslint/parser": "^5.59.7", + "@typescript-eslint/parser": "^5.59.9", "eslint": "8.41", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", From b947602cfe82e987e2e70dafbf281f442c82b18f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 22:53:38 +0000 Subject: [PATCH 021/123] Bump @typescript-eslint/eslint-plugin in /cli-tests (#2239) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.7 to 5.59.9. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.9/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 142 +++++++++--------------------------- cli-tests/package.json | 2 +- 2 files changed, 35 insertions(+), 109 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 3e55e69e3e..78c2103b2c 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -20,7 +20,7 @@ "devDependencies": { "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", - "@typescript-eslint/eslint-plugin": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", "eslint": "8.41", "eslint-config-airbnb-base": "^15.0.0", @@ -193,9 +193,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, "node_modules/@types/json5": { @@ -252,15 +252,15 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz", - "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.9.tgz", + "integrity": "sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/type-utils": "5.59.7", - "@typescript-eslint/utils": "5.59.7", + "@typescript-eslint/scope-manager": "5.59.9", + "@typescript-eslint/type-utils": "5.59.9", + "@typescript-eslint/utils": "5.59.9", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -312,7 +312,7 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "5.59.9", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", "integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==", @@ -329,88 +329,14 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", - "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", - "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/visitor-keys": "5.59.9", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", - "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.9", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz", - "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz", - "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.9.tgz", + "integrity": "sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.7", - "@typescript-eslint/utils": "5.59.7", + "@typescript-eslint/typescript-estree": "5.59.9", + "@typescript-eslint/utils": "5.59.9", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -431,9 +357,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz", - "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", + "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -444,13 +370,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz", - "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", + "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/visitor-keys": "5.59.7", + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/visitor-keys": "5.59.9", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -471,17 +397,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz", - "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.9.tgz", + "integrity": "sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.7", - "@typescript-eslint/types": "5.59.7", - "@typescript-eslint/typescript-estree": "5.59.7", + "@typescript-eslint/scope-manager": "5.59.9", + "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/typescript-estree": "5.59.9", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -497,12 +423,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.7", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz", - "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==", + "version": "5.59.9", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", + "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.7", + "@typescript-eslint/types": "5.59.9", "eslint-visitor-keys": "^3.3.0" }, "engines": { diff --git a/cli-tests/package.json b/cli-tests/package.json index 2718eaa4b2..b493f1b73d 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", - "@typescript-eslint/eslint-plugin": "^5.59.7", + "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", "eslint": "8.41", "eslint-config-airbnb-base": "^15.0.0", From f244dd065440074d462c83a01413ccf570c34657 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 23:04:31 +0000 Subject: [PATCH 022/123] Bump eslint from 8.41.0 to 8.42.0 in /cli-tests (#2232) Bumps [eslint](https://github.com/eslint/eslint) from 8.41.0 to 8.42.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.41.0...v8.42.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 24 ++++++++++++------------ cli-tests/package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 78c2103b2c..fb00f4c375 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -22,7 +22,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", - "eslint": "8.41", + "eslint": "8.42", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", @@ -77,18 +77,18 @@ } }, "node_modules/@eslint/js": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", - "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", + "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -833,16 +833,16 @@ } }, "node_modules/eslint": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", - "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", + "version": "8.42.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", + "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.41.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint/js": "8.42.0", + "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", diff --git a/cli-tests/package.json b/cli-tests/package.json index b493f1b73d..b33c9f051b 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -26,7 +26,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", - "eslint": "8.41", + "eslint": "8.42", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", From 94ea6e4acacad83de6c513bad57fe31b44ea1198 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 8 Jun 2023 14:25:49 +0300 Subject: [PATCH 023/123] PMM-12119 fix rds_exporter status update (#2131) * PMM-12119 fix rds_exporter status update * PMM-12119 added a missing import * PMM-12119 move agent retrival logic to roster * PMM-12119 add debug information * PMM-12119 fix formatting * PMM-12119 simpligy the debug stmnt * PMM-12119 fix supervisorctl for EL7 * PMM-12119 fix ansible debug msg * PMM-12119 fix ansible debug output * PMM-12119 fix ansible debug msg * PMM-12119 remove debug * PMM-12119 fix verbosity * PMM-12119 revert verbosity * PMM-12119 revert ansible changes * PMM-12119 minor corrections * PMM-12119 add roster tests * PMM-12119 add method comments * PMM-12119 make rdsSuffix a const * PMM-12119 minor correction * PMM-12119 fix linter warnings * PMM-12119 trigger the build * PMM-12119 try fixing the tests --- managed/services/agents/handler.go | 23 ++++-- managed/services/agents/registry.go | 2 +- managed/services/agents/roster.go | 60 +++++++++++--- managed/services/agents/roster_test.go | 109 +++++++++++++++++++++++++ managed/services/agents/state.go | 12 +-- managed/services/server/server_test.go | 4 +- 6 files changed, 178 insertions(+), 32 deletions(-) create mode 100644 managed/services/agents/roster_test.go diff --git a/managed/services/agents/handler.go b/managed/services/agents/handler.go index 9a841e7979..f88a944910 100644 --- a/managed/services/agents/handler.go +++ b/managed/services/agents/handler.go @@ -186,10 +186,14 @@ func (h *Handler) updateAgentStatusForChildren(ctx context.Context, agentID stri } func (h *Handler) stateChanged(ctx context.Context, req *agentpb.StateChangedRequest) error { - e := h.db.InTransaction(func(tx *reform.TX) error { - agentIDs := h.r.roster.get(req.AgentId) - if agentIDs == nil { - agentIDs = []string{req.AgentId} + var PMMAgentID string + + errTX := h.db.InTransaction(func(tx *reform.TX) error { + var agentIDs []string + var err error + PMMAgentID, agentIDs, err = h.r.roster.get(req.AgentId) + if err != nil { + return err } for _, agentID := range agentIDs { @@ -200,24 +204,27 @@ func (h *Handler) stateChanged(ctx context.Context, req *agentpb.StateChangedReq req.Status, req.ListenPort, pointer.ToStringOrNil(req.ProcessExecPath), - pointer.ToStringOrNil(req.Version)) + pointer.ToStringOrNil(req.Version), + ) if err != nil { return err } } return nil }) - if e != nil { - return e + if errTX != nil { + return errTX } + h.vmdb.RequestConfigurationUpdate() - agent, err := models.FindAgentByID(h.db.Querier, req.AgentId) + agent, err := models.FindAgentByID(h.db.Querier, PMMAgentID) if err != nil { return err } if agent.PMMAgentID == nil { return nil } + h.state.RequestStateUpdate(ctx, *agent.PMMAgentID) return nil } diff --git a/managed/services/agents/registry.go b/managed/services/agents/registry.go index 5c8d874f8a..f7ee0c7f9c 100644 --- a/managed/services/agents/registry.go +++ b/managed/services/agents/registry.go @@ -95,7 +95,7 @@ func NewRegistry(db *reform.DB) *Registry { agents: agents, - roster: newRoster(), + roster: newRoster(db), mConnects: prom.NewCounter(prom.CounterOpts{ Namespace: prometheusNamespace, diff --git a/managed/services/agents/roster.go b/managed/services/agents/roster.go index c42a2fe89c..4eba720bf2 100644 --- a/managed/services/agents/roster.go +++ b/managed/services/agents/roster.go @@ -16,16 +16,21 @@ package agents import ( + "sort" "strings" "sync" "github.com/sirupsen/logrus" + "gopkg.in/reform.v1" + + "github.com/percona/pmm/managed/models" ) type agentGroup string const ( - rdsGroup = agentGroup("rds") + rdsGroup = agentGroup("rds") + rdsSuffix = string("/" + rdsGroup) ) // roster groups several Agent IDs from an Inventory model to a single Group ID, as seen by pmm-agent. @@ -35,36 +40,67 @@ const ( type roster struct { l *logrus.Entry + db *reform.DB rw sync.RWMutex m map[string][]string } -func newRoster() *roster { +// newRoster creates a new roster instance. +func newRoster(db *reform.DB) *roster { return &roster{ - l: logrus.WithField("component", "roster"), - m: make(map[string][]string), + db: db, + l: logrus.WithField("component", "roster"), + m: make(map[string][]string), } } -func (r *roster) add(pmmAgentID string, group agentGroup, agentIDs []string) (groupID string) { //nolint:nonamedreturns +// add adds a new group of exporter IDs to the roster. +func (r *roster) add(pmmAgentID string, group agentGroup, exporters map[*models.Node]*models.Agent) string { r.rw.Lock() defer r.rw.Unlock() - groupID = pmmAgentID + "/" + string(group) - r.m[groupID] = agentIDs - r.l.Debugf("add: %s = %v", groupID, agentIDs) - return + groupID := pmmAgentID + "/" + string(group) + exporterIDs := make([]string, 0, len(exporters)) + for _, exporter := range exporters { + exporterIDs = append(exporterIDs, exporter.AgentID) + } + + sort.Strings(exporterIDs) + + r.m[groupID] = exporterIDs + r.l.Debugf("add: %s = %v", groupID, exporterIDs) + return groupID } -func (r *roster) get(groupID string) (agentIDs []string) { //nolint:nonamedreturns +// get returns a PMMAgentID and a group of exporter IDs for a given Group ID. +func (r *roster) get(groupID string) (string, []string, error) { r.rw.RLock() defer r.rw.RUnlock() - agentIDs = r.m[groupID] + PMMAgentID, ok := strings.CutSuffix(groupID, rdsSuffix) + agentIDs := r.m[groupID] + + if agentIDs == nil { + if !ok { + agentIDs = []string{PMMAgentID} + } else { + rdsExporterType := models.RDSExporterType + agents, err := models.FindAgents(r.db.Querier, models.AgentFilters{PMMAgentID: PMMAgentID, AgentType: &rdsExporterType}) + if err != nil { + return "", nil, err + } + agentIDs = make([]string, 0, len(agents)) + for _, agent := range agents { + agentIDs = append(agentIDs, agent.AgentID) + } + } + } + r.l.Debugf("get: %s = %v", groupID, agentIDs) - return agentIDs + return PMMAgentID, agentIDs, nil } +// clear removes the group of exporter IDs for a given PMM Agent ID. func (r *roster) clear(pmmAgentID string) { r.rw.Lock() defer r.rw.Unlock() diff --git a/managed/services/agents/roster_test.go b/managed/services/agents/roster_test.go new file mode 100644 index 0000000000..fc6b339a8c --- /dev/null +++ b/managed/services/agents/roster_test.go @@ -0,0 +1,109 @@ +// Copyright (C) 2017 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package agents + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "gopkg.in/reform.v1" + "gopkg.in/reform.v1/dialects/postgresql" + + "github.com/percona/pmm/managed/models" + "github.com/percona/pmm/managed/utils/testdb" +) + +func TestRoster(t *testing.T) { + setup := func(t *testing.T) (*roster, func(t *testing.T)) { + t.Helper() + + sqlDB := testdb.Open(t, models.SetupFixtures, nil) + db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) + + teardown := func(t *testing.T) { + t.Helper() + require.NoError(t, sqlDB.Close()) + } + + r := newRoster(db) + + return r, teardown + } + + t.Run("Add", func(t *testing.T) { + r, teardown := setup(t) + defer teardown(t) + + exporters := make(map[*models.Node]*models.Agent, 1) + node := &models.Node{ + NodeID: "node1", + NodeType: models.GenericNodeType, + } + exporters[node] = &models.Agent{ + AgentID: "agent1", + AgentType: models.RDSExporterType, + } + + const expected = "pmm-server/rds" + groupID := r.add("pmm-server", rdsGroup, exporters) + assert.Equal(t, expected, groupID) + + PMMAgentID, agentIDs, err := r.get(groupID) + require.NoError(t, err) + assert.Equal(t, "pmm-server", PMMAgentID) + assert.Equal(t, []string{"agent1"}, agentIDs) + }) + + t.Run("Get", func(t *testing.T) { + r, teardown := setup(t) + defer teardown(t) + + const groupID = "pmm-server/rds" + + PMMAgentID, agentIDs, err := r.get(groupID) + require.NoError(t, err) + assert.Equal(t, "pmm-server", PMMAgentID) + assert.Equal(t, []string{}, agentIDs) + }) + + t.Run("Clear", func(t *testing.T) { + r, teardown := setup(t) + defer teardown(t) + + exporters := make(map[*models.Node]*models.Agent, 1) + node := &models.Node{ + NodeID: "node1", + NodeType: models.GenericNodeType, + } + exporters[node] = &models.Agent{ + AgentID: "agent1", + AgentType: models.RDSExporterType, + } + + const expectedGroupID = "pmm-server/rds" + PMMAgentID := "pmm-server" + groupID := r.add(PMMAgentID, rdsGroup, exporters) + assert.Equal(t, expectedGroupID, groupID) + + r.clear(PMMAgentID) + PMMAgentID, agentIDs, err := r.get(groupID) + + require.NoError(t, err) + assert.Equal(t, "pmm-server", PMMAgentID) + assert.Equal(t, []string{}, agentIDs) + }) +} diff --git a/managed/services/agents/state.go b/managed/services/agents/state.go index 9ffddde95a..b2242190ff 100644 --- a/managed/services/agents/state.go +++ b/managed/services/agents/state.go @@ -17,7 +17,6 @@ package agents import ( "context" - "sort" "sync" "time" @@ -201,6 +200,7 @@ func (u *StateUpdater) sendSetStateRequest(ctx context.Context, agent *pmmAgentI return err } rdsExporters[node] = row + case models.ExternalExporterType: // ignore @@ -260,24 +260,20 @@ func (u *StateUpdater) sendSetStateRequest(ctx context.Context, agent *pmmAgentI } if len(rdsExporters) != 0 { - rdsExporterIDs := make([]string, 0, len(rdsExporters)) - for _, rdsExporter := range rdsExporters { - rdsExporterIDs = append(rdsExporterIDs, rdsExporter.AgentID) - } - sort.Strings(rdsExporterIDs) - - groupID := u.r.roster.add(agent.id, rdsGroup, rdsExporterIDs) + groupID := u.r.roster.add(agent.id, rdsGroup, rdsExporters) c, err := rdsExporterConfig(rdsExporters, redactMode, pmmAgentVersion) if err != nil { return err } agentProcesses[groupID] = c } + state := &agentpb.SetStateRequest{ AgentProcesses: agentProcesses, BuiltinAgents: builtinAgents, } l.Debugf("sendSetStateRequest:\n%s", proto.MarshalTextString(state)) + resp, err := agent.channel.SendAndWaitResponse(state) if err != nil { return err diff --git a/managed/services/server/server_test.go b/managed/services/server/server_test.go index f4f77d4e7e..004df80387 100644 --- a/managed/services/server/server_test.go +++ b/managed/services/server/server_test.go @@ -286,7 +286,7 @@ func TestServer(t *testing.T) { }) } -func TestServer_TestEmailAlertingSettings(t *testing.T) { +func TestServer_TestEmailAlertingSettings(t *testing.T) { //nolint:tparallel t.Parallel() var server Server @@ -426,9 +426,7 @@ func TestServer_TestEmailAlertingSettings(t *testing.T) { }, }, } { - tc := tc t.Run(tc.testName, func(t *testing.T) { - t.Parallel() if tc.mock != nil { tc.mock() } From 1e7f71af08ca6e0c481e01af004483acc040a137 Mon Sep 17 00:00:00 2001 From: Ceri Williams Date: Thu, 8 Jun 2023 14:47:12 +0000 Subject: [PATCH 024/123] Improved sed (#2250) --- scripts/authfix.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/authfix.sh b/scripts/authfix.sh index 0b21fc01c4..52bbbea4c4 100644 --- a/scripts/authfix.sh +++ b/scripts/authfix.sh @@ -2,7 +2,7 @@ set -eu trap "echo FAILED" ERR -sed -i 's^error_page 401 = /auth_request;^\0\nif ($request ~ (\\.\\.|%2e%2e)) { return 403; }^' /etc/nginx/conf.d/pmm.conf -grep -Fq 'request ~ (\.\.|%2e%2e)' /etc/nginx/conf.d/pmm.conf +sed -i 's^error_page 401 = /auth_request;^\0\nif ($request ~ (\\.\\.|%2[eE]%2[eE])) { return 403; }^' /etc/nginx/conf.d/pmm.conf +grep -Fq 'request ~ (\.\.|%2[eE]%2[eE])' /etc/nginx/conf.d/pmm.conf nginx -t nginx -s reload From b462afa8740e342b5a1c93c7f6d48becdc538ab4 Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Fri, 9 Jun 2023 15:15:06 +0500 Subject: [PATCH 025/123] PMM fix el9 and el7 builds (#2249) * PMM-12156 Update Makefile packer/pmm2.json * PMM-12156 build/packer/pmm2.el9.json * PMM-12156 Update packer/pmm2.json --- build/Makefile | 1 + build/packer/pmm2.el9.json | 2 +- build/packer/pmm2.json | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/build/Makefile b/build/Makefile index b46808d5fb..a975d94adb 100644 --- a/build/Makefile +++ b/build/Makefile @@ -46,6 +46,7 @@ pmm2-ovf-el9-rc: fetch-el9 | tee build.log pmm2-ovf-el9-dev-latest: fetch-el9 + sed -i 's|become_method: su|become_method: sudo|g' update/tasks/roles/postgres/tasks/main.yml && \ /usr/bin/packer build \ -var 'pmm_client_repos=original experimental' \ -var 'pmm_client_repo_name=percona-experimental-x86_64' \ diff --git a/build/packer/pmm2.el9.json b/build/packer/pmm2.el9.json index 016a5f1cae..29d985022b 100644 --- a/build/packer/pmm2.el9.json +++ b/build/packer/pmm2.el9.json @@ -66,7 +66,7 @@ }, { "type": "virtualbox-ovf", - "vm_name": "PMM2-Server-{{isotime \"2006-01-02-1504\"}}", + "vm_name": "PMM2-Server-EL9-{{isotime \"2006-01-02-1504\"}}", "export_opts": [ "--ovf10", "--manifest", diff --git a/build/packer/pmm2.json b/build/packer/pmm2.json index 01aaa57072..cf609ff5a7 100644 --- a/build/packer/pmm2.json +++ b/build/packer/pmm2.json @@ -64,7 +64,7 @@ }, { "type": "virtualbox-ovf", - "vm_name": "PMM2-Server-{{isotime \"2006-01-02-1504\"}}", + "vm_name": "PMM2-Server-EL7-{{isotime \"2006-01-02-1504\"}}", "export_opts": [ "--ovf10", "--manifest", @@ -79,7 +79,7 @@ "format": "ovf", "guest_additions_mode": "disable", "headless": true, - "output_directory": "pmm2-virtualbox-ovf", + "output_directory": "pmm2-virtualbox-ovf-el7", "shutdown_command": "rm -rf ~/.ssh/authorized_keys; cat /dev/zero > zero.fill; sync; sleep 1; sync; rm -f zero.fill; sudo shutdown -P now", "source_path": ".cache/2004.01/box.ovf", "ssh_private_key_file": ".cache/id_rsa_vagrant", @@ -161,7 +161,7 @@ "inline": [ "set -o errexit", "set -o xtrace", - "pushd pmm2-virtualbox-ovf", + "pushd pmm2-virtualbox-ovf-el7", " NAME=$(ls *.ovf | sed -e 's/.ovf//')", " sed -i'' -e 's/virtualbox-2.2/vmx-10/' *.ovf", " sed -i'' -e 's/ovf:id=\"80\"/ovf:id=\"102\"/' *.ovf", From 3cf2a36729189daea7184a104c6c78cabcc92b1e Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Fri, 9 Jun 2023 15:08:45 +0300 Subject: [PATCH 026/123] PMM-12175 fix supervisorctl path for EL7. (#2254) --- .../tasks/roles/postgres/tasks/main.yml | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml b/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml index 0bab71b74d..70863fa47a 100644 --- a/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml @@ -217,12 +217,30 @@ state: absent when: is_upgrade.stat.exists - - name: Reread supervisord configuration + - name: Reread supervisord configuration EL7 + when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' + command: supervisorctl reread + register: reread_result + changed_when: "'No config updates to processes' not in reread_result.stdout" + + - name: Reread supervisord configuration EL9 + when: (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' command: /usr/local/bin/supervisorctl reread become: true - when: is_upgrade.stat.exists + register: reread_result + changed_when: "'No config updates to processes' not in reread_result.stdout" + + - name: Restart Postgres | EL7 + command: supervisorctl {{ item }} postgresql + changed_when: True + become: true + loop: + - stop + - remove + - add + when: is_upgrade.stat.exists and ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' - - name: Restart Postgres + - name: Restart Postgres | EL9 command: /usr/local/bin/supervisorctl {{ item }} postgresql changed_when: True become: true @@ -230,7 +248,7 @@ - stop - remove - add - when: is_upgrade.stat.exists + when: is_upgrade.stat.exists and (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' - name: Run pmm-managed again | EL7 supervisorctl: From 06c4ddfcc2f840710af450eee086a556776abb10 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Fri, 9 Jun 2023 15:50:27 +0200 Subject: [PATCH 027/123] PMM-12216 clean metadata (#2253) * PMM-12175 clean metadata * Fix ansible --------- Co-authored-by: Roman Novikov --- .../playbook/tasks/roles/initialization/tasks/main.yml | 4 ++++ update/ansible/playbook/tasks/update.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml b/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml index f84e0a2616..1aa2fce386 100644 --- a/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml @@ -17,6 +17,10 @@ command: yum-config-manager --setopt=epel.timeout=1 --save changed_when: True +- name: Clean yum metadata + command: yum clean metadata + become: true + - name: Get current version slurp: src: /srv/grafana/PERCONA_DASHBOARDS_VERSION diff --git a/update/ansible/playbook/tasks/update.yml b/update/ansible/playbook/tasks/update.yml index 39ca84dca7..2df7d2bf3a 100644 --- a/update/ansible/playbook/tasks/update.yml +++ b/update/ansible/playbook/tasks/update.yml @@ -190,6 +190,10 @@ - skip_ansible_lint # '503 Tasks that run when changed should likely be handlers'. # The handler looks bad in this case + - name: Cleanup yum metadata + command: yum clean metadata + become: true + # Split download and update to produce a bit more of progress output. - name: Download pmm2 packages yum: From 702f23c5bd6e125237c129c0d0ddef004b688740 Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Fri, 9 Jun 2023 19:20:23 +0500 Subject: [PATCH 028/123] PMM-12156 Update Dockerfile.el9 to fix server build. (#2255) --- build/docker/server/Dockerfile.el9 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/build/docker/server/Dockerfile.el9 b/build/docker/server/Dockerfile.el9 index e860488e7d..ff9f5d2b3a 100644 --- a/build/docker/server/Dockerfile.el9 +++ b/build/docker/server/Dockerfile.el9 @@ -15,11 +15,16 @@ WORKDIR /opt # NOTE: Ansible should NOT be installed via yum/dnf # Read more: https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#pip-install +# RUN microdnf -y install yum && yum -y install python3-pip && \ +# yum -y install oracle-epel-release-el9 ansible-core && \ +# python3 -m pip install ansible && \ +# python3 -m pip install setuptools && \ +# yum -y install epel-release + RUN microdnf -y install yum && yum -y install python3-pip && \ yum -y install oracle-epel-release-el9 ansible-core && \ - python3 -m pip install ansible && \ - python3 -m pip install setuptools && \ - yum -y install epel-release + yum -y install epel-release && \ + yum -y install ansible COPY RPMS /tmp/RPMS COPY gitCommit /tmp/gitCommit From 7d5b080bb4ebdee57706e43a242e400d9dd34267 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Fri, 9 Jun 2023 18:24:53 +0300 Subject: [PATCH 029/123] PMM-7 ignore patch updates. (#2246) --- .github/dependabot.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 30e1048dbb..caced98a72 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,16 +5,25 @@ updates: directory: "/" schedule: interval: "daily" + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-patch"] - package-ecosystem: "gomod" directory: "/tools" schedule: interval: "daily" + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-patch"] - package-ecosystem: "gomod" directory: "/api-tests/tools" schedule: interval: "daily" + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-patch"] - package-ecosystem: "docker" directory: "/" @@ -45,3 +54,6 @@ updates: directory: "/cli-tests" schedule: interval: "daily" + ignore: + - dependency-name: "*" + update-types: ["version-update:semver-patch"] From 6ce80067f2d85406fe5ca79060c2a0a720fdf4c8 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Fri, 9 Jun 2023 21:03:52 +0300 Subject: [PATCH 030/123] PMM-12175 fix FB for EL7. (#2258) --- .../ansible/playbook/tasks/roles/postgres/tasks/main.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml b/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml index 70863fa47a..e70c17ca80 100644 --- a/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/postgres/tasks/main.yml @@ -218,17 +218,13 @@ when: is_upgrade.stat.exists - name: Reread supervisord configuration EL7 - when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' + when: is_upgrade.stat.exists and ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' command: supervisorctl reread - register: reread_result - changed_when: "'No config updates to processes' not in reread_result.stdout" - name: Reread supervisord configuration EL9 - when: (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' + when: is_upgrade.stat.exists and (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' command: /usr/local/bin/supervisorctl reread become: true - register: reread_result - changed_when: "'No config updates to processes' not in reread_result.stdout" - name: Restart Postgres | EL7 command: supervisorctl {{ item }} postgresql From 32f75ea0e144bb4801db2e594fdefdcb3e2060f6 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Fri, 9 Jun 2023 22:17:31 +0200 Subject: [PATCH 031/123] ENG-7 fix ansible (#2259) --- .../ansible/playbook/tasks/roles/initialization/tasks/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml b/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml index 1aa2fce386..888d71ef64 100644 --- a/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml @@ -20,6 +20,7 @@ - name: Clean yum metadata command: yum clean metadata become: true + changed_when: True - name: Get current version slurp: From 60fcab01056f4f03ef127a105a9ab1319fbaa864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20=C4=8Ctvrtka?= <62988319+JiriCtvrtka@users.noreply.github.com> Date: Mon, 12 Jun 2023 13:54:12 +0200 Subject: [PATCH 032/123] PMM-2852 Comments in QAN filter. (#1849) * PMM-2852 MySQL comments parser. * PMM-2852 Improvements. * PMM-2852 Add header. * PMM-2852 Improvements during parsing. * PMM-2852 Lint. * PMM-2852 Remove comments. * PMM-2852 Remove extra line. * PMM-2852 Add case with no comment. * PMM-2852 Some progress. * PMM-2852 Change of behaviour of MySQL. * PMM-2852 Progress on MySQL. * PMM-2852 Another MySQL progress. * PMM-2852 Finish MySQL part. * PMM-2852 PGSQL comments parsing * PMM-2852 PGSQL update column name for pg_stat_monitor * PMM-2852 Fix for nil pointer. * PMM-2852 Fix PG. * PMM-2852 Add trim to PGSM comments. * PMM-2852 Update PG PGSM compose. * PMM-2852 Mongo and supervisor fix. * Revert "PMM-2852 Mongo and supervisor fix." This reverts commit afeb55c3faa48e450802c3e91b5e6c01ffcbe087. * PMM-2852 Supervisor. * PMM-2852 Gen. * PMM-2852 Gen. * PMM-2852 Gen. * PMM-2852 Remove todo. * PMM-2852 Fix tests. * PMM-2852 Add PostgreSQLComments tests. * PMM-2852 Filters. * PMM-2852 Gen. * PMM-2852 Clickhouse env for M1 chips. * PMM-2852 Test. * PMM-2852 Test. * PMM-2852 Test. * PMM-2852 Lint. * PMM-2852 Fix test. * PMM-2852 Small refactor. * PMM-2852 Small refactor. * PMM-2852 Lint. * Update admin/commands/inventory/add_agent_qan_mysql_perfschema_agent.go Co-authored-by: Michal Kralik * PMM-2852 Add test. * PMM-2852 Gen. * PMM-2852 Changes. * PMM-2852 Refactor. * PMM-2852 Fix tests. * PMM-2852 Lint lll. * PMM-2852 Fix tests. * PMM-2852 Tests. * PMM-2852 Fix test. * PMM-2852 QAN tests. * PMM-2852 Fix after conflicts. * PMM-2852 Fix. * PMM-2852 Lint. * PMM-2852 Fix slowlog test. * PMM-2852 Gen. * PMM-2852 Changes. * PMM-2852 Fix perfschema. * PMM-2852 Fix for statements. * trigger * PMM-2852 Fix for flag. * PMM-2852 Changes. * PMM-2852 Fix. * PMM-2852 Changes. * PMM-2852 Changes. * PMM-2852 Changes. * PMM-2852 Lint. * PMM-2852 Tidy. * PMM-2852 Fix. * PMM-2852 Cleaning. * PMM-2852 Fix, refactor, cleaning. * PMM-2852 Query tags. * PMM-2852 Fix another test. * PMM-2852 Fix another tests. * PMM-2852 Lint. * PMM-2852 Refresh test data. * PMM-2852 Fix slowlog test. * PMM-2852 Rewrite test. * PMM-2852 Slowlog fix. * PMM-2852 Fix QAN filter test. * PMM-2852 Lint. * PMM-2852 Migrations test. * PMM-2852 Refactor. Changes. * PMM-2852 Refactor. * PMM-2852 PGSS test. * PMM-2852 PGSS. * PMM-2852 PGSS PGSM * PMM-2852 PGSM. * PMM-2852 Fix client test. * PMM-2852 PGSS. * PMM-2852 Fix database test. * PMM-2852 Tidy. * PMM-2852 Outdated task comment. * PMM-2852 Lint. * PMM-2852 Fix migration. * PMM-2852 Fix out of range for historical items. * PMM-2852 QAN regen. * Revert "PMM-2852 Fix out of range for historical items." This reverts commit f5829cc9f6147240c5bf6a699f249e02c35c7c9d. * PMM-2852 Some changes. * PMM-2852 Logic fix for labels. * PMM-2852 Refactor. * PMM-2852 Sparklines fix. * PMM-2852 QAN Regen. * PMM-2852 QAN regen. * PMM-2852 Filter fix. * PMM-2852 Filter labels WITHOUT dimensions, labels. To avoid disappearing of groups. * PMM-2852 Fix. * PMM-2852 Gen. * PMM-2852 QAN data refresh. * PMM-2852 Lint. * PMM-2852 Clean refresh. * PMM-2852 Fresh gen. * PMM-2852 Fix to not include sparklines. * PMM-2852 Fix reporter. * PMM-2852 Remove mainPerSec from labels. * PMM-2852 Lint. * PMM-2852 Refresh. * PMM-2852 Fix test for AND relation in Labels. * PMM-2852 With OR in sparklines. * PMM-2852 AND between labels, but OR for same key. * PMM-2852 Format. * PMM-2852 Typo. * PMM-2852 Rows. * PMM-2852 Clean unnecessary changes. * PMM-2852 Small refactor. * PMM-2852 Comment out just for FB. * PMM-2852 Dash support in comments keys, changes in tags. * PMM-2852 Support for digits in comments key. * PMM-2852 Remove reform from database tests. * PMM-2852 Fix. * PMM-2852 Fix. * PMM-2852 Fix. * PMM-2852 DB test. * PMM-2852 Fix percentage. * PMM-2852 Changes on defaults for comments parsing. * PMM-2852 Lint. * PMM-2852 Default test. * PMM-2852 Fix test. * PMM-2852 Required changes. * PMM-2852 Fix order of comments in map. * trigger * PMM-2852 Fix tests. * PMM-2852 Slowlog test. * PMM-2582 Fix test. * PMM-2852 Fix. * PMM-2852 Fix duplicate key writing in comments. * PMM-2852 Fix test after remove duplicity key. * PMM-2852 Fix test. --------- Co-authored-by: yurkovychv Co-authored-by: Michal Kralik Co-authored-by: IuriiMr --- .../add_agent_qan_mysql_perfschema_agent.go | 35 +- .../add_agent_qan_mysql_slowlog_agent.go | 37 +- ...d_agent_qan_postgres_pgstatements_agent.go | 21 +- ..._agent_qan_postgres_pgstatmonitor_agent.go | 23 +- admin/commands/management/add_mysql.go | 14 +- admin/commands/management/add_postgresql.go | 23 +- agent/agents/mysql/perfschema/perfschema.go | 91 +- .../mysql/perfschema/perfschema_test.go | 24 +- agent/agents/mysql/slowlog/slowlog.go | 47 +- agent/agents/mysql/slowlog/slowlog_test.go | 11 +- .../postgres/pgstatmonitor/pgstatmonitor.go | 60 +- .../pgstatmonitor/pgstatmonitor_models.go | 2 + .../pgstatmonitor/pgstatmonitor_test.go | 31 +- .../pgstatmonitor/stat_monitor_cache_test.go | 2 +- .../postgres/pgstatstatements/models.go | 5 +- .../pgstatstatements/pgstatstatements.go | 59 +- .../pgstatstatements/pgstatstatements_test.go | 23 +- agent/agents/supervisor/supervisor.go | 52 +- agent/connectionchecker/connection_checker.go | 4 +- agent/docker-compose-pg-load.yml | 1 + agent/queryparser/helpers.go | 285 +++ agent/queryparser/parser.go | 36 + agent/queryparser/parser_test.go | 118 +- api/agentpb/agent.pb.go | 1705 ++++++------- api/agentpb/agent.pb.validate.go | 2 + api/agentpb/agent.proto | 2 + api/agentpb/collector.pb.go | 1232 ++++----- api/agentpb/collector.pb.validate.go | 2 + api/agentpb/collector.proto | 2 + api/inventorypb/agents.pb.go | 2201 +++++++++-------- api/inventorypb/agents.pb.validate.go | 16 + api/inventorypb/agents.proto | 16 + ..._qan_my_sql_perf_schema_agent_responses.go | 6 + .../add_qan_my_sql_slowlog_agent_responses.go | 6 + ...gre_sql_pg_stat_monitor_agent_responses.go | 6 + ...stgre_sql_pg_statements_agent_responses.go | 6 + ..._qan_my_sql_perf_schema_agent_responses.go | 3 + ...ange_qan_my_sql_slowlog_agent_responses.go | 3 + ...gre_sql_pg_stat_monitor_agent_responses.go | 3 + ...stgre_sql_pg_statements_agent_responses.go | 3 + .../json/client/agents/get_agent_responses.go | 12 + .../client/agents/list_agents_responses.go | 12 + api/inventorypb/json/inventorypb.json | 330 ++- api/managementpb/agent/agent.pb.go | 261 +- api/managementpb/agent/agent.pb.validate.go | 2 + api/managementpb/agent/agent.proto | 2 + api/managementpb/agent/json/agent.json | 31 +- .../client/agent/list_agents_responses.go | 3 + .../client/my_sql/add_my_sql_responses.go | 9 + .../postgre_sql/add_postgre_sql_responses.go | 9 + .../json/client/rds/add_rds_responses.go | 6 + api/managementpb/json/managementpb.json | 162 +- api/managementpb/mysql.pb.go | 201 +- api/managementpb/mysql.pb.validate.go | 2 + api/managementpb/mysql.proto | 2 + api/managementpb/postgresql.pb.go | 181 +- api/managementpb/postgresql.pb.validate.go | 2 + api/managementpb/postgresql.proto | 2 + .../mgmt_service/list_services_responses.go | 3 + api/managementpb/service/json/service.json | 31 +- api/swagger/swagger-dev.json | 554 +++-- api/swagger/swagger.json | 492 ++-- go.mod | 1 + go.sum | 3 +- managed/models/agent_helpers.go | 2 + managed/models/agent_model.go | 11 +- managed/models/agent_model_reform.go | 29 +- managed/models/database.go | 20 +- managed/models/database_test.go | 67 +- managed/services/agents/mysql.go | 20 +- managed/services/agents/postgresql.go | 20 +- managed/services/converters.go | 106 +- managed/services/inventory/agents.go | 92 +- managed/services/management/agent.go | 1 + managed/services/management/agent_test.go | 14 +- managed/services/management/mysql.go | 44 +- managed/services/management/postgresql.go | 41 +- managed/services/qan/client.go | 4 + qan-api2/Makefile | 7 + qan-api2/models/reporter.go | 91 +- qan-api2/services/analytics/filters_test.go | 66 +- .../TestService_GetFilters_success.json | 600 +++++ ...sions_client_host_schema_service_name.json | 600 +++++ ...ters_success_with_dimensions_multiple.json | 600 +++++ ...ters_success_with_dimensions_username.json | 600 +++++ ...ervice_GetFilters_success_with_labels.json | 600 +++++ 86 files changed, 8328 insertions(+), 3838 deletions(-) create mode 100644 agent/queryparser/helpers.go diff --git a/admin/commands/inventory/add_agent_qan_mysql_perfschema_agent.go b/admin/commands/inventory/add_agent_qan_mysql_perfschema_agent.go index 3195a93e5a..cf8939fc6f 100644 --- a/admin/commands/inventory/add_agent_qan_mysql_perfschema_agent.go +++ b/admin/commands/inventory/add_agent_qan_mysql_perfschema_agent.go @@ -60,6 +60,7 @@ type AddAgentQANMySQLPerfSchemaAgentCommand struct { Password string `help:"MySQL password for scraping metrics"` CustomLabels map[string]string `mapsep:"," help:"Custom user-assigned labels"` SkipConnectionCheck bool `help:"Skip connection check"` + CommentsParsing string `enum:"on,off" default:"off" help:"Enable/disable parsing comments from queries. One of: [on, off]"` MaxQueryLength int32 `placeholder:"NUMBER" help:"Limit query length in QAN (default: server-defined; -1: no limit)"` DisableQueryExamples bool `name:"disable-queryexamples" help:"Disable collection of query examples"` TLS bool `help:"Use TLS to connect to the database"` @@ -94,22 +95,28 @@ func (cmd *AddAgentQANMySQLPerfSchemaAgentCommand) RunCmd() (commands.Result, er } } + disableCommentsParsing := true + if cmd.CommentsParsing == "on" { + disableCommentsParsing = false + } + params := &agents.AddQANMySQLPerfSchemaAgentParams{ Body: agents.AddQANMySQLPerfSchemaAgentBody{ - PMMAgentID: cmd.PMMAgentID, - ServiceID: cmd.ServiceID, - Username: cmd.Username, - Password: cmd.Password, - CustomLabels: customLabels, - SkipConnectionCheck: cmd.SkipConnectionCheck, - MaxQueryLength: cmd.MaxQueryLength, - DisableQueryExamples: cmd.DisableQueryExamples, - TLS: cmd.TLS, - TLSSkipVerify: cmd.TLSSkipVerify, - TLSCa: tlsCa, - TLSCert: tlsCert, - TLSKey: tlsKey, - LogLevel: &cmd.LogLevel, + PMMAgentID: cmd.PMMAgentID, + ServiceID: cmd.ServiceID, + Username: cmd.Username, + Password: cmd.Password, + CustomLabels: customLabels, + SkipConnectionCheck: cmd.SkipConnectionCheck, + DisableCommentsParsing: disableCommentsParsing, + MaxQueryLength: cmd.MaxQueryLength, + DisableQueryExamples: cmd.DisableQueryExamples, + TLS: cmd.TLS, + TLSSkipVerify: cmd.TLSSkipVerify, + TLSCa: tlsCa, + TLSCert: tlsCert, + TLSKey: tlsKey, + LogLevel: &cmd.LogLevel, }, Context: commands.Ctx, } diff --git a/admin/commands/inventory/add_agent_qan_mysql_slowlog_agent.go b/admin/commands/inventory/add_agent_qan_mysql_slowlog_agent.go index 9030cf631b..c74af0a3c7 100644 --- a/admin/commands/inventory/add_agent_qan_mysql_slowlog_agent.go +++ b/admin/commands/inventory/add_agent_qan_mysql_slowlog_agent.go @@ -72,6 +72,7 @@ type AddAgentQANMySQLSlowlogAgentCommand struct { Password string `help:"MySQL password for scraping metrics"` CustomLabels map[string]string `mapsep:"," help:"Custom user-assigned labels"` SkipConnectionCheck bool `help:"Skip connection check"` + CommentsParsing string `enum:"on,off" default:"off" help:"Enable/disable parsing comments from queries. One of: [on, off]"` MaxQueryLength int32 `placeholder:"NUMBER" help:"Limit query length in QAN (default: server-defined; -1: no limit)"` DisableQueryExamples bool `name:"disable-queryexamples" help:"Disable collection of query examples"` MaxSlowlogFileSize units.Base2Bytes `name:"size-slow-logs" placeholder:"size" help:"Rotate slow log file at this size (default: 0; 0 or negative value disables rotation). Ex.: 1GiB"` @@ -107,23 +108,29 @@ func (cmd *AddAgentQANMySQLSlowlogAgentCommand) RunCmd() (commands.Result, error } } + disableCommentsParsing := true + if cmd.CommentsParsing == "on" { + disableCommentsParsing = false + } + params := &agents.AddQANMySQLSlowlogAgentParams{ Body: agents.AddQANMySQLSlowlogAgentBody{ - PMMAgentID: cmd.PMMAgentID, - ServiceID: cmd.ServiceID, - Username: cmd.Username, - Password: cmd.Password, - CustomLabels: customLabels, - SkipConnectionCheck: cmd.SkipConnectionCheck, - MaxQueryLength: cmd.MaxQueryLength, - DisableQueryExamples: cmd.DisableQueryExamples, - MaxSlowlogFileSize: strconv.FormatInt(int64(cmd.MaxSlowlogFileSize), 10), - TLS: cmd.TLS, - TLSSkipVerify: cmd.TLSSkipVerify, - TLSCa: tlsCa, - TLSCert: tlsCert, - TLSKey: tlsKey, - LogLevel: &cmd.LogLevel, + PMMAgentID: cmd.PMMAgentID, + ServiceID: cmd.ServiceID, + Username: cmd.Username, + Password: cmd.Password, + CustomLabels: customLabels, + SkipConnectionCheck: cmd.SkipConnectionCheck, + DisableCommentsParsing: disableCommentsParsing, + MaxQueryLength: cmd.MaxQueryLength, + DisableQueryExamples: cmd.DisableQueryExamples, + MaxSlowlogFileSize: strconv.FormatInt(int64(cmd.MaxSlowlogFileSize), 10), + TLS: cmd.TLS, + TLSSkipVerify: cmd.TLSSkipVerify, + TLSCa: tlsCa, + TLSCert: tlsCert, + TLSKey: tlsKey, + LogLevel: &cmd.LogLevel, }, Context: commands.Ctx, } diff --git a/admin/commands/inventory/add_agent_qan_postgres_pgstatements_agent.go b/admin/commands/inventory/add_agent_qan_postgres_pgstatements_agent.go index bf892d9734..8c04c0f234 100644 --- a/admin/commands/inventory/add_agent_qan_postgres_pgstatements_agent.go +++ b/admin/commands/inventory/add_agent_qan_postgres_pgstatements_agent.go @@ -52,6 +52,7 @@ type AddAgentQANPostgreSQLPgStatementsAgentCommand struct { Password string `help:"PostgreSQL password for QAN agent"` CustomLabels map[string]string `mapsep:"," help:"Custom user-assigned labels"` SkipConnectionCheck bool `help:"Skip connection check"` + CommentsParsing string `enum:"on,off" default:"off" help:"Enable/disable parsing comments from queries. One of: [on, off]"` MaxQueryLength int32 `placeholder:"NUMBER" help:"Limit query length in QAN (default: server-defined; -1: no limit)"` TLS bool `help:"Use TLS to connect to the database"` TLSSkipVerify bool `help:"Skip TLS certificates validation"` @@ -85,15 +86,21 @@ func (cmd *AddAgentQANPostgreSQLPgStatementsAgentCommand) RunCmd() (commands.Res } } + disableCommentsParsing := true + if cmd.CommentsParsing == "on" { + disableCommentsParsing = false + } + params := &agents.AddQANPostgreSQLPgStatementsAgentParams{ Body: agents.AddQANPostgreSQLPgStatementsAgentBody{ - PMMAgentID: cmd.PMMAgentID, - ServiceID: cmd.ServiceID, - Username: cmd.Username, - Password: cmd.Password, - CustomLabels: customLabels, - SkipConnectionCheck: cmd.SkipConnectionCheck, - MaxQueryLength: cmd.MaxQueryLength, + PMMAgentID: cmd.PMMAgentID, + ServiceID: cmd.ServiceID, + Username: cmd.Username, + Password: cmd.Password, + CustomLabels: customLabels, + SkipConnectionCheck: cmd.SkipConnectionCheck, + DisableCommentsParsing: disableCommentsParsing, + MaxQueryLength: cmd.MaxQueryLength, TLS: cmd.TLS, TLSSkipVerify: cmd.TLSSkipVerify, diff --git a/admin/commands/inventory/add_agent_qan_postgres_pgstatmonitor_agent.go b/admin/commands/inventory/add_agent_qan_postgres_pgstatmonitor_agent.go index d66973b62d..f18b16506a 100644 --- a/admin/commands/inventory/add_agent_qan_postgres_pgstatmonitor_agent.go +++ b/admin/commands/inventory/add_agent_qan_postgres_pgstatmonitor_agent.go @@ -53,6 +53,7 @@ type AddAgentQANPostgreSQLPgStatMonitorAgentCommand struct { Password string `help:"PostgreSQL password for QAN agent"` CustomLabels map[string]string `mapsep:"," help:"Custom user-assigned labels"` SkipConnectionCheck bool `help:"Skip connection check"` + CommentsParsing string `enum:"on,off" default:"off" help:"Enable/disable parsing comments from queries. One of: [on, off]"` MaxQueryLength int32 `placeholder:"NUMBER" help:"Limit query length in QAN (default: server-defined; -1: no limit)"` QueryExamplesDisabled bool `name:"disable-queryexamples" help:"Disable collection of query examples"` TLS bool `help:"Use TLS to connect to the database"` @@ -87,16 +88,22 @@ func (cmd *AddAgentQANPostgreSQLPgStatMonitorAgentCommand) RunCmd() (commands.Re } } + disableCommentsParsing := true + if cmd.CommentsParsing == "on" { + disableCommentsParsing = false + } + params := &agents.AddQANPostgreSQLPgStatMonitorAgentParams{ Body: agents.AddQANPostgreSQLPgStatMonitorAgentBody{ - PMMAgentID: cmd.PMMAgentID, - ServiceID: cmd.ServiceID, - Username: cmd.Username, - Password: cmd.Password, - CustomLabels: customLabels, - SkipConnectionCheck: cmd.SkipConnectionCheck, - MaxQueryLength: cmd.MaxQueryLength, - DisableQueryExamples: cmd.QueryExamplesDisabled, + PMMAgentID: cmd.PMMAgentID, + ServiceID: cmd.ServiceID, + Username: cmd.Username, + Password: cmd.Password, + CustomLabels: customLabels, + SkipConnectionCheck: cmd.SkipConnectionCheck, + DisableCommentsParsing: disableCommentsParsing, + MaxQueryLength: cmd.MaxQueryLength, + DisableQueryExamples: cmd.QueryExamplesDisabled, TLS: cmd.TLS, TLSSkipVerify: cmd.TLSSkipVerify, diff --git a/admin/commands/management/add_mysql.go b/admin/commands/management/add_mysql.go index aa33607178..13e5cd24ba 100644 --- a/admin/commands/management/add_mysql.go +++ b/admin/commands/management/add_mysql.go @@ -111,6 +111,7 @@ type AddMySQLCommand struct { ReplicationSet string `help:"Replication set name"` CustomLabels map[string]string `mapsep:"," help:"Custom user-assigned labels"` SkipConnectionCheck bool `help:"Skip connection check"` + CommentsParsing string `enum:"on,off" default:"off" help:"Enable/disable parsing comments from queries. One of: [on, off]"` TLS bool `help:"Use TLS to connect to the database"` TLSSkipVerify bool `help:"Skip TLS certificates validation"` TLSCaFile string `name:"tls-ca" help:"Path to certificate authority certificate file"` @@ -169,6 +170,11 @@ func (cmd *AddMySQLCommand) RunCmd() (commands.Result, error) { } } + disableCommentsParsing := true + if cmd.CommentsParsing == "on" { + disableCommentsParsing = false + } + if cmd.PMMAgentID == "" || cmd.NodeID == "" { status, err := agentlocal.GetStatus(agentlocal.DoNotRequestNetworkInfo) if err != nil { @@ -215,9 +221,11 @@ func (cmd *AddMySQLCommand) RunCmd() (commands.Result, error) { QANMysqlSlowlog: cmd.QuerySource == MysqlQuerySourceSlowLog, QANMysqlPerfschema: cmd.QuerySource == MysqlQuerySourcePerfSchema, - SkipConnectionCheck: cmd.SkipConnectionCheck, - MaxQueryLength: cmd.MaxQueryLength, - DisableQueryExamples: cmd.DisableQueryExamples, + SkipConnectionCheck: cmd.SkipConnectionCheck, + DisableCommentsParsing: disableCommentsParsing, + MaxQueryLength: cmd.MaxQueryLength, + DisableQueryExamples: cmd.DisableQueryExamples, + MaxSlowlogFileSize: strconv.FormatInt(int64(cmd.MaxSlowlogFileSize), 10), TLS: cmd.TLS, TLSSkipVerify: cmd.TLSSkipVerify, diff --git a/admin/commands/management/add_postgresql.go b/admin/commands/management/add_postgresql.go index 11fd31f09e..af61b7a9a4 100644 --- a/admin/commands/management/add_postgresql.go +++ b/admin/commands/management/add_postgresql.go @@ -63,6 +63,7 @@ type AddPostgreSQLCommand struct { ReplicationSet string `help:"Replication set name"` CustomLabels map[string]string `mapsep:"," help:"Custom user-assigned labels"` SkipConnectionCheck bool `help:"Skip connection check"` + CommentsParsing string `enum:"on,off" default:"off" help:"Enable/disable parsing comments from queries. One of: [on, off]"` TLS bool `help:"Use TLS to connect to the database"` TLSCAFile string `name:"tls-ca-file" help:"TLS CA certificate file"` TLSCertFile string `help:"TLS certificate file"` @@ -157,6 +158,11 @@ func (cmd *AddPostgreSQLCommand) RunCmd() (commands.Result, error) { } } + disableCommentsParsing := true + if cmd.CommentsParsing == "on" { + disableCommentsParsing = false + } + if cmd.CredentialsSource != "" { if err := cmd.GetCredentials(); err != nil { return nil, fmt.Errorf("failed to retrieve credentials from %s: %w", cmd.CredentialsSource, err) @@ -168,14 +174,15 @@ func (cmd *AddPostgreSQLCommand) RunCmd() (commands.Result, error) { NodeID: cmd.NodeID, ServiceName: serviceName, - Address: host, - Port: int64(port), - Username: cmd.Username, - Password: cmd.Password, - Database: cmd.Database, - AgentPassword: cmd.AgentPassword, - Socket: socket, - SkipConnectionCheck: cmd.SkipConnectionCheck, + Address: host, + Port: int64(port), + Username: cmd.Username, + Password: cmd.Password, + Database: cmd.Database, + AgentPassword: cmd.AgentPassword, + Socket: socket, + SkipConnectionCheck: cmd.SkipConnectionCheck, + DisableCommentsParsing: disableCommentsParsing, PMMAgentID: cmd.PMMAgentID, Environment: cmd.Environment, diff --git a/agent/agents/mysql/perfschema/perfschema.go b/agent/agents/mysql/perfschema/perfschema.go index 1293219394..bec2876b4d 100644 --- a/agent/agents/mysql/perfschema/perfschema.go +++ b/agent/agents/mysql/perfschema/perfschema.go @@ -82,39 +82,42 @@ const ( // PerfSchema QAN services connects to MySQL and extracts performance data. type PerfSchema struct { - q *reform.Querier - dbCloser io.Closer - agentID string - maxQueryLength int32 - disableQueryExamples bool - l *logrus.Entry - changes chan agents.Change - historyCache *historyCache - summaryCache *summaryCache - versionsCache *versionsCache + q *reform.Querier + dbCloser io.Closer + agentID string + disableCommentsParsing bool + maxQueryLength int32 + disableQueryExamples bool + l *logrus.Entry + changes chan agents.Change + historyCache *historyCache + summaryCache *summaryCache + versionsCache *versionsCache } // Params represent Agent parameters. type Params struct { - DSN string - AgentID string - MaxQueryLength int32 - DisableQueryExamples bool - TextFiles *agentpb.TextFiles - TLSSkipVerify bool + DSN string + AgentID string + DisableCommentsParsing bool + MaxQueryLength int32 + DisableQueryExamples bool + TextFiles *agentpb.TextFiles + TLSSkipVerify bool } // newPerfSchemaParams holds all required parameters to instantiate a new PerfSchema type newPerfSchemaParams struct { - Querier *reform.Querier - DBCloser io.Closer - AgentID string - MaxQueryLength int32 - DisableQueryExamples bool - LogEntry *logrus.Entry + Querier *reform.Querier + DBCloser io.Closer + AgentID string + DisableCommentsParsing bool + MaxQueryLength int32 + DisableQueryExamples bool + LogEntry *logrus.Entry } -const queryTag = "pmm-agent:perfschema" +const queryTag = "agent='perfschema'" // New creates new PerfSchema QAN service. func New(params *Params, l *logrus.Entry) (*PerfSchema, error) { @@ -137,12 +140,13 @@ func New(params *Params, l *logrus.Entry) (*PerfSchema, error) { q := reform.NewDB(sqlDB, mysqlDialects.Dialect, reformL).WithTag(queryTag) newParams := &newPerfSchemaParams{ - Querier: q, - DBCloser: sqlDB, - AgentID: params.AgentID, - MaxQueryLength: params.MaxQueryLength, - DisableQueryExamples: params.DisableQueryExamples, - LogEntry: l, + Querier: q, + DBCloser: sqlDB, + AgentID: params.AgentID, + DisableCommentsParsing: params.DisableCommentsParsing, + MaxQueryLength: params.MaxQueryLength, + DisableQueryExamples: params.DisableQueryExamples, + LogEntry: l, } return newPerfSchema(newParams) } @@ -159,16 +163,17 @@ func newPerfSchema(params *newPerfSchemaParams) (*PerfSchema, error) { } return &PerfSchema{ - q: params.Querier, - dbCloser: params.DBCloser, - agentID: params.AgentID, - maxQueryLength: params.MaxQueryLength, - disableQueryExamples: params.DisableQueryExamples, - l: params.LogEntry, - changes: make(chan agents.Change, 10), - historyCache: historyCache, - summaryCache: summaryCache, - versionsCache: &versionsCache{items: make(map[string]*mySQLVersion)}, + q: params.Querier, + dbCloser: params.DBCloser, + agentID: params.AgentID, + disableCommentsParsing: params.DisableCommentsParsing, + maxQueryLength: params.MaxQueryLength, + disableQueryExamples: params.DisableQueryExamples, + l: params.LogEntry, + changes: make(chan agents.Change, 10), + historyCache: historyCache, + summaryCache: summaryCache, + versionsCache: &versionsCache{items: make(map[string]*mySQLVersion)}, }, nil } @@ -352,6 +357,14 @@ func (m *PerfSchema) getNewBuckets(periodStart time.Time, periodLengthSecs uint3 b.Common.Example = example b.Common.ExampleType = agentpb.ExampleType_RANDOM } + + if !m.disableCommentsParsing { + comments, err := queryparser.MySQLComments(*esh.SQLText) + if err != nil { + m.l.Infof("cannot parse comments from query: %s", *esh.SQLText) + } + b.Common.Comments = comments + } } } diff --git a/agent/agents/mysql/perfschema/perfschema_test.go b/agent/agents/mysql/perfschema/perfschema_test.go index 5510c29e7f..9db43c60ab 100644 --- a/agent/agents/mysql/perfschema/perfschema_test.go +++ b/agent/agents/mysql/perfschema/perfschema_test.go @@ -204,11 +204,11 @@ func filter(mb []*agentpb.MetricsBucket) []*agentpb.MetricsBucket { res := make([]*agentpb.MetricsBucket, 0, len(mb)) for _, b := range mb { switch { - case strings.Contains(b.Common.Example, "/* pmm-agent:perfschema */"): + case strings.Contains(b.Common.Example, "/* agent='perfschema' */"): continue - case strings.Contains(b.Common.Example, "/* pmm-agent:slowlog */"): + case strings.Contains(b.Common.Example, "/* agent='slowlog' */"): continue - case strings.Contains(b.Common.Example, "/* pmm-agent:connectionchecker */"): + case strings.Contains(b.Common.Example, "/* agent='connectionchecker' */"): continue case strings.Contains(b.Common.Example, "/* pmm-agent-tests:MySQLVersion */"): @@ -322,7 +322,7 @@ func TestPerfSchema(t *testing.T) { disableQueryExamples: false, }) - _, err := db.Exec("SELECT /* Sleep */ sleep(0.1)") + _, err := db.Exec("SELECT /* Sleep controller='test' */ sleep(0.1)") require.NoError(t, err) require.NoError(t, m.refreshHistoryCache()) @@ -334,17 +334,19 @@ func TestPerfSchema(t *testing.T) { actual := buckets[0] assert.InDelta(t, 0.1, actual.Common.MQueryTimeSum, 0.09) + expected := &agentpb.MetricsBucket{ Common: &agentpb.MetricsBucket_Common{ ExplainFingerprint: "SELECT `sleep` (:1)", PlaceholdersCount: 1, + Comments: map[string]string{"controller": "test"}, Fingerprint: "SELECT `sleep` (?)", Schema: "world", AgentId: "agent_id", PeriodStartUnixSecs: 1554116340, PeriodLengthSecs: 60, AgentType: inventorypb.AgentType_QAN_MYSQL_PERFSCHEMA_AGENT, - Example: "SELECT /* Sleep */ sleep(0.1)", + Example: "SELECT /* Sleep controller='test' */ sleep(0.1)", ExampleType: agentpb.ExampleType_RANDOM, NumQueries: 1, MQueryTimeCnt: 1, @@ -367,7 +369,7 @@ func TestPerfSchema(t *testing.T) { disableQueryExamples: false, }) - _, err := db.Exec("SELECT /* AllCities */ * FROM city") + _, err := db.Exec("SELECT /* AllCities controller='test' */ * FROM city") require.NoError(t, err) require.NoError(t, m.refreshHistoryCache()) @@ -384,12 +386,13 @@ func TestPerfSchema(t *testing.T) { Common: &agentpb.MetricsBucket_Common{ ExplainFingerprint: "SELECT * FROM `city`", Fingerprint: "SELECT * FROM `city`", + Comments: map[string]string{"controller": "test"}, Schema: "world", AgentId: "agent_id", PeriodStartUnixSecs: 1554116340, PeriodLengthSecs: 60, AgentType: inventorypb.AgentType_QAN_MYSQL_PERFSCHEMA_AGENT, - Example: "SELECT /* AllCities */ * FROM city", + Example: "SELECT /* AllCities controller='test' */ * FROM city", ExampleType: agentpb.ExampleType_RANDOM, NumQueries: 1, MQueryTimeCnt: 1, @@ -425,7 +428,7 @@ func TestPerfSchema(t *testing.T) { require.NoError(t, err) }() - _, err = db.Exec("SELECT /* t1 */ * FROM t1 where col1='Bu\xf1rk'") + _, err = db.Exec("SELECT /* t1 controller='test' */ * FROM t1 where col1='Bu\xf1rk'") require.NoError(t, err) require.NoError(t, m.refreshHistoryCache()) @@ -433,9 +436,9 @@ func TestPerfSchema(t *testing.T) { switch mySQLVersion.String() { // Perf schema truncates queries with non-utf8 characters. case "8.0": - example = "SELECT /* t1 */ * FROM t1 where col1='Bu" + example = "SELECT /* t1 controller='test' */ * FROM t1 where col1='Bu" default: - example = "SELECT /* t1 */ * FROM t1 where col1=..." + example = "SELECT /* t1 controller='test' */ * FROM t1 where col1=..." } var numQueriesWithWarnings float32 @@ -456,6 +459,7 @@ func TestPerfSchema(t *testing.T) { ExplainFingerprint: "SELECT * FROM `t1` WHERE `col1` = :1", PlaceholdersCount: 1, Fingerprint: "SELECT * FROM `t1` WHERE `col1` = ?", + Comments: map[string]string{"controller": "test"}, Schema: "world", AgentId: "agent_id", PeriodStartUnixSecs: 1554116340, diff --git a/agent/agents/mysql/slowlog/slowlog.go b/agent/agents/mysql/slowlog/slowlog.go index 381db27287..373883acf6 100644 --- a/agent/agents/mysql/slowlog/slowlog.go +++ b/agent/agents/mysql/slowlog/slowlog.go @@ -60,18 +60,19 @@ type SlowLog struct { // Params represent Agent parameters. type Params struct { - DSN string - AgentID string - MaxQueryLength int32 - DisableQueryExamples bool - MaxSlowlogFileSize int64 - SlowLogFilePrefix string // for development and testing - TextFiles *agentpb.TextFiles - TLS bool - TLSSkipVerify bool + DSN string + AgentID string + DisableCommentsParsing bool + MaxQueryLength int32 + DisableQueryExamples bool + MaxSlowlogFileSize int64 + SlowLogFilePrefix string // for development and testing + TextFiles *agentpb.TextFiles + TLS bool + TLSSkipVerify bool } -const queryTag = "pmm-agent:slowlog" +const queryTag = "agent='slowlog'" type slowLogInfo struct { path string @@ -375,7 +376,7 @@ func (s *SlowLog) processFile(ctx context.Context, file string, outlierTime floa case <-t.C: lengthS := uint32(math.Round(wait.Seconds())) // round 59.9s/60.1s to 60s res := aggregator.Finalize() - buckets := makeBuckets(s.params.AgentID, res, start, lengthS, s.params.DisableQueryExamples, s.params.MaxQueryLength) + buckets := makeBuckets(s.params.AgentID, res, start, lengthS, s.params.DisableCommentsParsing, s.params.DisableQueryExamples, s.params.MaxQueryLength, s.l) s.l.Debugf("Made %d buckets out of %d classes in %s+%d interval. Wait time: %s.", len(buckets), len(res.Class), start.Format("15:04:05"), lengthS, time.Since(start)) @@ -398,8 +399,10 @@ func makeBuckets( res event.Result, periodStart time.Time, periodLengthSecs uint32, + disableCommentsParsing bool, disableQueryExamples bool, maxQueryLength int32, + l *logrus.Entry, ) []*agentpb.MetricsBucket { buckets := make([]*agentpb.MetricsBucket, 0, len(res.Class)) @@ -445,15 +448,21 @@ func makeBuckets( mb.Common.PlaceholdersCount = placeholdersCount } - if v.Example != nil { - if !disableQueryExamples { - example, truncated := truncate.Query(v.Example.Query, maxQueryLength) - if truncated { - mb.Common.IsTruncated = truncated - } - mb.Common.Example = example - mb.Common.ExampleType = agentpb.ExampleType_RANDOM + if !disableCommentsParsing { + comments, err := queryparser.MySQLComments(q) + if err != nil { + l.Infof("cannot parse comments from query: %s", q) + } + mb.Common.Comments = comments + } + + if v.Example != nil && !disableQueryExamples { + example, truncated := truncate.Query(v.Example.Query, maxQueryLength) + if truncated { + mb.Common.IsTruncated = truncated } + mb.Common.Example = example + mb.Common.ExampleType = agentpb.ExampleType_RANDOM } // If key has suffix _time or _wait than field is TimeMetrics. diff --git a/agent/agents/mysql/slowlog/slowlog_test.go b/agent/agents/mysql/slowlog/slowlog_test.go index b514c56bf3..e0c78f0208 100644 --- a/agent/agents/mysql/slowlog/slowlog_test.go +++ b/agent/agents/mysql/slowlog/slowlog_test.go @@ -54,26 +54,27 @@ func TestSlowLogMakeBucketsInvalidUTF8(t *testing.T) { Class: map[string]*event.Class{ "example": { Metrics: &event.Metrics{}, - Fingerprint: "SELECT * FROM contacts t0 WHERE t0.person_id = '߿�\xff\\ud83d\xdd'", + Fingerprint: "SELECT /* controller='test' */ * FROM contacts t0 WHERE t0.person_id = '߿�\xff\\ud83d\xdd'", Example: &event.Example{ - Query: "SELECT * FROM contacts t0 WHERE t0.person_id = '߿�\xff\\ud83d\xdd'", + Query: "SELECT /* controller='test' */ * FROM contacts t0 WHERE t0.person_id = '߿�\xff\\ud83d\xdd'", }, }, }, } - actualBuckets := makeBuckets(agentID, parsingResult, periodStart, 60, false, truncate.GetDefaultMaxQueryLength()) + actualBuckets := makeBuckets(agentID, parsingResult, periodStart, 60, false, false, truncate.GetDefaultMaxQueryLength(), logrus.NewEntry(logrus.New())) expectedBuckets := []*agentpb.MetricsBucket{ { Common: &agentpb.MetricsBucket_Common{ Fingerprint: "select * from contacts t0 where t0.person_id = ?", ExplainFingerprint: "select * from contacts t0 where t0.person_id = :1", PlaceholdersCount: 1, + Comments: map[string]string{"controller": "test"}, AgentId: agentID, AgentType: inventorypb.AgentType_QAN_MYSQL_SLOWLOG_AGENT, PeriodStartUnixSecs: 1557137220, PeriodLengthSecs: 60, - Example: "SELECT * FROM contacts t0 WHERE t0.person_id = '߿�\ufffd\\ud83d\ufffd'", + Example: "SELECT /* controller='test' */ * FROM contacts t0 WHERE t0.person_id = '߿�\ufffd\\ud83d\ufffd'", ExampleType: agentpb.ExampleType_RANDOM, }, Mysql: &agentpb.MetricsBucket_MySQL{}, @@ -94,7 +95,7 @@ func TestSlowLogMakeBuckets(t *testing.T) { parsingResult := event.Result{} getDataFromFile(t, "slowlog_fixture.json", &parsingResult) - actualBuckets := makeBuckets(agentID, parsingResult, periodStart, 60, false, truncate.GetDefaultMaxQueryLength()) + actualBuckets := makeBuckets(agentID, parsingResult, periodStart, 60, false, false, truncate.GetDefaultMaxQueryLength(), logrus.NewEntry(logrus.New())) var expectedBuckets []*agentpb.MetricsBucket getDataFromFile(t, "slowlog_expected.json", &expectedBuckets) diff --git a/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go b/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go index 2b9fce1110..b5d4b80485 100644 --- a/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go +++ b/agent/agents/postgres/pgstatmonitor/pgstatmonitor.go @@ -33,6 +33,7 @@ import ( "gopkg.in/reform.v1/dialects/postgresql" "github.com/percona/pmm/agent/agents" + "github.com/percona/pmm/agent/queryparser" "github.com/percona/pmm/agent/utils/version" "github.com/percona/pmm/api/agentpb" "github.com/percona/pmm/api/inventorypb" @@ -43,23 +44,25 @@ const defaultWaitTime = 60 * time.Second // PGStatMonitorQAN QAN services connects to PostgreSQL and extracts stats. type PGStatMonitorQAN struct { - q *reform.Querier - dbCloser io.Closer - agentID string - l *logrus.Entry - changes chan agents.Change - monitorCache *statMonitorCache - maxQueryLength int32 - disableQueryExamples bool + q *reform.Querier + dbCloser io.Closer + agentID string + l *logrus.Entry + changes chan agents.Change + monitorCache *statMonitorCache + maxQueryLength int32 + disableQueryExamples bool + disableCommentsParsing bool } // Params represent Agent parameters. type Params struct { - DSN string - MaxQueryLength int32 - DisableQueryExamples bool - TextFiles *agentpb.TextFiles - AgentID string + DSN string + MaxQueryLength int32 + DisableQueryExamples bool + DisableCommentsParsing bool + TextFiles *agentpb.TextFiles + AgentID string } type ( @@ -85,7 +88,7 @@ const ( ) const ( - queryTag = "pmm-agent:pgstatmonitor" + queryTag = "agent='pgstatmonitor'" pgsm20SettingsQuery = "SELECT name, setting FROM pg_settings WHERE name like 'pg_stat_monitor.%'" // There is a feature in the FE that shows "n/a" for empty responses for dimensions. commandTextNotAvailable = "" @@ -120,7 +123,7 @@ func New(params *Params, l *logrus.Entry) (*PGStatMonitorQAN, error) { // TODO register reformL metrics https://jira.percona.com/browse/PMM-4087 q := reform.NewDB(sqlDB, postgresql.Dialect, reformL).WithTag(queryTag) - return newPgStatMonitorQAN(q, sqlDB, params.AgentID, params.DisableQueryExamples, params.MaxQueryLength, l) + return newPgStatMonitorQAN(q, sqlDB, params.AgentID, params.DisableCommentsParsing, params.DisableQueryExamples, params.MaxQueryLength, l) } func areSettingsTextValues(q *reform.Querier) (bool, error) { @@ -136,16 +139,17 @@ func areSettingsTextValues(q *reform.Querier) (bool, error) { return false, nil } -func newPgStatMonitorQAN(q *reform.Querier, dbCloser io.Closer, agentID string, disableQueryExamples bool, maxQueryLength int32, l *logrus.Entry) (*PGStatMonitorQAN, error) { //nolint:lll +func newPgStatMonitorQAN(q *reform.Querier, dbCloser io.Closer, agentID string, disableCommentsParsing, disableQueryExamples bool, maxQueryLength int32, l *logrus.Entry) (*PGStatMonitorQAN, error) { //nolint:lll return &PGStatMonitorQAN{ - q: q, - dbCloser: dbCloser, - agentID: agentID, - l: l, - changes: make(chan agents.Change, 10), - monitorCache: newStatMonitorCache(l), - maxQueryLength: maxQueryLength, - disableQueryExamples: disableQueryExamples, + q: q, + dbCloser: dbCloser, + agentID: agentID, + l: l, + changes: make(chan agents.Change, 10), + monitorCache: newStatMonitorCache(l), + maxQueryLength: maxQueryLength, + disableQueryExamples: disableQueryExamples, + disableCommentsParsing: disableCommentsParsing, }, nil } @@ -571,6 +575,14 @@ func (m *PGStatMonitorQAN) makeBuckets(current, cache map[time.Time]map[string]* mb.Common.ExampleType = agentpb.ExampleType_RANDOM } + if !m.disableCommentsParsing && currentPSM.Comments != nil { + comments, err := queryparser.PostgreSQLComments(*currentPSM.Comments) + if err != nil { + m.l.Errorf("failed to parse comments from: %s", *currentPSM.Comments) + } + mb.Common.Comments = comments + } + var cpuSysTime, cpuUserTime float64 // Since PGSM 2.0 and higher we should not cumulate times, because its already done on PGSM side if vPGSM >= pgStatMonitorVersion20PG12 { diff --git a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go index 76db75ebb8..b49f177bd2 100644 --- a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go +++ b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go @@ -51,6 +51,7 @@ type pgStatMonitor struct { ClientIP string QueryID string // we select only non-NULL rows Query string // we select only non-NULL rows + Comments *string Relations pq.StringArray Calls int64 SharedBlksHit int64 @@ -205,6 +206,7 @@ func newPgStatMonitorStructs(vPGSM pgStatMonitorVersion, vPG pgVersion) (*pgStat if vPGSM >= pgStatMonitorVersion20PG12 { fields = append(fields, field{info: parse.FieldInfo{Name: "PlansCalls", Type: "int64", Column: "plans"}, pointer: &s.PlansCalls}) + fields = append(fields, field{info: parse.FieldInfo{Name: "Comments", Type: "string", Column: "comments"}, pointer: &s.Comments}) } else { fields = append(fields, field{info: parse.FieldInfo{Name: "PlansCalls", Type: "int64", Column: "plans_calls"}, pointer: &s.PlansCalls}) } diff --git a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_test.go b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_test.go index a9775a27b0..9e99e1b9bc 100644 --- a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_test.go +++ b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_test.go @@ -38,14 +38,14 @@ import ( "github.com/percona/pmm/api/inventorypb" ) -func setup(t *testing.T, db *reform.DB, disableQueryExamples bool) *PGStatMonitorQAN { //nolint:unparam +func setup(t *testing.T, db *reform.DB, disableCommentsParsing, disableQueryExamples bool) *PGStatMonitorQAN { //nolint:unparam t.Helper() selectQuery := fmt.Sprintf("SELECT /* %s */ ", queryTag) _, err := db.Exec(selectQuery + "* from pg_stat_monitor_reset()") require.NoError(t, err) - pgStatMonitorQAN, err := newPgStatMonitorQAN(db.WithTag(queryTag), nil, "agent_id", disableQueryExamples, truncate.GetDefaultMaxQueryLength(), logrus.WithField("test", t.Name())) + pgStatMonitorQAN, err := newPgStatMonitorQAN(db.WithTag(queryTag), nil, "agent_id", disableCommentsParsing, disableQueryExamples, truncate.GetDefaultMaxQueryLength(), logrus.WithField("test", t.Name())) require.NoError(t, err) return pgStatMonitorQAN @@ -72,9 +72,9 @@ func filter(mb []*agentpb.MetricsBucket) []*agentpb.MetricsBucket { res := make([]*agentpb.MetricsBucket, 0, len(mb)) for _, b := range mb { switch { - case strings.Contains(b.Common.Fingerprint, "/* pmm-agent:pgstatmonitor */"): + case strings.Contains(b.Common.Fingerprint, "/* agent='pgstatmonitor' */"): continue - case strings.Contains(b.Common.Example, "/* pmm-agent:pgstatmonitor */"): + case strings.Contains(b.Common.Example, "/* agent='pgstatmonitor' */"): continue case strings.Contains(b.Common.Fingerprint, "pg_stat_monitor_reset()"): continue @@ -125,8 +125,8 @@ func TestPGStatMonitorSchema(t *testing.T) { require.NoError(t, err) tests.LogTable(t, structs) - const selectAllCountries = "SELECT /* AllCountries:PGStatMonitor */ * FROM country" - const selectAllCountriesLong = "SELECT /* AllCountriesTruncated:PGStatMonitor */ * FROM country WHERE capital IN " + + const selectAllCountries = "SELECT /* AllCountries:PGStatMonitor controller='test' */ * FROM country" + const selectAllCountriesLong = "SELECT /* AllCountriesTruncated:PGStatMonitor controller='test' */ * FROM country WHERE capital IN " + "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, " + "$21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, " + "$41, $42, $43, $44, $45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, " + @@ -144,7 +144,7 @@ func TestPGStatMonitorSchema(t *testing.T) { "$281, $282, $283, $284, $285, $286, $287, $288, $289, $290, $291, $292, $293, $294, $295, $296, $297, $298, $299, $300, " + "$301, $302, $303, $304, $305, $306, $307, $308, $309, $310, $311, $312, $313, $314, $315, $316, $317, $318, $319, $320, " + "$321, $322, $323, $324, $325, $326, $327, $328, $329, $330, $331, $332, $333, $334, $335, $336, $337, $338, $339, $340, " + - "$341, $342, $343, $344, $345, ..." + "$341, $342, $343, $3 ..." var digests map[string]string switch engineVersion { @@ -203,7 +203,7 @@ func TestPGStatMonitorSchema(t *testing.T) { } t.Run("AllCountries", func(t *testing.T) { - m := setup(t, db, false) + m := setup(t, db, false, false) _, err := db.Exec(selectAllCountries) require.NoError(t, err) @@ -237,6 +237,7 @@ func TestPGStatMonitorSchema(t *testing.T) { ExampleType: agentpb.ExampleType_RANDOM, Database: "pmm-agent", Tables: []string{"public.country"}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", ClientHost: actual.Common.ClientHost, AgentId: "agent_id", @@ -294,6 +295,7 @@ func TestPGStatMonitorSchema(t *testing.T) { ExampleType: agentpb.ExampleType_RANDOM, Database: "pmm-agent", Tables: []string{"public.country"}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", ClientHost: actual.Common.ClientHost, AgentId: "agent_id", @@ -331,7 +333,7 @@ func TestPGStatMonitorSchema(t *testing.T) { }) t.Run("AllCountriesTruncated", func(t *testing.T) { - m := setup(t, db, false) + m := setup(t, db, false, false) const n = 500 placeholders := db.Placeholders(1, n) @@ -339,7 +341,7 @@ func TestPGStatMonitorSchema(t *testing.T) { for i := 0; i < n; i++ { args[i] = i } - q := fmt.Sprintf("SELECT /* AllCountriesTruncated:PGStatMonitor */ * FROM country WHERE capital IN (%s)", strings.Join(placeholders, ", ")) + q := fmt.Sprintf("SELECT /* AllCountriesTruncated:PGStatMonitor controller='test' */ * FROM country WHERE capital IN (%s)", strings.Join(placeholders, ", ")) _, err := db.Exec(q, args...) require.NoError(t, err) @@ -366,6 +368,7 @@ func TestPGStatMonitorSchema(t *testing.T) { ExampleType: agentpb.ExampleType_RANDOM, Database: "pmm-agent", Tables: []string{"public.country"}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", ClientHost: actual.Common.ClientHost, AgentId: "agent_id", @@ -426,6 +429,7 @@ func TestPGStatMonitorSchema(t *testing.T) { ExampleType: agentpb.ExampleType_RANDOM, Database: "pmm-agent", Tables: []string{"public.country"}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", ClientHost: actual.Common.ClientHost, AgentId: "agent_id", @@ -478,13 +482,13 @@ func TestPGStatMonitorSchema(t *testing.T) { _, err := db.Exec(fmt.Sprintf(`DROP TABLE %s`, tableName)) require.NoError(t, err) }() - m := setup(t, db, false) + m := setup(t, db, false, false) var waitGroup sync.WaitGroup n := 1000 for i := 0; i < n; i++ { id := i - query := fmt.Sprintf(`INSERT /* CheckMBlkReadTime */ INTO %s (customer_id, first_name, last_name, active) VALUES (%d, 'John', 'Dow', TRUE)`, tableName, id) + query := fmt.Sprintf(`INSERT /* CheckMBlkReadTime controller='test' */ INTO %s (customer_id, first_name, last_name, active) VALUES (%d, 'John', 'Dow', TRUE)`, tableName, id) waitGroup.Add(1) go func() { defer waitGroup.Done() @@ -515,13 +519,14 @@ func TestPGStatMonitorSchema(t *testing.T) { actual := buckets[0] actual.Common.Username = strings.ReplaceAll(actual.Common.Username, `"`, "") assert.NotZero(t, actual.Postgresql.MBlkReadTimeSum) - expectedFingerprint := fmt.Sprintf("INSERT /* CheckMBlkReadTime */ INTO %s (customer_id, first_name, last_name, active) VALUES ($1, $2, $3, $4)", tableName) + expectedFingerprint := fmt.Sprintf("INSERT /* CheckMBlkReadTime controller='test' */ INTO %s (customer_id, first_name, last_name, active) VALUES ($1, $2, $3, $4)", tableName) expected := &agentpb.MetricsBucket{ Common: &agentpb.MetricsBucket_Common{ Queryid: actual.Common.Queryid, Fingerprint: expectedFingerprint, Example: actual.Common.Example, ExampleType: agentpb.ExampleType_RANDOM, + Comments: map[string]string{"controller": "test"}, Database: "pmm-agent", Username: "pmm-agent", ClientHost: actual.Common.ClientHost, diff --git a/agent/agents/postgres/pgstatmonitor/stat_monitor_cache_test.go b/agent/agents/postgres/pgstatmonitor/stat_monitor_cache_test.go index b235882649..bfaf963560 100644 --- a/agent/agents/postgres/pgstatmonitor/stat_monitor_cache_test.go +++ b/agent/agents/postgres/pgstatmonitor/stat_monitor_cache_test.go @@ -45,7 +45,7 @@ func TestPGStatMonitorStructs(t *testing.T) { assert.NoError(t, err) }() - m := setup(t, db, false) + m := setup(t, db, false, false) settings, err := m.getSettings() assert.NoError(t, err) normalizedQuery, err := settings.getNormalizedQueryValue() diff --git a/agent/agents/postgres/pgstatstatements/models.go b/agent/agents/postgres/pgstatstatements/models.go index 4a106ec9c2..8b7b52a5aa 100644 --- a/agent/agents/postgres/pgstatstatements/models.go +++ b/agent/agents/postgres/pgstatstatements/models.go @@ -72,9 +72,10 @@ type pgStatStatementsExtended struct { Username string Tables []string IsQueryTruncated bool + Comments map[string]string } func (e *pgStatStatementsExtended) String() string { - return fmt.Sprintf("%q %q %v: %d: %s (truncated = %t)", - e.Database, e.Username, e.Tables, e.QueryID, e.Query, e.IsQueryTruncated) + return fmt.Sprintf("%q %q %v: %d: %s (truncated = %t) %v", + e.Database, e.Username, e.Tables, e.QueryID, e.Query, e.IsQueryTruncated, e.Comments) } diff --git a/agent/agents/postgres/pgstatstatements/pgstatstatements.go b/agent/agents/postgres/pgstatstatements/pgstatstatements.go index b60b32257f..eb853c5727 100644 --- a/agent/agents/postgres/pgstatstatements/pgstatstatements.go +++ b/agent/agents/postgres/pgstatstatements/pgstatstatements.go @@ -35,6 +35,7 @@ import ( "github.com/percona/pmm/agent/agents" "github.com/percona/pmm/agent/agents/cache" + "github.com/percona/pmm/agent/queryparser" "github.com/percona/pmm/agent/utils/truncate" "github.com/percona/pmm/api/agentpb" "github.com/percona/pmm/api/inventorypb" @@ -53,24 +54,26 @@ type statementsMap map[int64]*pgStatStatementsExtended // PGStatStatementsQAN QAN services connects to PostgreSQL and extracts stats. type PGStatStatementsQAN struct { - q *reform.Querier - dbCloser io.Closer - agentID string - maxQueryLength int32 - l *logrus.Entry - changes chan agents.Change - statementsCache *statementsCache + q *reform.Querier + dbCloser io.Closer + agentID string + maxQueryLength int32 + disableCommentsParsing bool + l *logrus.Entry + changes chan agents.Change + statementsCache *statementsCache } // Params represent Agent parameters. type Params struct { - DSN string - AgentID string - MaxQueryLength int32 - TextFiles *agentpb.TextFiles + DSN string + AgentID string + MaxQueryLength int32 + DisableCommentsParsing bool + TextFiles *agentpb.TextFiles } -const queryTag = "pmm-agent:pgstatstatements" +const queryTag = "agent='pgstatstatements'" // New creates new PGStatStatementsQAN QAN service. func New(params *Params, l *logrus.Entry) (*PGStatStatementsQAN, error) { @@ -85,23 +88,24 @@ func New(params *Params, l *logrus.Entry) (*PGStatStatementsQAN, error) { reformL := sqlmetrics.NewReform("postgres", params.AgentID, l.Tracef) // TODO register reformL metrics https://jira.percona.com/browse/PMM-4087 q := reform.NewDB(sqlDB, postgresql.Dialect, reformL).WithTag(queryTag) - return newPgStatStatementsQAN(q, sqlDB, params.AgentID, params.MaxQueryLength, l) + return newPgStatStatementsQAN(q, sqlDB, params.AgentID, params.MaxQueryLength, params.DisableCommentsParsing, l) } -func newPgStatStatementsQAN(q *reform.Querier, dbCloser io.Closer, agentID string, maxQueryLength int32, l *logrus.Entry) (*PGStatStatementsQAN, error) { +func newPgStatStatementsQAN(q *reform.Querier, dbCloser io.Closer, agentID string, maxQueryLength int32, disableCommentsParsing bool, l *logrus.Entry) (*PGStatStatementsQAN, error) { //nolint:lll statementCache, err := newStatementsCache(statementsMap{}, retainStatStatements, statStatementsCacheSize, l) if err != nil { return nil, errors.Wrap(err, "cannot create cache") } return &PGStatStatementsQAN{ - q: q, - dbCloser: dbCloser, - agentID: agentID, - maxQueryLength: maxQueryLength, - l: l, - changes: make(chan agents.Change, 10), - statementsCache: statementCache, + q: q, + dbCloser: dbCloser, + agentID: agentID, + maxQueryLength: maxQueryLength, + disableCommentsParsing: disableCommentsParsing, + l: l, + changes: make(chan agents.Change, 10), + statementsCache: statementCache, }, nil } @@ -285,7 +289,7 @@ func (m *PGStatStatementsQAN) getNewBuckets(ctx context.Context, periodStart tim return nil, err } - buckets := makeBuckets(current, prev, m.l) + buckets := makeBuckets(current, prev, m.disableCommentsParsing, m.l) startS := uint32(periodStart.Unix()) m.l.Debugf("Made %d buckets out of %d stat statements in %s+%d interval.", len(buckets), len(current), periodStart.Format("15:04:05"), periodLengthSecs) @@ -312,7 +316,7 @@ func (m *PGStatStatementsQAN) getNewBuckets(ctx context.Context, periodStart tim // to make metrics buckets. // // makeBuckets is a pure function for easier testing. -func makeBuckets(current, prev statementsMap, l *logrus.Entry) []*agentpb.MetricsBucket { +func makeBuckets(current, prev statementsMap, disableCommentsParsing bool, l *logrus.Entry) []*agentpb.MetricsBucket { res := make([]*agentpb.MetricsBucket, 0, len(current)) for queryID, currentPSS := range current { @@ -342,12 +346,21 @@ func makeBuckets(current, prev statementsMap, l *logrus.Entry) []*agentpb.Metric currentPSS.Tables = extractTables(currentPSS.Query, l) } + if !disableCommentsParsing { + comments, err := queryparser.PostgreSQLComments(currentPSS.Query) + if err != nil { + l.Errorf("failed to parse comments for query: %s", currentPSS.Query) + } + currentPSS.Comments = comments + } + mb := &agentpb.MetricsBucket{ Common: &agentpb.MetricsBucket_Common{ Database: currentPSS.Database, Tables: currentPSS.Tables, Username: currentPSS.Username, Queryid: strconv.FormatInt(currentPSS.QueryID, 10), + Comments: currentPSS.Comments, Fingerprint: currentPSS.Query, NumQueries: count, AgentType: inventorypb.AgentType_QAN_POSTGRESQL_PGSTATEMENTS_AGENT, diff --git a/agent/agents/postgres/pgstatstatements/pgstatstatements_test.go b/agent/agents/postgres/pgstatstatements/pgstatstatements_test.go index 9f85ef6396..eac93e5d3a 100644 --- a/agent/agents/postgres/pgstatstatements/pgstatstatements_test.go +++ b/agent/agents/postgres/pgstatstatements/pgstatstatements_test.go @@ -45,7 +45,7 @@ func setup(t *testing.T, db *reform.DB) *PGStatStatementsQAN { _, err := db.Exec(selectQuery + "pg_stat_statements_reset()") require.NoError(t, err) - p, err := newPgStatStatementsQAN(db.WithTag(queryTag), nil, "agent_id", truncate.GetDefaultMaxQueryLength(), logrus.WithField("test", t.Name())) + p, err := newPgStatStatementsQAN(db.WithTag(queryTag), nil, "agent_id", truncate.GetDefaultMaxQueryLength(), false, logrus.WithField("test", t.Name())) require.NoError(t, err) return p @@ -56,7 +56,7 @@ func filter(mb []*agentpb.MetricsBucket) []*agentpb.MetricsBucket { res := make([]*agentpb.MetricsBucket, 0, len(mb)) for _, b := range mb { switch { - case strings.Contains(b.Common.Fingerprint, "/* pmm-agent:pgstatstatements */"): + case strings.Contains(b.Common.Fingerprint, "/* agent='pgstatstatements' */"): continue default: res = append(res, b) @@ -104,8 +104,8 @@ func TestPGStatStatementsQAN(t *testing.T) { require.NoError(t, err) tests.LogTable(t, structs) - const selectAllCities = "SELECT /* AllCities:pgstatstatements */ * FROM city" - const selectAllCitiesLong = "SELECT /* AllCitiesTruncated:pgstatstatements */ * FROM city WHERE id IN " + + const selectAllCities = "SELECT /* AllCities:pgstatstatements controller='test' */ * FROM city" + const selectAllCitiesLong = "SELECT /* AllCitiesTruncated:pgstatstatements controller='test' */ * FROM city WHERE id IN " + "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, " + "$21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, " + "$41, $42, $43, $44, $45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, " + @@ -123,7 +123,7 @@ func TestPGStatStatementsQAN(t *testing.T) { "$281, $282, $283, $284, $285, $286, $287, $288, $289, $290, $291, $292, $293, $294, $295, $296, $297, $298, $299, $300, " + "$301, $302, $303, $304, $305, $306, $307, $308, $309, $310, $311, $312, $313, $314, $315, $316, $317, $318, $319, $320, " + "$321, $322, $323, $324, $325, $326, $327, $328, $329, $330, $331, $332, $333, $334, $335, $336, $337, $338, $339, $340, " + - "$341, $342, $343, $344, $345, $346, $3 ..." + "$341, $342, $343, $3 ..." engineVersion := tests.PostgreSQLVersion(t, sqlDB) var digests map[string]string // digest_text/fingerprint to digest/query_id @@ -198,6 +198,7 @@ func TestPGStatStatementsQAN(t *testing.T) { Fingerprint: selectAllCities, Database: "pmm-agent", Tables: []string{"city"}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", AgentId: "agent_id", PeriodStartUnixSecs: 1554116340, @@ -238,6 +239,7 @@ func TestPGStatStatementsQAN(t *testing.T) { Fingerprint: selectAllCities, Database: "pmm-agent", Tables: []string{"city"}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", AgentId: "agent_id", PeriodStartUnixSecs: 1554116340, @@ -270,7 +272,7 @@ func TestPGStatStatementsQAN(t *testing.T) { for i := 0; i < n; i++ { args[i] = i } - q := fmt.Sprintf("SELECT /* AllCitiesTruncated:pgstatstatements */ * FROM city WHERE id IN (%s)", strings.Join(placeholders, ", ")) + q := fmt.Sprintf("SELECT /* AllCitiesTruncated:pgstatstatements controller='test' */ * FROM city WHERE id IN (%s)", strings.Join(placeholders, ", ")) _, err := db.Exec(q, args...) require.NoError(t, err) @@ -289,6 +291,7 @@ func TestPGStatStatementsQAN(t *testing.T) { Fingerprint: selectAllCitiesLong, Database: "pmm-agent", Tables: []string{}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", AgentId: "agent_id", PeriodStartUnixSecs: 1554116340, @@ -332,6 +335,7 @@ func TestPGStatStatementsQAN(t *testing.T) { Fingerprint: selectAllCitiesLong, Database: "pmm-agent", Tables: []string{}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", AgentId: "agent_id", PeriodStartUnixSecs: 1554116340, @@ -381,7 +385,7 @@ func TestPGStatStatementsQAN(t *testing.T) { go func() { defer waitGroup.Done() _, err := db.Exec( - fmt.Sprintf(`INSERT /* CheckMBlkReadTime */ INTO %s (customer_id, first_name, last_name, active) VALUES (%d, 'John', 'Dow', TRUE)`, tableName, id)) + fmt.Sprintf(`INSERT /* CheckMBlkReadTime controller='test' */ INTO %s (customer_id, first_name, last_name, active) VALUES (%d, 'John', 'Dow', TRUE)`, tableName, id)) require.NoError(t, err) }() } @@ -396,10 +400,10 @@ func TestPGStatStatementsQAN(t *testing.T) { var fingerprint string switch engineVersion { case "9.4", "9.5", "9.6": - fingerprint = fmt.Sprintf(`INSERT /* CheckMBlkReadTime */ INTO %s (customer_id, first_name, last_name, active) VALUES (?, ?, ?, ?)`, tableName) + fingerprint = fmt.Sprintf(`INSERT /* CheckMBlkReadTime controller='test' */ INTO %s (customer_id, first_name, last_name, active) VALUES (?, ?, ?, ?)`, tableName) default: - fingerprint = fmt.Sprintf(`INSERT /* CheckMBlkReadTime */ INTO %s (customer_id, first_name, last_name, active) VALUES ($1, $2, $3, $4)`, tableName) + fingerprint = fmt.Sprintf(`INSERT /* CheckMBlkReadTime controller='test' */ INTO %s (customer_id, first_name, last_name, active) VALUES ($1, $2, $3, $4)`, tableName) } actual := buckets[0] assert.NotZero(t, actual.Postgresql.MBlkReadTimeSum) @@ -409,6 +413,7 @@ func TestPGStatStatementsQAN(t *testing.T) { Fingerprint: fingerprint, Database: "pmm-agent", Tables: []string{tableName}, + Comments: map[string]string{"controller": "test"}, Username: "pmm-agent", AgentId: "agent_id", PeriodStartUnixSecs: 1590404340, diff --git a/agent/agents/supervisor/supervisor.go b/agent/agents/supervisor/supervisor.go index b23bd488b6..3538644ba4 100644 --- a/agent/agents/supervisor/supervisor.go +++ b/agent/agents/supervisor/supervisor.go @@ -512,12 +512,13 @@ func (s *Supervisor) startBuiltin(agentID string, builtinAgent *agentpb.SetState switch builtinAgent.Type { case inventorypb.AgentType_QAN_MYSQL_PERFSCHEMA_AGENT: params := &perfschema.Params{ - DSN: dsn, - AgentID: agentID, - MaxQueryLength: builtinAgent.MaxQueryLength, - DisableQueryExamples: builtinAgent.DisableQueryExamples, - TextFiles: builtinAgent.GetTextFiles(), - TLSSkipVerify: builtinAgent.TlsSkipVerify, + DSN: dsn, + AgentID: agentID, + MaxQueryLength: builtinAgent.MaxQueryLength, + DisableCommentsParsing: builtinAgent.DisableCommentsParsing, + DisableQueryExamples: builtinAgent.DisableQueryExamples, + TextFiles: builtinAgent.GetTextFiles(), + TLSSkipVerify: builtinAgent.TlsSkipVerify, } agent, err = perfschema.New(params, l) @@ -531,34 +532,37 @@ func (s *Supervisor) startBuiltin(agentID string, builtinAgent *agentpb.SetState case inventorypb.AgentType_QAN_MYSQL_SLOWLOG_AGENT: params := &slowlog.Params{ - DSN: dsn, - AgentID: agentID, - SlowLogFilePrefix: cfg.Paths.SlowLogFilePrefix, - MaxQueryLength: builtinAgent.MaxQueryLength, - DisableQueryExamples: builtinAgent.DisableQueryExamples, - MaxSlowlogFileSize: builtinAgent.MaxQueryLogSize, - TextFiles: builtinAgent.GetTextFiles(), - TLSSkipVerify: builtinAgent.TlsSkipVerify, - TLS: false, + DSN: dsn, + AgentID: agentID, + SlowLogFilePrefix: cfg.Paths.SlowLogFilePrefix, + MaxQueryLength: builtinAgent.MaxQueryLength, + DisableCommentsParsing: builtinAgent.DisableCommentsParsing, + DisableQueryExamples: builtinAgent.DisableQueryExamples, + MaxSlowlogFileSize: builtinAgent.MaxQueryLogSize, + TextFiles: builtinAgent.GetTextFiles(), + TLSSkipVerify: builtinAgent.TlsSkipVerify, + TLS: false, } agent, err = slowlog.New(params, l) case inventorypb.AgentType_QAN_POSTGRESQL_PGSTATEMENTS_AGENT: params := &pgstatstatements.Params{ - DSN: dsn, - AgentID: agentID, - MaxQueryLength: builtinAgent.MaxQueryLength, - TextFiles: builtinAgent.GetTextFiles(), + DSN: dsn, + AgentID: agentID, + MaxQueryLength: builtinAgent.MaxQueryLength, + DisableCommentsParsing: builtinAgent.DisableCommentsParsing, + TextFiles: builtinAgent.GetTextFiles(), } agent, err = pgstatstatements.New(params, l) case inventorypb.AgentType_QAN_POSTGRESQL_PGSTATMONITOR_AGENT: params := &pgstatmonitor.Params{ - DSN: dsn, - AgentID: agentID, - MaxQueryLength: builtinAgent.MaxQueryLength, - TextFiles: builtinAgent.GetTextFiles(), - DisableQueryExamples: builtinAgent.DisableQueryExamples, + DSN: dsn, + AgentID: agentID, + MaxQueryLength: builtinAgent.MaxQueryLength, + TextFiles: builtinAgent.GetTextFiles(), + DisableCommentsParsing: builtinAgent.DisableCommentsParsing, + DisableQueryExamples: builtinAgent.DisableQueryExamples, } agent, err = pgstatmonitor.New(params, l) diff --git a/agent/connectionchecker/connection_checker.go b/agent/connectionchecker/connection_checker.go index 6d6ef9ecaf..280c406844 100644 --- a/agent/connectionchecker/connection_checker.go +++ b/agent/connectionchecker/connection_checker.go @@ -90,7 +90,7 @@ func (cc *ConnectionChecker) Check(ctx context.Context, msg *agentpb.CheckConnec func (cc *ConnectionChecker) sqlPing(ctx context.Context, db *sql.DB) error { // use both query tag and SELECT value to cover both comments and values stripping by the server var dest string - err := db.QueryRowContext(ctx, `SELECT /* pmm-agent:connectionchecker */ 'pmm-agent'`).Scan(&dest) + err := db.QueryRowContext(ctx, `SELECT /* agent='connectionchecker' */ 'pmm-agent'`).Scan(&dest) cc.l.Debugf("sqlPing: %v", err) return err } @@ -144,7 +144,7 @@ func (cc *ConnectionChecker) checkMySQLConnection(ctx context.Context, dsn strin } var count uint64 - if err = db.QueryRowContext(ctx, "SELECT /* pmm-agent:connectionchecker */ COUNT(*) FROM information_schema.tables").Scan(&count); err != nil { + if err = db.QueryRowContext(ctx, "SELECT /* agent='connectionchecker' */ COUNT(*) FROM information_schema.tables").Scan(&count); err != nil { res.Error = err.Error() return &res } diff --git a/agent/docker-compose-pg-load.yml b/agent/docker-compose-pg-load.yml index 53f013f437..a2c238007e 100644 --- a/agent/docker-compose-pg-load.yml +++ b/agent/docker-compose-pg-load.yml @@ -11,6 +11,7 @@ services: -c track_activity_query_size=2048 -c pg_stat_monitor.pgsm_query_max_len=10000 -c pg_stat_monitor.pgsm_normalized_query=0 + -c pg_stat_monitor.pgsm_extract_comments=yes -c track_io_timing=on ports: - 127.0.0.1:5432:5432 diff --git a/agent/queryparser/helpers.go b/agent/queryparser/helpers.go new file mode 100644 index 0000000000..1a1932cbcd --- /dev/null +++ b/agent/queryparser/helpers.go @@ -0,0 +1,285 @@ +// Copyright 2019 Percona LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package queryparser provides functionality for queries parsing. +package queryparser + +import ( + "bufio" + "fmt" + "regexp" + "strings" + "sync" +) + +var ( + spaceRegexp *regexp.Regexp + spaceOnce sync.Once + errSpace error + + multilineRegexp *regexp.Regexp + multilineOnce sync.Once + errMultiline error + + dashRegexp *regexp.Regexp + dashOnce sync.Once + errDash error + + sharpRegexp *regexp.Regexp + sharpOnce sync.Once + errSharp error + + keyValueRegexp *regexp.Regexp + keyValueOnce sync.Once + errKeyValue error +) + +func parseMySQLComments(q string) (map[string]bool, error) { + if err := prepareMultilineRegexp(); err != nil { + return nil, err + } + + // comments using comment as a key to avoid duplicates + comments := make(map[string]bool) + for _, v := range multilineRegexp.FindAllStringSubmatch(q, -1) { + if len(v) < 2 { + continue + } + + value := removeFormatting(v[1]) + + var err error + value, err = removeSpaces(value) + if err != nil { + return nil, err + } + + parsed, err := parseKeyValueFromComment(value) + if err != nil { + continue + } + for k := range parsed { + comments[k] = true + } + } + + hashComments, err := parseSinglelineComments(q, "#") + if err != nil { + return nil, err + } + for c := range hashComments { + parsed, err := parseKeyValueFromComment(c) + if err != nil { + continue + } + for k := range parsed { + comments[k] = true + } + } + + dashComments, err := parseSinglelineComments(q, "--") + if err != nil { + return nil, err + } + for c := range dashComments { + parsed, err := parseKeyValueFromComment(c) + if err != nil { + continue + } + for k := range parsed { + comments[k] = true + } + } + + return comments, nil +} + +func parsePostgreSQLComments(q string) (map[string]bool, error) { + if err := prepareMultilineRegexp(); err != nil { + return nil, err + } + + // comments using comment as a key to avoid duplicates + comments := make(map[string]bool) + for _, v := range multilineRegexp.FindAllStringSubmatch(q, -1) { + if len(v) < 2 { + continue + } + + value := removeFormatting(v[1]) + + var err error + value, err = removeSpaces(strings.ReplaceAll(value, "*", "")) + if err != nil { + return nil, err + } + + parsed, err := parseKeyValueFromComment(value) + if err != nil { + continue + } + for k := range parsed { + comments[k] = true + } + } + + dashComments, err := parseSinglelineComments(q, "--") + if err != nil { + return nil, err + } + for c := range dashComments { + parsed, err := parseKeyValueFromComment(c) + if err != nil { + continue + } + for k := range parsed { + comments[k] = true + } + } + + return comments, nil +} + +func parseSinglelineComments(q, startChar string) (map[string]bool, error) { + var r *regexp.Regexp + switch startChar { + case "--": + if err := prepareDashRegexp(); err != nil { + return nil, err + } + r = dashRegexp + case "#": + if err := prepareSharpRegexp(); err != nil { + return nil, err + } + r = sharpRegexp + } + + // comments using comment as a key to avoid duplicates + comments := make(map[string]bool) + lines, err := stringToLines(q) + if err != nil { + return nil, err + } + for _, l := range lines { + for _, v := range r.FindStringSubmatch(l) { + comments[strings.TrimLeft(v, fmt.Sprintf("%s ", startChar))] = true + } + } + + return comments, nil +} + +func parseKeyValueFromComment(s string) (map[string]bool, error) { + if err := prepareKeyValueRegexp(); err != nil { + return nil, err + } + + res := make(map[string]bool) + matches := keyValueRegexp.FindAllStringSubmatch(removeFormatting(s), -1) + for _, v := range matches { + if len(v) < 2 { + continue + } + res[v[1]] = true + } + + return res, nil +} + +func prepareMultilineRegexp() error { + // to compile regexp only once + multilineOnce.Do(func() { + multilineRegexp, errMultiline = regexp.Compile(`(?s)\/\*(.*?)\*\/`) + }) + if errMultiline != nil { + return errMultiline + } + + return nil +} + +func prepareSpaceRegexp() error { + // to compile regexp only once + spaceOnce.Do(func() { + spaceRegexp, errSpace = regexp.Compile(`\s+`) + }) + if errSpace != nil { + return errSpace + } + + return nil +} + +func prepareDashRegexp() error { + // to compile regexp only once + dashOnce.Do(func() { + dashRegexp, errDash = regexp.Compile(`--.*`) + }) + if errDash != nil { + return errDash + } + + return nil +} + +func prepareSharpRegexp() error { + // to compile regexp only once + sharpOnce.Do(func() { + sharpRegexp, errSharp = regexp.Compile(`#.*`) + }) + if errSharp != nil { + return errSharp + } + + return nil +} + +func prepareKeyValueRegexp() error { + // to compile regexp only once + keyValueOnce.Do(func() { + keyValueRegexp, errKeyValue = regexp.Compile(`(?s)([a-zA-Z-\d]+='.+?')`) + }) + if errKeyValue != nil { + return errKeyValue + } + + return nil +} + +func removeFormatting(s string) string { + value := strings.ReplaceAll(s, "\n", "") + return strings.ReplaceAll(value, "\t", "") +} + +func removeSpaces(s string) (string, error) { + if err := prepareSpaceRegexp(); err != nil { + return "", err + } + + value := spaceRegexp.ReplaceAllString(s, " ") + value = strings.TrimLeft(value, " ") + return strings.TrimRight(value, " "), nil +} + +func stringToLines(s string) ([]string, error) { + var lines []string + scanner := bufio.NewScanner(strings.NewReader(s)) + for scanner.Scan() { + lines = append(lines, scanner.Text()) + } + err := scanner.Err() + + return lines, err +} diff --git a/agent/queryparser/parser.go b/agent/queryparser/parser.go index b3f4b9dae8..535af7320e 100644 --- a/agent/queryparser/parser.go +++ b/agent/queryparser/parser.go @@ -64,3 +64,39 @@ func GetMySQLFingerprintPlaceholders(query, digestText string) (string, uint32) func GetMySQLFingerprintFromExplainFingerprint(explainFingerprint string) string { return decimalsPlaceholdersRegexp.ReplaceAllString(explainFingerprint, "?") } + +// MySQLComments parse query and return its comments. Can parse multi comments. +// Multi comments support should be dropped in future MySQL versions. +// Doc: https://dev.mysql.com/doc/refman/8.0/en/comments.html +func MySQLComments(q string) (map[string]string, error) { + comments, err := parseMySQLComments(q) + if err != nil { + return nil, err + } + + return commentsIntoMap(comments), nil +} + +// PostgreSQLComments parse query and return its comments. Can parse multi comments. +// Doc: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-COMMENTS +func PostgreSQLComments(q string) (map[string]string, error) { + comments, err := parsePostgreSQLComments(q) + if err != nil { + return nil, err + } + + return commentsIntoMap(comments), nil +} + +func commentsIntoMap(comments map[string]bool) map[string]string { + res := make(map[string]string) + for c := range comments { + split := strings.Split(c, "=") + if len(split) < 2 { + continue + } + res[split[0]] = strings.ReplaceAll(split[1], "'", "") + } + + return res +} diff --git a/agent/queryparser/parser_test.go b/agent/queryparser/parser_test.go index f68fafe430..6528941277 100644 --- a/agent/queryparser/parser_test.go +++ b/agent/queryparser/parser_test.go @@ -18,9 +18,10 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) -type test struct { +type testCase struct { Query string DigestText string ExpectedFingerprint string @@ -28,7 +29,7 @@ type test struct { } func TestMySQL(t *testing.T) { - sqls := []test{ + sqls := []testCase{ { Query: "SELECT /* Sleep */ sleep(0.1)", DigestText: "SELECT `sleep` (?)", @@ -79,3 +80,116 @@ func TestMySQL(t *testing.T) { assert.Equal(t, sql.ExpectedPlaceHoldersCount, placeholdersCount) } } + +type testCaseComments struct { + Name string + Query string + Comments map[string]string +} + +func TestMySQLComments(t *testing.T) { + testCases := []testCaseComments{ + { + Name: "No comment", + Query: `SELECT * FROM people WHERE name = 'John' + AND name != 'Doe'`, + Comments: make(map[string]string), + }, + { + Name: "Dash comment", + Query: `SELECT * FROM people -- web-framework='Django', controller='unknown'`, + Comments: map[string]string{ + "web-framework": "Django", + "controller": "unknown", + }, + }, + { + Name: "Hash comment", + Query: `SELECT * FROM people # framework='Django' + WHERE name = 'John' + `, + Comments: map[string]string{ + "framework": "Django", + }, + }, + { + Name: "Multiline comment with new line", + Query: `SELECT * FROM people /* Huh framework='Django', + controller='unknown' */`, + Comments: map[string]string{ + "framework": "Django", + "controller": "unknown", + }, + }, + { + Name: "Multicomment case with new line", + Query: `SELECT * FROM people /* + framework='Django', + controller='unknown' + */ WHERE name = 'John' # os='unix' + AND name != 'Doe'`, + Comments: map[string]string{ + "framework": "Django", + "controller": "unknown", + "os": "unix", + }, + }, + } + + for _, c := range testCases { + t.Run(c.Name, func(t *testing.T) { + comments, err := MySQLComments(c.Query) + require.NoError(t, err) + require.Equal(t, c.Comments, comments) + }) + } +} + +func TestPostgreSQLComments(t *testing.T) { + testCases := []testCaseComments{ + { + Name: "No comment", + Query: `SELECT * FROM people WHERE name = 'John' + AND name != 'Doe'`, + Comments: make(map[string]string), + }, + { + Name: "Dash comment", + Query: `SELECT * FROM people -- framework='Django', controller='unknown'`, + Comments: map[string]string{ + "framework": "Django", + "controller": "unknown", + }, + }, + { + Name: "Multiline comment with new line", + Query: `SELECT * FROM people /* framework='Django', + controller='unknown' */`, + Comments: map[string]string{ + "framework": "Django", + "controller": "unknown", + }, + }, + { + Name: "Multicomment case with new line", + Query: `SELECT * FROM people /* + framework='Django', + controller='unknown' + */ WHERE name = 'John' -- os='unix' + AND name != 'Doe'`, + Comments: map[string]string{ + "framework": "Django", + "controller": "unknown", + "os": "unix", + }, + }, + } + + for _, c := range testCases { + t.Run(c.Name, func(t *testing.T) { + comments, err := PostgreSQLComments(c.Query) + require.NoError(t, err) + require.Equal(t, c.Comments, comments) + }) + } +} diff --git a/api/agentpb/agent.pb.go b/api/agentpb/agent.pb.go index 52ce671b6d..303eb4e42e 100644 --- a/api/agentpb/agent.pb.go +++ b/api/agentpb/agent.pb.go @@ -3518,6 +3518,8 @@ type SetStateRequest_BuiltinAgent struct { Dsn string `protobuf:"bytes,2,opt,name=dsn,proto3" json:"dsn,omitempty"` // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `protobuf:"varint,8,opt,name=max_query_length,json=maxQueryLength,proto3" json:"max_query_length,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,9,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Disables query examples for QAN Agents if true. DisableQueryExamples bool `protobuf:"varint,3,opt,name=disable_query_examples,json=disableQueryExamples,proto3" json:"disable_query_examples,omitempty"` // Instructs QAN Agents to rotate query log file or table at this size if > 0. @@ -3583,6 +3585,13 @@ func (x *SetStateRequest_BuiltinAgent) GetMaxQueryLength() int32 { return 0 } +func (x *SetStateRequest_BuiltinAgent) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *SetStateRequest_BuiltinAgent) GetDisableQueryExamples() bool { if x != nil { return x.DisableQueryExamples @@ -6594,7 +6603,7 @@ var file_agentpb_agent_proto_rawDesc = []byte{ 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x08, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfd, 0x08, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x67, 0x65, @@ -6636,264 +6645,287 @@ var file_agentpb_agent_proto_rawDesc = []byte{ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xc2, 0x02, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xfc, 0x02, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, - 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, - 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, - 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, - 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x65, 0x0a, 0x12, - 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, - 0x74, 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf4, 0x02, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x03, - 0x6e, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x69, 0x6c, - 0x12, 0x14, 0x0a, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, - 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, - 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, - 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x06, 0x64, 0x6f, 0x75, 0x62, - 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0c, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 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, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, - 0x61, 0x70, 0x12, 0x32, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x06, - 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x41, - 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, - 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, - 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x61, 0x70, 0x12, 0x30, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0x4f, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x43, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, - 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x85, 0x01, 0x0a, - 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x04, - 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, - 0x69, 0x63, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x6f, 0x63, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x52, 0x04, - 0x64, 0x6f, 0x63, 0x73, 0x22, 0xe9, 0x2a, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x60, 0x0a, 0x14, 0x6d, 0x79, 0x73, 0x71, - 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, - 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x1e, 0x6d, 0x79, - 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, - 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x79, 0x73, 0x71, - 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x1e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, - 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, - 0x68, 0x6f, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, - 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, - 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x23, - 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, - 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, - 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x38, + 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x2b, + 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x74, + 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x74, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, + 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x65, 0x0a, 0x12, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, + 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 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, 0x39, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x12, 0x0a, + 0x10, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xf4, 0x02, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x6e, 0x69, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x04, 0x62, 0x6f, + 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, + 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x00, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, + 0x36, 0x34, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x01, 0x48, 0x00, 0x52, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x05, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x08, 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, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, + 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x32, 0x0a, 0x06, + 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x41, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x05, + 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x12, 0x30, + 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x70, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, + 0x1a, 0x4f, 0x0a, 0x08, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x43, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52, 0x04, 0x72, + 0x6f, 0x77, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x22, 0xe9, + 0x2a, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x60, 0x0a, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, + 0x4c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, + 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x1e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, + 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, + 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x7a, 0x0a, 0x1e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, + 0x52, 0x1a, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x17, + 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, - 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, - 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x66, 0x0a, 0x16, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, - 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, - 0x00, 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, - 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x57, 0x0a, 0x11, 0x70, 0x74, 0x5f, 0x73, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, - 0x0f, 0x70, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x5e, 0x0a, 0x14, 0x70, 0x74, 0x5f, 0x70, 0x67, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, 0x50, 0x67, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x11, 0x70, - 0x74, 0x50, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, + 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, + 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x23, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, - 0x54, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x16, 0x70, 0x74, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x64, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x67, 0x0a, 0x17, 0x70, 0x74, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, 0x4d, 0x79, - 0x53, 0x51, 0x4c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x48, 0x00, 0x52, 0x14, 0x70, 0x74, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x6d, 0x79, 0x73, 0x71, - 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, + 0x52, 0x1f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, + 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, + 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, + 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x66, 0x0a, 0x16, 0x6d, 0x6f, 0x6e, + 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, - 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x79, 0x73, - 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x6d, 0x0a, 0x19, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x33, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x16, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x51, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x6f, 0x6e, + 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x57, 0x0a, 0x11, 0x70, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x74, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x5e, 0x0a, 0x14, 0x70, 0x74, + 0x5f, 0x70, 0x67, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, 0x50, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x11, 0x70, 0x74, 0x50, 0x67, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x74, + 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, + 0x44, 0x42, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, + 0x00, 0x52, 0x16, 0x70, 0x74, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x70, 0x74, 0x5f, + 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x70, 0x74, + 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x32, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, + 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x6d, 0x0a, 0x19, 0x6d, + 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, 0x70, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, - 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x1e, 0x70, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, + 0x48, 0x00, 0x52, 0x16, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, + 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, + 0x68, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, - 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x67, 0x65, 0x74, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x36, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, - 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1e, - 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7c, - 0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, - 0x1b, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x8b, 0x01, 0x0a, - 0x23, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x67, - 0x65, 0x74, 0x63, 0x6d, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x6f, 0x70, 0x74, 0x73, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6d, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x4f, 0x70, 0x74, 0x73, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x20, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, - 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x63, 0x6d, 0x64, 0x6c, 0x69, 0x6e, 0x65, - 0x6f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x25, 0x6d, - 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x70, - 0x6c, 0x73, 0x65, 0x74, 0x67, 0x65, 0x74, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x67, 0x65, + 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x1e, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x22, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x73, 0x65, 0x74, 0x67, - 0x65, 0x74, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x94, - 0x01, 0x0a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x5f, 0x67, 0x65, 0x74, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, - 0x73, 0x74, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, - 0x52, 0x23, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, - 0x74, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x64, 0x61, 0x74, 0x61, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x73, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x85, 0x01, 0x0a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x67, 0x65, 0x74, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, + 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x67, + 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, + 0x6e, 0x66, 0x6f, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, + 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1b, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, + 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x66, 0x6f, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x23, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, + 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x67, 0x65, 0x74, 0x63, 0x6d, 0x64, 0x6c, + 0x69, 0x6e, 0x65, 0x6f, 0x70, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x38, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, + 0x6d, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x4f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x48, 0x00, 0x52, 0x20, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x47, 0x65, 0x74, 0x63, 0x6d, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x6f, 0x70, 0x74, 0x73, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x73, 0x65, 0x74, 0x67, 0x65, + 0x74, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x39, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, + 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x73, 0x65, 0x74, 0x67, 0x65, 0x74, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x26, 0x6d, 0x6f, 0x6e, + 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x67, 0x65, 0x74, 0x64, 0x69, + 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, - 0x00, 0x52, 0x17, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 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, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, - 0xf1, 0x01, 0x0a, 0x12, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, - 0x69, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x2d, 0x0a, 0x09, - 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, - 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x1a, 0x9b, 0x01, 0x0a, 0x1a, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, - 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x47, 0x65, 0x74, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x23, 0x6d, 0x6f, 0x6e, 0x67, + 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x64, 0x69, 0x61, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x64, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x73, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x3b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x17, 0x72, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x09, 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, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0xf1, 0x01, 0x0a, 0x12, 0x4d, 0x79, + 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, + 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x44, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, + 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x9b, 0x01, + 0x0a, 0x1a, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, + 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x9b, 0x01, 0x0a, 0x1a, + 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, + 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, + 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x95, 0x01, 0x0a, 0x14, 0x4d, 0x79, + 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, @@ -6902,89 +6934,60 @@ var file_agentpb_agent_proto_rawDesc = []byte{ 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x1a, 0x9b, 0x01, 0x0a, 0x1a, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, - 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, - 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, - 0x95, 0x01, 0x0a, 0x14, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, - 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0xa0, 0x01, 0x0a, 0x1f, 0x50, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, - 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, - 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, - 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x9a, 0x01, 0x0a, 0x19, 0x50, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, - 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x6f, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, - 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x11, 0x0a, 0x0f, 0x50, 0x54, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x73, 0x0a, 0x11, 0x50, - 0x54, 0x50, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x1a, 0x78, 0x0a, 0x16, 0x50, 0x54, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x53, 0x75, 0x6d, + 0x79, 0x1a, 0xa0, 0x01, 0x0a, 0x1f, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, + 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, + 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x1a, 0x9a, 0x01, 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, + 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, + 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, + 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x1a, 0x6f, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, + 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x1a, 0x11, 0x0a, 0x0f, 0x50, 0x54, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x73, 0x0a, 0x11, 0x50, 0x54, 0x50, 0x67, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x8e, 0x01, 0x0a, 0x14, 0x50, - 0x54, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x63, - 0x6b, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x95, 0x01, 0x0a, 0x14, - 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x09, - 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, - 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x1a, 0x97, 0x01, 0x0a, 0x16, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x78, 0x0a, 0x16, 0x50, 0x54, + 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x8e, 0x01, 0x0a, 0x14, 0x50, 0x54, 0x4d, 0x79, 0x53, 0x51, 0x4c, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x95, 0x01, 0x0a, 0x14, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, @@ -6992,188 +6995,210 @@ var file_agentpb_agent_proto_rawDesc = []byte{ 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x84, 0x01, - 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, - 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2d, 0x0a, - 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, - 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x1a, 0x9c, 0x01, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, - 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x09, - 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, - 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x1a, 0x63, 0x0a, 0x1e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, + 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x97, 0x01, + 0x0a, 0x16, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, + 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x84, 0x01, 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, + 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, - 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x1b, 0x4d, 0x6f, 0x6e, 0x67, - 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, - 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, - 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x65, 0x0a, 0x20, 0x4d, 0x6f, - 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6d, 0x64, - 0x4c, 0x69, 0x6e, 0x65, 0x4f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, + 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, + 0x73, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, + 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x9c, + 0x01, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, - 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x1a, 0x67, 0x0a, 0x22, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x70, 0x6c, 0x53, 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, - 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, - 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x68, 0x0a, 0x23, 0x4d, 0x6f, - 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x44, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x09, 0x74, 0x6c, 0x73, 0x5f, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x08, 0x74, 0x6c, 0x73, + 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x1a, 0x63, 0x0a, + 0x1e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, + 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, + 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x1b, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x1a, 0xcf, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x69, 0x0a, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x46, - 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x1a, 0x0a, 0x16, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, - 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, - 0x4f, 0x4e, 0x47, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x42, 0x4d, 0x5f, 0x41, - 0x47, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x70, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x6f, - 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x74, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x65, 0x0a, 0x20, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6d, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x4f, 0x70, + 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, + 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x67, 0x0a, 0x22, 0x4d, + 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x53, + 0x65, 0x74, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x68, 0x0a, 0x23, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, + 0x63, 0x44, 0x61, 0x74, 0x61, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, + 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, + 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0xcf, + 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x69, 0x0a, + 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x46, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x59, 0x53, + 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, + 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x4f, 0x4e, 0x47, 0x4f, 0x44, 0x10, + 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x42, 0x4d, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x02, + 0x42, 0x08, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x30, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, - 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x0a, - 0x14, 0x50, 0x42, 0x4d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x49, 0x54, 0x52, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, + 0x6e, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x13, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x16, 0x0a, 0x14, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x0a, 0x14, 0x50, 0x42, 0x4d, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x50, 0x49, 0x54, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, + 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, + 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x2d, 0x0a, 0x15, + 0x50, 0x42, 0x4d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x49, 0x54, 0x52, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x43, 0x0a, 0x10, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x22, 0x67, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x1c, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, + 0x6e, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x18, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x6f, 0x67, 0x4c, + 0x69, 0x6e, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe4, 0x01, 0x0a, 0x16, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, + 0x73, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 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, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, - 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x22, 0x2d, 0x0a, 0x15, 0x50, 0x42, 0x4d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, - 0x49, 0x54, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x43, 0x0a, 0x10, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x67, 0x0a, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, - 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, - 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, - 0x3e, 0x0a, 0x1c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0xe4, 0x01, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 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, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2f, 0x0a, - 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, - 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x22, 0x95, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x1a, 0x28, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x29, - 0x0a, 0x10, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x11, 0x4a, 0x6f, 0x62, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, - 0x6c, 0x69, 0x76, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x10, 0x53, 0x33, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, - 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0x2e, 0x0a, 0x18, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0xc3, 0x0f, 0x0a, 0x0f, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, - 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, - 0x6f, 0x62, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 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, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x6d, 0x79, 0x73, - 0x71, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x12, 0x5d, 0x0a, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x12, 0x6d, - 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x12, 0x4d, 0x0a, 0x0e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x22, 0x95, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x28, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x10, 0x4a, 0x6f, 0x62, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, + 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, + 0x62, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x11, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x22, 0xb2, + 0x01, 0x0a, 0x10, 0x53, 0x33, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x1d, + 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, + 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, + 0x0a, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x22, 0x2e, 0x0a, 0x18, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x22, 0xc3, 0x0f, 0x0a, 0x0f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x33, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 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, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x12, 0x47, 0x0a, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, - 0x00, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x12, 0x63, 0x0a, 0x16, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, - 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, - 0x14, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, 0x93, 0x02, 0x0a, 0x0b, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, + 0x0b, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x5d, 0x0a, 0x14, + 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x4d, 0x0a, 0x0e, 0x6d, + 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, + 0x6f, 0x44, 0x42, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, + 0x67, 0x6f, 0x64, 0x62, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x63, 0x0a, 0x16, 0x6d, 0x6f, + 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, + 0x64, 0x62, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, + 0x93, 0x02, 0x0a, 0x0b, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, + 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x33, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x33, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x73, 0x33, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x0b, + 0x10, 0x0c, 0x52, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xc3, 0x01, 0x0a, 0x12, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 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, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x33, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x33, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x73, @@ -7181,361 +7206,349 @@ var file_agentpb_agent_proto_rawDesc = []byte{ 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x52, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xc3, 0x01, 0x0a, 0x12, - 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x33, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x53, 0x33, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x48, 0x00, 0x52, 0x08, 0x73, 0x33, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, - 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x52, 0x11, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x1a, 0xf9, 0x03, 0x0a, 0x0d, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x74, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, - 0x74, 0x72, 0x12, 0x33, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x09, 0x64, 0x61, - 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x33, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x33, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x73, 0x33, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x4e, 0x0a, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, - 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, - 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xa8, 0x04, - 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, - 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x04, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x69, 0x74, 0x72, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 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, 0x0d, 0x70, 0x69, 0x74, 0x72, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x33, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x33, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x73, 0x33, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x4e, 0x0a, 0x11, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x62, 0x6d, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x62, 0x6d, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x70, 0x62, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x05, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x22, - 0x28, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x27, 0x0a, 0x0e, 0x53, 0x74, 0x6f, - 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, - 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, - 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x05, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x41, 0x0a, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x79, 0x73, 0x71, - 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x57, 0x0a, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, - 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x12, 0x6d, 0x79, - 0x73, 0x71, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x12, 0x47, 0x0a, 0x0e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x62, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x44, 0x42, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x64, 0x62, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x5d, 0x0a, 0x16, 0x6d, 0x6f, 0x6e, - 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xf9, 0x03, 0x0a, 0x0d, + 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x16, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x73, + 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x69, 0x74, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x69, 0x74, 0x72, 0x12, 0x33, 0x0a, 0x0a, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x33, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x33, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, + 0x08, 0x73, 0x33, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x11, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, + 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xa8, 0x04, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x48, 0x00, 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, 0x21, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x6e, 0x0a, 0x0d, 0x4d, - 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2c, 0x0a, 0x12, - 0x69, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, - 0x64, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3e, 0x0a, 0x0b, 0x4d, - 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x14, 0x0a, 0x12, 0x4d, - 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x1a, 0x16, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x52, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0xa7, 0x03, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x62, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4d, - 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x79, - 0x73, 0x71, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x59, 0x0a, 0x14, 0x6d, 0x79, 0x73, - 0x71, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4d, 0x79, 0x53, 0x51, - 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, - 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2d, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, 0x6c, - 0x6f, 0x67, 0x73, 0x1a, 0x0d, 0x0a, 0x0b, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x1a, 0x14, 0x0a, 0x12, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, 0x49, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, - 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, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, - 0x6f, 0x6e, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x04, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, 0x09, 0x73, 0x6f, 0x66, - 0x74, 0x77, 0x61, 0x72, 0x65, 0x73, 0x1a, 0x08, 0x0a, 0x06, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, - 0x1a, 0x0c, 0x0a, 0x0a, 0x58, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, 0x09, - 0x0a, 0x07, 0x58, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x1a, 0x08, 0x0a, 0x06, 0x51, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x1a, 0x09, 0x0a, 0x07, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x1a, 0x05, - 0x0a, 0x03, 0x50, 0x42, 0x4d, 0x1a, 0x85, 0x03, 0x0a, 0x08, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, - 0x72, 0x65, 0x12, 0x3a, 0x0a, 0x06, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, - 0x53, 0x51, 0x4c, 0x64, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x12, 0x46, - 0x0a, 0x0a, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x74, - 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x78, 0x74, 0x72, 0x61, - 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x07, 0x78, 0x62, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x58, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x48, 0x00, 0x52, 0x07, 0x78, 0x62, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x71, 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x51, 0x70, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x06, 0x71, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x12, 0x16, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, + 0x0a, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x06, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x41, + 0x0a, 0x0e, 0x70, 0x69, 0x74, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x07, 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, 0x0d, 0x70, 0x69, 0x74, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x33, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x33, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, + 0x08, 0x73, 0x33, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x11, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x6c, 0x64, 0x65, + 0x72, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x62, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x62, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x0b, 0x70, 0x62, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, + 0x64, 0x73, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, + 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, + 0x11, 0x0a, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x42, 0x05, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0x28, 0x0a, 0x10, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x27, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, + 0x53, 0x74, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xdb, 0x05, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x15, 0x0a, + 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, + 0x6f, 0x62, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 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, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2e, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x41, + 0x0a, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x12, 0x57, 0x0a, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x52, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x47, 0x0a, 0x0e, 0x6d, 0x6f, + 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x12, 0x5d, 0x0a, 0x16, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x72, + 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x52, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x6f, + 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x1a, 0x21, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x6e, 0x0a, 0x0d, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x53, 0x68, 0x61, 0x72, 0x64, 0x65, 0x64, 0x43, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3e, 0x0a, 0x0b, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x14, 0x0a, 0x12, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, 0x16, 0x0a, 0x14, 0x4d, + 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xa7, 0x03, + 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x15, 0x0a, + 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, + 0x6f, 0x62, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 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, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x43, + 0x0a, 0x0c, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x12, 0x59, 0x0a, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x72, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x48, 0x00, 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, + 0x6c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x2d, + 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x1a, 0x0d, 0x0a, + 0x0b, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, 0x14, 0x0a, 0x12, + 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x1a, 0x49, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 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, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x42, 0x08, 0x0a, + 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9d, 0x04, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, + 0x0a, 0x09, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x66, + 0x74, 0x77, 0x61, 0x72, 0x65, 0x52, 0x09, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x73, + 0x1a, 0x08, 0x0a, 0x06, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x1a, 0x0c, 0x0a, 0x0a, 0x58, 0x74, + 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x1a, 0x09, 0x0a, 0x07, 0x58, 0x62, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x1a, 0x08, 0x0a, 0x06, 0x51, 0x70, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x09, 0x0a, + 0x07, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x1a, 0x05, 0x0a, 0x03, 0x50, 0x42, 0x4d, 0x1a, + 0x85, 0x03, 0x0a, 0x08, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x12, 0x3a, 0x0a, 0x06, + 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x48, 0x00, + 0x52, 0x06, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x12, 0x46, 0x0a, 0x0a, 0x78, 0x74, 0x72, 0x61, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x78, 0x74, 0x72, 0x61, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x12, 0x3d, 0x0a, 0x07, 0x78, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, - 0x67, 0x6f, 0x44, 0x42, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x12, 0x31, - 0x0a, 0x03, 0x70, 0x62, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x67, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x62, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x48, 0x00, 0x52, 0x07, 0x78, 0x62, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x12, + 0x3a, 0x0a, 0x06, 0x71, 0x70, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x48, 0x00, 0x52, 0x06, 0x71, 0x70, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x6d, + 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x42, 0x4d, 0x48, 0x00, 0x52, 0x03, 0x70, 0x62, - 0x6d, 0x42, 0x0a, 0x0a, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x90, 0x01, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 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, 0x14, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0xbb, 0x08, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xff, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, - 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, - 0x67, 0x12, 0x41, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x71, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x51, 0x41, 0x4e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x71, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x12, 0x41, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x31, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x09, 0x6a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x37, 0x0a, 0x0c, 0x6a, 0x6f, 0x62, 0x5f, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x48, 0x00, 0x52, 0x0b, 0x6a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x21, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, - 0x6f, 0x6e, 0x67, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, - 0x00, 0x52, 0x08, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, - 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, - 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, - 0x73, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x10, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x12, - 0x33, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x6f, - 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x39, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x3f, 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x62, 0x6d, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, - 0x69, 0x74, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x50, 0x42, 0x4d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x49, 0x54, 0x52, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x62, 0x6d, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x50, 0x69, 0x74, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4c, - 0x6f, 0x67, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xc9, - 0x07, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xff, 0x0f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, - 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, 0x67, - 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x71, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x51, 0x41, 0x4e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x71, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x69, 0x6e, - 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x65, 0x74, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x3e, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, - 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, - 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, - 0x12, 0x32, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4a, - 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x6f, - 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x38, 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, - 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x0b, 0x67, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, - 0x0a, 0x0f, 0x70, 0x62, 0x6d, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x69, 0x74, - 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x50, 0x42, 0x4d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x49, 0x54, 0x52, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x62, 0x6d, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x50, 0x69, 0x74, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, - 0x6f, 0x67, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x42, - 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2a, 0xc4, 0x01, 0x0a, 0x18, 0x4d, - 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x53, 0x51, 0x4c, - 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, - 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, - 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, - 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x59, 0x53, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x48, 0x00, + 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x12, 0x31, 0x0a, 0x03, 0x70, 0x62, 0x6d, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x50, 0x42, 0x4d, 0x48, 0x00, 0x52, 0x03, 0x70, 0x62, 0x6d, 0x42, 0x0a, 0x0a, 0x08, 0x73, + 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3e, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, + 0x39, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 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, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xbb, 0x08, 0x0a, 0x0c, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xff, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, + 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0d, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3b, + 0x0a, 0x0b, 0x71, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x41, 0x4e, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, + 0x0a, 0x71, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x41, 0x0a, 0x0d, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x31, + 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x09, 0x6a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x37, 0x0a, 0x0c, 0x6a, 0x6f, 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x6a, + 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x6f, + 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x12, 0x36, 0x0a, + 0x09, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, + 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, + 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x33, 0x0a, 0x08, 0x73, 0x74, 0x6f, + 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x39, + 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x09, + 0x6a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x67, 0x65, 0x74, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x67, + 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0f, 0x70, 0x62, + 0x6d, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x69, 0x74, 0x72, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x42, 0x4d, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x49, 0x54, 0x52, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x62, 0x6d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x69, + 0x74, 0x72, 0x12, 0x39, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x73, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x48, 0x00, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x42, 0x09, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xc9, 0x07, 0x0a, 0x0d, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0xff, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, + 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, + 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3c, + 0x0a, 0x0b, 0x71, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x41, 0x4e, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, + 0x52, 0x0a, 0x71, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x42, 0x0a, 0x0d, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x21, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, + 0x69, 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x08, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x6f, + 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x00, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6a, 0x6f, 0x62, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x32, 0x0a, 0x08, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x6a, 0x6f, 0x62, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x74, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x12, 0x38, + 0x0a, 0x0a, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, 0x6a, + 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3e, 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x0f, 0x70, 0x62, 0x6d, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x69, 0x74, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x42, 0x4d, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x50, 0x49, 0x54, 0x52, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x0d, 0x70, 0x62, 0x6d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x69, 0x74, 0x72, 0x12, + 0x38, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x09, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x2a, 0xc4, 0x01, 0x0a, 0x18, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, + 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, + 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, + 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, + 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, + 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, + 0x54, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, + 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, + 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, - 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x02, 0x12, - 0x30, 0x0a, 0x2c, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, - 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x54, - 0x52, 0x41, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, - 0x03, 0x32, 0x41, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x28, 0x01, 0x30, 0x01, 0x42, 0x6f, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x22, 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, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0xca, 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x11, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x05, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x49, 0x54, 0x49, + 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x03, 0x32, 0x41, 0x0a, 0x05, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, + 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x1a, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x6f, + 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x0a, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x22, 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, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, + 0x41, 0x58, 0x58, 0xaa, 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x05, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/agentpb/agent.pb.validate.go b/api/agentpb/agent.pb.validate.go index ad3c4128c0..a3bf0afae2 100644 --- a/api/agentpb/agent.pb.validate.go +++ b/api/agentpb/agent.pb.validate.go @@ -7894,6 +7894,8 @@ func (m *SetStateRequest_BuiltinAgent) validate(all bool) error { // no validation rules for MaxQueryLength + // no validation rules for DisableCommentsParsing + // no validation rules for DisableQueryExamples // no validation rules for MaxQueryLogSize diff --git a/api/agentpb/agent.proto b/api/agentpb/agent.proto index 973b064286..6aafb4a4ed 100644 --- a/api/agentpb/agent.proto +++ b/api/agentpb/agent.proto @@ -70,6 +70,8 @@ message SetStateRequest { string dsn = 2; // Limit query length in QAN (default: server-defined; -1: no limit). int32 max_query_length = 8; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 9; // Disables query examples for QAN Agents if true. bool disable_query_examples = 3; // Instructs QAN Agents to rotate query log file or table at this size if > 0. diff --git a/api/agentpb/collector.pb.go b/api/agentpb/collector.pb.go index 27346a7c84..a9fd496871 100644 --- a/api/agentpb/collector.pb.go +++ b/api/agentpb/collector.pb.go @@ -275,6 +275,8 @@ type MetricsBucket_Common struct { ExplainFingerprint string `protobuf:"bytes,25,opt,name=explain_fingerprint,json=explainFingerprint,proto3" json:"explain_fingerprint,omitempty"` // ammount of variables in query. PlaceholdersCount uint32 `protobuf:"varint,26,opt,name=placeholders_count,json=placeholdersCount,proto3" json:"placeholders_count,omitempty"` + // List of keys and values of comments. + Comments map[string]string `protobuf:"bytes,27,rep,name=comments,proto3" json:"comments,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // digest_text - query signature. Query without values. Fingerprint string `protobuf:"bytes,2,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` // Dimension Group. @@ -381,6 +383,13 @@ func (x *MetricsBucket_Common) GetPlaceholdersCount() uint32 { return 0 } +func (x *MetricsBucket_Common) GetComments() map[string]string { + if x != nil { + return x.Comments + } + return nil +} + func (x *MetricsBucket_Common) GetFingerprint() string { if x != nil { return x.Fingerprint @@ -2168,7 +2177,7 @@ var file_agentpb_collector_proto_rawDesc = []byte{ 0x0a, 0x17, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x18, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x2f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9a, 0x4c, 0x0a, 0x0d, 0x4d, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9e, 0x4d, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, @@ -2183,7 +2192,7 @@ var file_agentpb_collector_proto_rawDesc = []byte{ 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, - 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x1a, 0xf1, 0x08, 0x0a, + 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x1a, 0xf5, 0x09, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6e, @@ -2192,616 +2201,625 @@ var file_agentpb_collector_proto_rawDesc = []byte{ 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x16, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x75, 0x6e, 0x69, - 0x78, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x53, 0x65, 0x63, - 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x53, 0x65, 0x63, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x65, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x65, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x35, 0x0a, 0x0c, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x6e, 0x75, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x16, 0x6e, 0x75, 0x6d, 0x51, 0x75, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x35, 0x0a, 0x17, 0x6e, 0x75, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x77, - 0x69, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x6e, 0x75, - 0x6d, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, - 0x74, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x15, + 0x74, 0x12, 0x45, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x1b, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, + 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x16, + 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x6f, 0x73, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, + 0x6f, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x33, + 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x13, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x55, 0x6e, 0x69, 0x78, 0x53, 0x65, 0x63, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x53, 0x65, 0x63, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x12, 0x3f, 0x0a, 0x0e, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x2e, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x0d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x35, 0x0a, 0x0c, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x69, 0x73, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x6e, + 0x75, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, + 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x16, + 0x6e, 0x75, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x57, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6e, 0x75, 0x6d, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x51, 0x75, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x57, 0x69, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x3f, 0x0a, + 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x1f, + 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x63, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, + 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x4d, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x27, 0x0a, 0x10, - 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x39, 0x39, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, - 0x6d, 0x65, 0x50, 0x39, 0x39, 0x1a, 0x39, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0xa8, 0x2a, 0x0a, 0x05, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, - 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x4c, 0x6f, 0x63, - 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0c, 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, 0x6e, 0x12, - 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, - 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, - 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0c, 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x39, 0x39, 0x12, 0x25, 0x0a, - 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x65, 0x6e, - 0x74, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, - 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, - 0x52, 0x6f, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, - 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x4d, - 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, - 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, - 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, - 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x50, 0x39, 0x39, + 0x4d, 0x61, 0x78, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x39, 0x39, 0x1a, 0x3b, 0x0a, 0x0d, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 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, 0x1a, 0x39, 0x0a, 0x0b, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xa8, 0x2a, 0x0a, 0x05, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x12, 0x25, + 0x0a, 0x0f, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, + 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, + 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, + 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, + 0x4d, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x4c, + 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x4c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x39, + 0x39, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, + 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, + 0x73, 0x53, 0x65, 0x6e, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, + 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x6d, 0x12, + 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, + 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, + 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, + 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x25, 0x0a, + 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x39, 0x39, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x65, 0x6e, + 0x74, 0x50, 0x39, 0x39, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, + 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x43, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, + 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x53, + 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x61, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x4d, 0x69, + 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x61, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, + 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x69, - 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, - 0x52, 0x6f, 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, - 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, - 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, - 0x6f, 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x2d, - 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, - 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, - 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, - 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, - 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x2d, 0x0a, 0x13, - 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x5f, - 0x70, 0x39, 0x39, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, - 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x50, 0x39, 0x39, 0x12, 0x2d, 0x0a, 0x13, 0x6d, - 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, - 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x41, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, - 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x75, - 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x41, 0x66, - 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, - 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x41, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, - 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x41, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, - 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x41, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x50, 0x39, 0x39, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, - 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, - 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x6d, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x61, - 0x64, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, - 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0f, 0x6d, - 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x61, 0x64, 0x4d, - 0x61, 0x78, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x19, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, - 0x77, 0x73, 0x52, 0x65, 0x61, 0x64, 0x50, 0x39, 0x39, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, - 0x65, 0x72, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, - 0x1a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, 0x73, - 0x73, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, 0x65, 0x72, 0x67, - 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x1b, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x73, - 0x53, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x70, - 0x61, 0x73, 0x73, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x73, 0x4d, 0x69, 0x6e, - 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, - 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4d, - 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x2b, 0x0a, + 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, + 0x52, 0x6f, 0x77, 0x73, 0x45, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x50, 0x39, 0x39, 0x12, + 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, + 0x6f, 0x77, 0x73, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x2d, + 0x0a, 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, + 0x77, 0x73, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x2d, 0x0a, + 0x13, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, + 0x73, 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x13, + 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x6d, 0x61, 0x78, 0x18, 0x13, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, + 0x41, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x2d, 0x0a, 0x13, 0x6d, + 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, + 0x39, 0x39, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x41, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x39, 0x39, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, + 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6e, + 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, + 0x73, 0x52, 0x65, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, + 0x77, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x61, 0x64, 0x4d, 0x69, 0x6e, 0x12, + 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, + 0x61, 0x78, 0x18, 0x18, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x52, + 0x65, 0x61, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, + 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x19, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x0c, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x61, 0x64, 0x50, 0x39, 0x39, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x5f, - 0x70, 0x39, 0x39, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, - 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x2f, 0x0a, 0x15, 0x6d, 0x5f, - 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x5f, - 0x63, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, - 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x15, 0x6d, - 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x6f, 0x70, 0x73, - 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x20, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x49, 0x6e, 0x6e, - 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x15, - 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x6f, 0x70, - 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x49, 0x6e, - 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x4d, 0x69, 0x6e, 0x12, 0x2f, 0x0a, - 0x15, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x6f, - 0x70, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x22, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x49, - 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x2f, + 0x63, 0x6e, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, + 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, + 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, + 0x18, 0x1b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, + 0x73, 0x73, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, 0x65, 0x72, + 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x1c, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, + 0x73, 0x4d, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, + 0x70, 0x61, 0x73, 0x73, 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0f, 0x6d, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x73, 0x4d, 0x61, + 0x78, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, + 0x73, 0x65, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, + 0x4d, 0x65, 0x72, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x2f, 0x0a, 0x15, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, - 0x6f, 0x70, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x23, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, - 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x50, 0x39, 0x39, 0x12, - 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x12, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x43, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, - 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, - 0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, - 0x52, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, - 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x26, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x49, 0x6e, 0x6e, - 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x42, 0x79, 0x74, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x12, 0x33, - 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x27, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x12, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x4d, 0x61, 0x78, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, - 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x28, + 0x6f, 0x70, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, + 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x43, 0x6e, 0x74, 0x12, + 0x2f, 0x0a, 0x15, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, + 0x5f, 0x6f, 0x70, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x20, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, + 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x53, 0x75, 0x6d, + 0x12, 0x2f, 0x0a, 0x15, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, + 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x10, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x4d, 0x69, + 0x6e, 0x12, 0x2f, 0x0a, 0x15, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, + 0x5f, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x22, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x10, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, 0x4d, + 0x61, 0x78, 0x12, 0x2f, 0x0a, 0x15, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, + 0x6f, 0x5f, 0x72, 0x5f, 0x6f, 0x70, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x10, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x4f, 0x70, 0x73, + 0x50, 0x39, 0x39, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, + 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x31, 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, - 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x63, - 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, - 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, 0x69, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x16, 0x6d, - 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x77, 0x61, 0x69, - 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x49, 0x6e, - 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x31, - 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, - 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, - 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x69, - 0x6e, 0x12, 0x31, 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, - 0x5f, 0x72, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x2c, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x11, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, 0x69, - 0x74, 0x4d, 0x61, 0x78, 0x12, 0x31, 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, - 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x2d, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, - 0x57, 0x61, 0x69, 0x74, 0x50, 0x39, 0x39, 0x12, 0x39, 0x0a, 0x1a, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, + 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, + 0x73, 0x75, 0x6d, 0x18, 0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, + 0x64, 0x62, 0x49, 0x6f, 0x52, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x33, 0x0a, + 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x26, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, + 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x42, 0x79, 0x74, 0x65, 0x73, 0x4d, + 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, + 0x6f, 0x5f, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x27, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, + 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x70, + 0x39, 0x39, 0x18, 0x28, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, + 0x62, 0x49, 0x6f, 0x52, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x31, 0x0a, 0x16, + 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x77, 0x61, + 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x29, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x49, + 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, 0x69, 0x74, 0x43, 0x6e, 0x74, 0x12, + 0x31, 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, + 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x11, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, 0x69, 0x74, 0x53, + 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, + 0x6f, 0x5f, 0x72, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x2b, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x11, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, + 0x69, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, + 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, + 0x2c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x49, 0x6f, + 0x52, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x31, 0x0a, 0x16, 0x6d, 0x5f, 0x69, 0x6e, + 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x69, 0x6f, 0x5f, 0x72, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, + 0x39, 0x39, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, + 0x62, 0x49, 0x6f, 0x52, 0x57, 0x61, 0x69, 0x74, 0x50, 0x39, 0x39, 0x12, 0x39, 0x0a, 0x1a, 0x6d, + 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x15, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, + 0x61, 0x69, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x1a, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, + 0x64, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x61, 0x69, 0x74, + 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x49, 0x6e, 0x6e, + 0x6f, 0x64, 0x62, 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, + 0x6d, 0x12, 0x39, 0x0a, 0x1a, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, + 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, + 0x30, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x52, 0x65, + 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x39, 0x0a, 0x1a, + 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x31, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x15, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, + 0x57, 0x61, 0x69, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x39, 0x0a, 0x1a, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x61, 0x69, - 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x49, 0x6e, - 0x6e, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x43, - 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x1a, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x72, - 0x65, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, - 0x18, 0x2f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x52, - 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x39, 0x0a, - 0x1a, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x30, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x15, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, - 0x6b, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x39, 0x0a, 0x1a, 0x6d, 0x5f, 0x69, 0x6e, - 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x72, 0x65, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x61, - 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x31, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x49, - 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, - 0x4d, 0x61, 0x78, 0x12, 0x39, 0x0a, 0x1a, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, - 0x72, 0x65, 0x63, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x39, - 0x39, 0x18, 0x32, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, - 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x50, 0x39, 0x39, 0x12, 0x34, + 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x32, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x49, 0x6e, + 0x6e, 0x6f, 0x64, 0x62, 0x52, 0x65, 0x63, 0x4c, 0x6f, 0x63, 0x6b, 0x57, 0x61, 0x69, 0x74, 0x50, + 0x39, 0x39, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x71, + 0x75, 0x65, 0x75, 0x65, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x33, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x57, 0x61, 0x69, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, + 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, + 0x73, 0x75, 0x6d, 0x18, 0x34, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, + 0x64, 0x62, 0x51, 0x75, 0x65, 0x75, 0x65, 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x33, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x35, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x75, 0x65, 0x57, 0x61, 0x69, - 0x74, 0x43, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, - 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, - 0x34, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x57, 0x61, 0x69, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, + 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, + 0x36, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x77, 0x61, 0x69, - 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x35, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, - 0x6e, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x75, 0x65, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x69, 0x6e, - 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, - 0x75, 0x65, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x36, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x75, 0x65, 0x57, - 0x61, 0x69, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, - 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x70, 0x39, - 0x39, 0x18, 0x37, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x57, 0x61, 0x69, 0x74, 0x50, 0x39, 0x39, 0x12, 0x3c, 0x0a, 0x1b, + 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x37, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x49, 0x6e, + 0x6e, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x75, 0x65, 0x57, 0x61, 0x69, 0x74, 0x50, 0x39, 0x39, + 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, + 0x38, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x50, 0x61, + 0x67, 0x65, 0x73, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x3c, + 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, + 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x39, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x50, 0x61, 0x67, 0x65, + 0x73, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x64, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x38, 0x20, 0x01, 0x28, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x50, 0x61, 0x67, 0x65, 0x73, 0x44, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x39, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x50, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x73, - 0x74, 0x69, 0x6e, 0x63, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, + 0x74, 0x69, 0x6e, 0x63, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x63, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, + 0x6e, 0x63, 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, 0x64, 0x62, 0x50, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x73, 0x74, 0x69, - 0x6e, 0x63, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, - 0x64, 0x62, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, - 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x49, 0x6e, - 0x6e, 0x6f, 0x64, 0x62, 0x50, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, - 0x74, 0x4d, 0x61, 0x78, 0x12, 0x3c, 0x0a, 0x1b, 0x6d, 0x5f, 0x69, 0x6e, 0x6e, 0x6f, 0x64, 0x62, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x5f, - 0x70, 0x39, 0x39, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x49, 0x6e, 0x6e, 0x6f, - 0x64, 0x62, 0x50, 0x61, 0x67, 0x65, 0x73, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x50, - 0x39, 0x39, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, - 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6e, 0x74, 0x12, - 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x53, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x12, - 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6d, - 0x69, 0x6e, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x18, - 0x40, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x4d, 0x61, 0x78, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x41, 0x20, 0x01, + 0x6e, 0x63, 0x74, 0x50, 0x39, 0x39, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x50, 0x39, 0x39, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, - 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x42, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x10, - 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x6d, - 0x18, 0x43, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, - 0x6e, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x44, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0d, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x27, - 0x0a, 0x10, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, - 0x61, 0x78, 0x18, 0x45, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x62, 0x79, 0x74, - 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x46, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0d, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x50, 0x39, 0x39, - 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x47, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x54, 0x6d, 0x70, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, - 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x48, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x53, - 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x49, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x54, - 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x10, 0x6d, - 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, - 0x4a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x4d, 0x61, 0x78, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, - 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x30, 0x0a, - 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, - 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, - 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, - 0x6d, 0x54, 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x53, 0x75, - 0x6d, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x02, + 0x43, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x0f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x53, 0x75, 0x6d, + 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x69, 0x6e, 0x12, 0x2b, 0x0a, + 0x12, 0x6d, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, + 0x6d, 0x61, 0x78, 0x18, 0x40, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x61, 0x78, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x70, 0x39, 0x39, + 0x18, 0x41, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x50, 0x39, 0x39, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x42, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0d, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x43, 0x6e, 0x74, + 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, + 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x43, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x44, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x4d, + 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, + 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x45, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x27, 0x0a, 0x10, 0x6d, + 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x39, 0x39, 0x18, + 0x46, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x65, 0x6e, + 0x74, 0x50, 0x39, 0x39, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x47, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, + 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x27, 0x0a, + 0x10, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x73, 0x75, + 0x6d, 0x18, 0x48, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x49, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0d, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x12, + 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, + 0x6d, 0x61, 0x78, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x54, 0x6d, 0x70, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x74, 0x6d, + 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x4b, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x39, + 0x39, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, - 0x4d, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, 0x69, 0x73, - 0x6b, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x4f, 0x20, 0x01, + 0x43, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, 0x69, 0x73, + 0x6b, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, - 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x50, + 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x64, + 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, - 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, - 0x18, 0x51, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, - 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x73, - 0x75, 0x6d, 0x18, 0x52, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x30, 0x0a, 0x15, 0x6d, + 0x62, 0x6c, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, + 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, + 0x18, 0x4f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x44, 0x69, 0x73, 0x6b, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, + 0x6d, 0x70, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x70, + 0x39, 0x39, 0x18, 0x50, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x44, 0x69, + 0x73, 0x6b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, - 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x53, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x4d, 0x69, 0x6e, 0x12, 0x30, 0x0a, + 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x51, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x54, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, - 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x4d, 0x61, 0x78, 0x12, + 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x52, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, + 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x55, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, - 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x50, 0x39, - 0x39, 0x12, 0x1f, 0x0a, 0x0c, 0x6d, 0x5f, 0x71, 0x63, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x63, 0x6e, - 0x74, 0x18, 0x56, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x51, 0x63, 0x48, 0x69, 0x74, 0x43, - 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0c, 0x6d, 0x5f, 0x71, 0x63, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x73, - 0x75, 0x6d, 0x18, 0x57, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x51, 0x63, 0x48, 0x69, 0x74, - 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, - 0x61, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x58, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, - 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, - 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x59, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x75, - 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, - 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x75, 0x6c, - 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x66, 0x75, - 0x6c, 0x6c, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x5b, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x75, 0x6c, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x75, 0x6d, 0x12, - 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, - 0x6e, 0x74, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0c, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x33, 0x0a, - 0x17, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, - 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, - 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x43, - 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x5f, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x6e, - 0x44, 0x69, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x60, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0c, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x24, 0x0a, - 0x0e, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, - 0x61, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, - 0x53, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, - 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x62, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x6e, - 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x75, - 0x6d, 0x18, 0x63, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x6f, - 0x72, 0x74, 0x4f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x12, 0x3d, 0x0a, 0x1c, 0x6d, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x64, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x17, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x1c, 0x6d, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x65, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x17, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x73, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, - 0x66, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x53, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6e, 0x74, 0x18, - 0x68, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x18, 0x6d, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x69, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x53, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, - 0x53, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x10, - 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, - 0x18, 0x6b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, - 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, - 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, - 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, - 0x6d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x6f, 0x77, 0x73, - 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x63, - 0x61, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x53, - 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, - 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x6f, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x53, 0x75, - 0x6d, 0x12, 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x6e, 0x6f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, - 0x75, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x70, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, - 0x6d, 0x4e, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x73, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, - 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x6e, 0x6f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x73, - 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x71, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4e, - 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x73, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x35, 0x0a, - 0x18, 0x6d, 0x5f, 0x6e, 0x6f, 0x5f, 0x67, 0x6f, 0x6f, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x72, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x13, 0x6d, 0x4e, 0x6f, 0x47, 0x6f, 0x6f, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x73, 0x65, - 0x64, 0x43, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x18, 0x6d, 0x5f, 0x6e, 0x6f, 0x5f, 0x67, 0x6f, 0x6f, - 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, - 0x18, 0x73, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x4e, 0x6f, 0x47, 0x6f, 0x6f, 0x64, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x55, 0x73, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x1a, 0xd4, 0x05, 0x0a, 0x07, - 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, 0x6f, 0x63, - 0x73, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x01, + 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x53, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, + 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x4d, 0x69, + 0x6e, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x54, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, + 0x4d, 0x61, 0x78, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x73, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x55, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x11, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x73, 0x50, 0x39, 0x39, 0x12, 0x1f, 0x0a, 0x0c, 0x6d, 0x5f, 0x71, 0x63, 0x5f, 0x68, 0x69, + 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x56, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x51, 0x63, + 0x48, 0x69, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0c, 0x6d, 0x5f, 0x71, 0x63, 0x5f, 0x68, + 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x57, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x51, + 0x63, 0x48, 0x69, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x66, 0x75, 0x6c, + 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x58, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0c, 0x6d, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x25, + 0x0a, 0x0f, 0x6d, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x75, + 0x6d, 0x18, 0x59, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x63, + 0x61, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, + 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, + 0x6d, 0x46, 0x75, 0x6c, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, + 0x6d, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, + 0x5b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x75, 0x6c, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, + 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x54, + 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, + 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x5d, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, + 0x6d, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x5e, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x12, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x6e, 0x44, + 0x69, 0x73, 0x6b, 0x43, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x17, 0x6d, 0x5f, 0x74, 0x6d, 0x70, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x75, + 0x6d, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x54, 0x6d, 0x70, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x4f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x0e, 0x6d, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x60, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x43, 0x6e, + 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, + 0x73, 0x75, 0x6d, 0x18, 0x61, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x63, 0x6e, + 0x74, 0x18, 0x62, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x6f, + 0x72, 0x74, 0x4f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x43, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x16, 0x6d, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x73, + 0x6b, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x63, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x6e, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x12, + 0x3d, 0x0a, 0x1c, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, + 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, + 0x64, 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x46, 0x75, + 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x3d, + 0x0a, 0x1c, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x65, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x17, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x46, 0x75, 0x6c, + 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x2b, 0x0a, + 0x12, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x63, 0x6e, 0x74, 0x18, 0x66, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, + 0x18, 0x67, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, + 0x63, 0x6e, 0x74, 0x18, 0x68, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6e, 0x74, 0x12, + 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x69, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x14, 0x6d, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x73, 0x6f, 0x72, + 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x6a, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0d, 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6e, 0x74, + 0x12, 0x27, 0x0a, 0x10, 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x53, 0x6f, 0x72, + 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x73, + 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x6c, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x43, 0x6e, 0x74, + 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, + 0x73, 0x75, 0x6d, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x53, 0x6f, 0x72, 0x74, + 0x52, 0x6f, 0x77, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x73, 0x6f, 0x72, + 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0c, 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x25, + 0x0a, 0x0f, 0x6d, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x75, + 0x6d, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x53, 0x6f, 0x72, 0x74, 0x53, 0x63, + 0x61, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x6e, 0x6f, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x70, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x4e, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x73, 0x65, 0x64, + 0x43, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x6e, 0x6f, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x71, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0f, 0x6d, 0x4e, 0x6f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x73, 0x65, 0x64, 0x53, 0x75, + 0x6d, 0x12, 0x35, 0x0a, 0x18, 0x6d, 0x5f, 0x6e, 0x6f, 0x5f, 0x67, 0x6f, 0x6f, 0x64, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x72, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x4e, 0x6f, 0x47, 0x6f, 0x6f, 0x64, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x55, 0x73, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x18, 0x6d, 0x5f, 0x6e, 0x6f, + 0x5f, 0x67, 0x6f, 0x6f, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x73, 0x65, 0x64, + 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x73, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x4e, 0x6f, 0x47, + 0x6f, 0x6f, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x73, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x1a, + 0xd4, 0x05, 0x0a, 0x07, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x12, 0x2d, 0x0a, 0x13, 0x6d, + 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x63, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, + 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x75, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, + 0x6f, 0x63, 0x73, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, 0x6f, + 0x63, 0x73, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, 0x6f, 0x63, + 0x73, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, - 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, - 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, - 0x4d, 0x61, 0x78, 0x12, 0x2d, 0x0a, 0x13, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x10, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x50, - 0x39, 0x39, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x6e, 0x65, 0x64, 0x50, 0x39, 0x39, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x63, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x43, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x5f, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x73, + 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x53, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x15, + 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x69, 0x6e, 0x12, + 0x31, 0x0a, 0x15, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, + 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, + 0x61, 0x78, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x43, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x53, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6d, 0x69, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x15, 0x6d, - 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4d, 0x61, 0x78, 0x12, 0x31, - 0x0a, 0x15, 0x6d, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x50, 0x39, - 0x39, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, - 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, - 0x44, 0x6f, 0x63, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x2b, - 0x0a, 0x12, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, 0x63, - 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x2b, 0x0a, 0x12, 0x6d, - 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x69, - 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x53, 0x63, - 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x64, 0x6f, - 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, - 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, - 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, - 0x39, 0x39, 0x1a, 0xb2, 0x11, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, - 0x4c, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x43, 0x6e, 0x74, 0x12, - 0x1c, 0x0a, 0x0a, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x30, 0x0a, - 0x15, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x68, - 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x48, 0x69, 0x74, 0x43, 0x6e, 0x74, 0x12, - 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, - 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, - 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x48, 0x69, 0x74, 0x53, 0x75, - 0x6d, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, - 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x12, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, - 0x61, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, - 0x6b, 0x73, 0x52, 0x65, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x19, 0x6d, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x69, - 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x44, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, - 0x43, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x19, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, - 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, - 0x6c, 0x6b, 0x73, 0x44, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x38, 0x0a, - 0x19, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, - 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x15, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, - 0x74, 0x74, 0x65, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x19, 0x6d, 0x5f, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, - 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x53, 0x75, - 0x6d, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, - 0x73, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x10, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x48, 0x69, 0x74, 0x43, 0x6e, - 0x74, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, - 0x73, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x10, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x48, 0x69, 0x74, 0x53, 0x75, - 0x6d, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, - 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x11, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, 0x61, 0x64, - 0x43, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, - 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x11, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, - 0x61, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6e, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, - 0x6c, 0x6b, 0x73, 0x44, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x36, 0x0a, - 0x18, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x64, 0x69, - 0x72, 0x74, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x14, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x44, 0x69, 0x72, 0x74, 0x69, - 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x63, 0x6e, - 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, - 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x36, 0x0a, - 0x18, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, - 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x14, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, - 0x65, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, - 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, - 0x61, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, - 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, - 0x61, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, - 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x63, 0x6e, 0x74, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x42, 0x6c, 0x6b, - 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x17, 0x6d, - 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, - 0x65, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x54, - 0x65, 0x6d, 0x70, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x53, 0x75, - 0x6d, 0x12, 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, - 0x6d, 0x42, 0x6c, 0x6b, 0x52, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, - 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x42, - 0x6c, 0x6b, 0x52, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x2e, 0x0a, - 0x14, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x42, 0x6c, - 0x6b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x2e, 0x0a, - 0x14, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x42, 0x6c, - 0x6b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x2c, 0x0a, - 0x13, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x43, 0x70, 0x75, - 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x13, 0x6d, - 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, - 0x75, 0x6d, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x43, 0x70, 0x75, 0x55, 0x73, - 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x12, 0x6d, 0x5f, 0x63, - 0x70, 0x75, 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, - 0x1d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x43, 0x70, 0x75, 0x53, 0x79, 0x73, 0x54, 0x69, - 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x12, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, - 0x79, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x1e, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0e, 0x6d, 0x43, 0x70, 0x75, 0x53, 0x79, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, - 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6d, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x2b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x11, - 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x73, 0x75, - 0x6d, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x11, 0x6d, 0x5f, 0x70, 0x6c, 0x61, - 0x6e, 0x73, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x20, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x43, - 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, - 0x57, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x29, 0x0a, - 0x11, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x5f, 0x63, - 0x6e, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x57, 0x61, 0x6c, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0d, 0x6d, 0x5f, 0x77, 0x61, - 0x6c, 0x5f, 0x66, 0x70, 0x69, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x23, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x0a, 0x6d, 0x57, 0x61, 0x6c, 0x46, 0x70, 0x69, 0x53, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x0d, 0x6d, - 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x66, 0x70, 0x69, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x24, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0a, 0x6d, 0x57, 0x61, 0x6c, 0x46, 0x70, 0x69, 0x43, 0x6e, 0x74, 0x12, 0x25, - 0x0a, 0x0f, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x75, - 0x6d, 0x18, 0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x57, 0x61, 0x6c, 0x42, 0x79, 0x74, - 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x62, - 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, - 0x6d, 0x57, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, - 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, - 0x27, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x50, - 0x6c, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, - 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x29, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x69, - 0x6e, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x50, 0x6c, 0x61, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x70, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, - 0x6f, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x70, - 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, - 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x69, 0x64, 0x18, 0x2e, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x30, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x3d, 0x0a, 0x0f, 0x68, 0x69, 0x73, 0x74, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x31, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0e, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x43, 0x0a, 0x0d, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x2a, 0x55, 0x0a, 0x0d, - 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1e, 0x0a, - 0x16, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, - 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x0f, 0x0a, - 0x07, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x13, - 0x0a, 0x0b, 0x46, 0x49, 0x4e, 0x47, 0x45, 0x52, 0x50, 0x52, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x1a, - 0x02, 0x08, 0x01, 0x2a, 0x5d, 0x0a, 0x0b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, - 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4c, 0x4f, 0x57, - 0x45, 0x53, 0x54, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x53, 0x54, 0x45, 0x53, 0x54, - 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x10, 0x04, 0x42, 0x73, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x42, - 0x0e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x22, 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, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x05, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0xca, 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x11, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x68, 0x50, 0x39, 0x39, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, + 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x43, + 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, + 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, + 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, + 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, + 0x63, 0x73, 0x53, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x12, + 0x6d, 0x5f, 0x64, 0x6f, 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x6d, + 0x61, 0x78, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x53, + 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x2b, 0x0a, 0x12, 0x6d, 0x5f, 0x64, + 0x6f, 0x63, 0x73, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x39, 0x39, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x44, 0x6f, 0x63, 0x73, 0x53, 0x63, 0x61, 0x6e, + 0x6e, 0x65, 0x64, 0x50, 0x39, 0x39, 0x1a, 0xb2, 0x11, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x53, 0x51, 0x4c, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, + 0x63, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x52, 0x6f, 0x77, 0x73, + 0x43, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x75, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x53, 0x75, + 0x6d, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, + 0x6b, 0x73, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x11, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x48, 0x69, 0x74, + 0x43, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, + 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x11, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x48, + 0x69, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, + 0x6b, 0x73, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x16, 0x6d, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, + 0x73, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x12, 0x6d, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x52, 0x65, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x38, 0x0a, + 0x19, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x64, + 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x15, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x44, 0x69, 0x72, + 0x74, 0x69, 0x65, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x19, 0x6d, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, + 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x44, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x53, 0x75, + 0x6d, 0x12, 0x38, 0x0a, 0x19, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, + 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, + 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x43, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x19, 0x6d, + 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, + 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, + 0x6d, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, + 0x65, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x48, + 0x69, 0x74, 0x43, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x48, + 0x69, 0x74, 0x53, 0x75, 0x6d, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, + 0x52, 0x65, 0x61, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x15, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x6d, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, + 0x6b, 0x73, 0x52, 0x65, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x69, 0x65, + 0x64, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x44, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x43, 0x6e, + 0x74, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, + 0x73, 0x5f, 0x64, 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x44, + 0x69, 0x72, 0x74, 0x69, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, + 0x6e, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x43, 0x6e, + 0x74, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6b, + 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x14, 0x6d, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x6c, 0x6b, 0x73, 0x57, + 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x74, + 0x65, 0x6d, 0x70, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6e, + 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x42, 0x6c, + 0x6b, 0x73, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x74, + 0x65, 0x6d, 0x70, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, + 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x42, 0x6c, + 0x6b, 0x73, 0x52, 0x65, 0x61, 0x64, 0x53, 0x75, 0x6d, 0x12, 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x74, + 0x65, 0x6d, 0x70, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, + 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6d, 0x54, 0x65, 0x6d, + 0x70, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x43, 0x6e, 0x74, 0x12, + 0x34, 0x0a, 0x17, 0x6d, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x62, 0x6c, 0x6b, 0x73, 0x5f, 0x77, + 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x13, 0x6d, 0x54, 0x65, 0x6d, 0x70, 0x42, 0x6c, 0x6b, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, + 0x65, 0x6e, 0x53, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x42, 0x6c, 0x6b, 0x52, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x43, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x18, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0f, 0x6d, 0x42, 0x6c, 0x6b, 0x52, 0x65, 0x61, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, + 0x6d, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x10, 0x6d, 0x42, 0x6c, 0x6b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, + 0x74, 0x12, 0x2e, 0x0a, 0x14, 0x6d, 0x5f, 0x62, 0x6c, 0x6b, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x10, 0x6d, 0x42, 0x6c, 0x6b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, + 0x6d, 0x12, 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, + 0x6d, 0x43, 0x70, 0x75, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, + 0x2c, 0x0a, 0x13, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x6d, 0x43, + 0x70, 0x75, 0x55, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x2a, 0x0a, + 0x12, 0x6d, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x63, 0x6e, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x43, 0x70, 0x75, 0x53, + 0x79, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x12, 0x6d, 0x5f, 0x63, + 0x70, 0x75, 0x5f, 0x73, 0x79, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x43, 0x70, 0x75, 0x53, 0x79, 0x73, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6d, 0x64, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x29, 0x0a, 0x11, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x50, 0x6c, + 0x61, 0x6e, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x11, 0x6d, + 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x63, 0x6e, 0x74, + 0x18, 0x20, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x73, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x21, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0e, 0x6d, 0x57, 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x53, 0x75, + 0x6d, 0x12, 0x29, 0x0a, 0x11, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x6d, 0x57, + 0x61, 0x6c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x43, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0d, + 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x66, 0x70, 0x69, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0a, 0x6d, 0x57, 0x61, 0x6c, 0x46, 0x70, 0x69, 0x53, 0x75, 0x6d, 0x12, + 0x21, 0x0a, 0x0d, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x66, 0x70, 0x69, 0x5f, 0x63, 0x6e, 0x74, + 0x18, 0x24, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x6d, 0x57, 0x61, 0x6c, 0x46, 0x70, 0x69, 0x43, + 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x77, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x18, 0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x57, 0x61, + 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x77, + 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x26, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x57, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x43, 0x6e, 0x74, + 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x73, 0x75, 0x6d, 0x18, 0x27, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x50, 0x6c, 0x61, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6e, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0c, 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x25, + 0x0a, 0x0f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x69, + 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, + 0x6d, 0x50, 0x6c, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x6f, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x18, 0x2c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x74, 0x6f, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x12, 0x1b, 0x0a, + 0x09, 0x74, 0x6f, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x74, 0x6f, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x2d, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x69, 0x64, 0x18, + 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x69, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x30, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x3d, 0x0a, 0x0f, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0e, 0x68, 0x69, 0x73, + 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x43, 0x0a, 0x0d, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, + 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, + 0x2a, 0x55, 0x0a, 0x0d, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x12, 0x1e, 0x0a, 0x16, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, + 0x01, 0x12, 0x0f, 0x0a, 0x07, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x1a, 0x02, + 0x08, 0x01, 0x12, 0x13, 0x0a, 0x0b, 0x46, 0x49, 0x4e, 0x47, 0x45, 0x52, 0x50, 0x52, 0x49, 0x4e, + 0x54, 0x10, 0x02, 0x1a, 0x02, 0x08, 0x01, 0x2a, 0x5d, 0x0a, 0x0b, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x58, 0x41, 0x4d, 0x50, 0x4c, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, + 0x53, 0x4c, 0x4f, 0x57, 0x45, 0x53, 0x54, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x53, + 0x54, 0x45, 0x53, 0x54, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x42, 0x73, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x42, 0x0e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x22, 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, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, + 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0xe2, + 0x02, 0x11, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -2818,7 +2836,7 @@ func file_agentpb_collector_proto_rawDescGZIP() []byte { var ( file_agentpb_collector_proto_enumTypes = make([]protoimpl.EnumInfo, 2) - file_agentpb_collector_proto_msgTypes = make([]protoimpl.MessageInfo, 7) + file_agentpb_collector_proto_msgTypes = make([]protoimpl.MessageInfo, 8) file_agentpb_collector_proto_goTypes = []interface{}{ (ExampleFormat)(0), // 0: agent.ExampleFormat (ExampleType)(0), // 1: agent.ExampleType @@ -2828,26 +2846,28 @@ var ( (*MetricsBucket_MySQL)(nil), // 5: agent.MetricsBucket.MySQL (*MetricsBucket_MongoDB)(nil), // 6: agent.MetricsBucket.MongoDB (*MetricsBucket_PostgreSQL)(nil), // 7: agent.MetricsBucket.PostgreSQL - nil, // 8: agent.MetricsBucket.Common.ErrorsEntry - (inventorypb.AgentType)(0), // 9: inventory.AgentType + nil, // 8: agent.MetricsBucket.Common.CommentsEntry + nil, // 9: agent.MetricsBucket.Common.ErrorsEntry + (inventorypb.AgentType)(0), // 10: inventory.AgentType } ) var file_agentpb_collector_proto_depIdxs = []int32{ - 4, // 0: agent.MetricsBucket.common:type_name -> agent.MetricsBucket.Common - 5, // 1: agent.MetricsBucket.mysql:type_name -> agent.MetricsBucket.MySQL - 6, // 2: agent.MetricsBucket.mongodb:type_name -> agent.MetricsBucket.MongoDB - 7, // 3: agent.MetricsBucket.postgresql:type_name -> agent.MetricsBucket.PostgreSQL - 9, // 4: agent.MetricsBucket.Common.agent_type:type_name -> inventory.AgentType - 0, // 5: agent.MetricsBucket.Common.example_format:type_name -> agent.ExampleFormat - 1, // 6: agent.MetricsBucket.Common.example_type:type_name -> agent.ExampleType - 8, // 7: agent.MetricsBucket.Common.errors:type_name -> agent.MetricsBucket.Common.ErrorsEntry - 3, // 8: agent.MetricsBucket.PostgreSQL.histogram_items:type_name -> agent.HistogramItem - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 4, // 0: agent.MetricsBucket.common:type_name -> agent.MetricsBucket.Common + 5, // 1: agent.MetricsBucket.mysql:type_name -> agent.MetricsBucket.MySQL + 6, // 2: agent.MetricsBucket.mongodb:type_name -> agent.MetricsBucket.MongoDB + 7, // 3: agent.MetricsBucket.postgresql:type_name -> agent.MetricsBucket.PostgreSQL + 8, // 4: agent.MetricsBucket.Common.comments:type_name -> agent.MetricsBucket.Common.CommentsEntry + 10, // 5: agent.MetricsBucket.Common.agent_type:type_name -> inventory.AgentType + 0, // 6: agent.MetricsBucket.Common.example_format:type_name -> agent.ExampleFormat + 1, // 7: agent.MetricsBucket.Common.example_type:type_name -> agent.ExampleType + 9, // 8: agent.MetricsBucket.Common.errors:type_name -> agent.MetricsBucket.Common.ErrorsEntry + 3, // 9: agent.MetricsBucket.PostgreSQL.histogram_items:type_name -> agent.HistogramItem + 10, // [10:10] is the sub-list for method output_type + 10, // [10:10] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_agentpb_collector_proto_init() } @@ -2935,7 +2955,7 @@ func file_agentpb_collector_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agentpb_collector_proto_rawDesc, NumEnums: 2, - NumMessages: 7, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/api/agentpb/collector.pb.validate.go b/api/agentpb/collector.pb.validate.go index 85c9229e7a..c7d33c5c44 100644 --- a/api/agentpb/collector.pb.validate.go +++ b/api/agentpb/collector.pb.validate.go @@ -387,6 +387,8 @@ func (m *MetricsBucket_Common) validate(all bool) error { // no validation rules for PlaceholdersCount + // no validation rules for Comments + // no validation rules for Fingerprint // no validation rules for Database diff --git a/api/agentpb/collector.proto b/api/agentpb/collector.proto index 77b2590595..49803abcbc 100644 --- a/api/agentpb/collector.proto +++ b/api/agentpb/collector.proto @@ -35,6 +35,8 @@ message MetricsBucket { string explain_fingerprint = 25; // ammount of variables in query. uint32 placeholders_count = 26; + // List of keys and values of comments. + map comments = 27; // digest_text - query signature. Query without values. string fingerprint = 2; // diff --git a/api/inventorypb/agents.pb.go b/api/inventorypb/agents.pb.go index 1655706949..82105ccb1f 100644 --- a/api/inventorypb/agents.pb.go +++ b/api/inventorypb/agents.pb.go @@ -1180,6 +1180,8 @@ type QANMySQLPerfSchemaAgent struct { TlsCert string `protobuf:"bytes,12,opt,name=tls_cert,json=tlsCert,proto3" json:"tls_cert,omitempty"` // Password for decrypting tls_cert. TlsKey string `protobuf:"bytes,13,opt,name=tls_key,json=tlsKey,proto3" json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,18,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `protobuf:"varint,16,opt,name=max_query_length,json=maxQueryLength,proto3" json:"max_query_length,omitempty"` // True if query examples are disabled. @@ -1296,6 +1298,13 @@ func (x *QANMySQLPerfSchemaAgent) GetTlsKey() string { return "" } +func (x *QANMySQLPerfSchemaAgent) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *QANMySQLPerfSchemaAgent) GetMaxQueryLength() int32 { if x != nil { return x.MaxQueryLength @@ -1364,6 +1373,8 @@ type QANMySQLSlowlogAgent struct { TlsCert string `protobuf:"bytes,13,opt,name=tls_cert,json=tlsCert,proto3" json:"tls_cert,omitempty"` // Password for decrypting tls_cert. TlsKey string `protobuf:"bytes,14,opt,name=tls_key,json=tlsKey,proto3" json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,18,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Limit query length in QAN (default: server-defined; -1: no limit) MaxQueryLength int32 `protobuf:"varint,17,opt,name=max_query_length,json=maxQueryLength,proto3" json:"max_query_length,omitempty"` // True if query examples are disabled. @@ -1482,6 +1493,13 @@ func (x *QANMySQLSlowlogAgent) GetTlsKey() string { return "" } +func (x *QANMySQLSlowlogAgent) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *QANMySQLSlowlogAgent) GetMaxQueryLength() int32 { if x != nil { return x.MaxQueryLength @@ -1695,6 +1713,8 @@ type QANPostgreSQLPgStatementsAgent struct { ServiceId string `protobuf:"bytes,4,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` // PostgreSQL username for getting pg stat statements data. Username string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,13,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `protobuf:"varint,12,opt,name=max_query_length,json=maxQueryLength,proto3" json:"max_query_length,omitempty"` // Use TLS for database connections. @@ -1778,6 +1798,13 @@ func (x *QANPostgreSQLPgStatementsAgent) GetUsername() string { return "" } +func (x *QANPostgreSQLPgStatementsAgent) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *QANPostgreSQLPgStatementsAgent) GetMaxQueryLength() int32 { if x != nil { return x.MaxQueryLength @@ -1847,6 +1874,8 @@ type QANPostgreSQLPgStatMonitorAgent struct { Tls bool `protobuf:"varint,6,opt,name=tls,proto3" json:"tls,omitempty"` // Skip TLS certificate and hostname validation. TlsSkipVerify bool `protobuf:"varint,7,opt,name=tls_skip_verify,json=tlsSkipVerify,proto3" json:"tls_skip_verify,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,14,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `protobuf:"varint,13,opt,name=max_query_length,json=maxQueryLength,proto3" json:"max_query_length,omitempty"` // True if query examples are disabled. @@ -1942,6 +1971,13 @@ func (x *QANPostgreSQLPgStatMonitorAgent) GetTlsSkipVerify() bool { return false } +func (x *QANPostgreSQLPgStatMonitorAgent) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *QANPostgreSQLPgStatMonitorAgent) GetMaxQueryLength() int32 { if x != nil { return x.MaxQueryLength @@ -4875,6 +4911,8 @@ type AddQANMySQLPerfSchemaAgentRequest struct { CustomLabels map[string]string `protobuf:"bytes,8,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Skip connection check. SkipConnectionCheck bool `protobuf:"varint,9,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,15,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Log level for exporter. LogLevel LogLevel `protobuf:"varint,13,opt,name=log_level,json=logLevel,proto3,enum=inventory.LogLevel" json:"log_level,omitempty"` } @@ -5002,6 +5040,13 @@ func (x *AddQANMySQLPerfSchemaAgentRequest) GetSkipConnectionCheck() bool { return false } +func (x *AddQANMySQLPerfSchemaAgentRequest) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *AddQANMySQLPerfSchemaAgentRequest) GetLogLevel() LogLevel { if x != nil { return x.LogLevel @@ -5192,6 +5237,8 @@ type AddQANMySQLSlowlogAgentRequest struct { CustomLabels map[string]string `protobuf:"bytes,9,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Skip connection check. SkipConnectionCheck bool `protobuf:"varint,10,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,16,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Log level for exporter. LogLevel LogLevel `protobuf:"varint,14,opt,name=log_level,json=logLevel,proto3,enum=inventory.LogLevel" json:"log_level,omitempty"` } @@ -5326,6 +5373,13 @@ func (x *AddQANMySQLSlowlogAgentRequest) GetSkipConnectionCheck() bool { return false } +func (x *AddQANMySQLSlowlogAgentRequest) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *AddQANMySQLSlowlogAgentRequest) GetLogLevel() LogLevel { if x != nil { return x.LogLevel @@ -5828,6 +5882,8 @@ type AddQANPostgreSQLPgStatementsAgentRequest struct { CustomLabels map[string]string `protobuf:"bytes,7,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Skip connection check. SkipConnectionCheck bool `protobuf:"varint,8,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,14,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `protobuf:"varint,13,opt,name=max_query_length,json=maxQueryLength,proto3" json:"max_query_length,omitempty"` // TLS CA certificate. @@ -5928,6 +5984,13 @@ func (x *AddQANPostgreSQLPgStatementsAgentRequest) GetSkipConnectionCheck() bool return false } +func (x *AddQANPostgreSQLPgStatementsAgentRequest) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *AddQANPostgreSQLPgStatementsAgentRequest) GetMaxQueryLength() int32 { if x != nil { return x.MaxQueryLength @@ -6137,6 +6200,8 @@ type AddQANPostgreSQLPgStatMonitorAgentRequest struct { CustomLabels map[string]string `protobuf:"bytes,8,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Skip connection check. SkipConnectionCheck bool `protobuf:"varint,9,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,15,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // TLS CA certificate. TlsCa string `protobuf:"bytes,10,opt,name=tls_ca,json=tlsCa,proto3" json:"tls_ca,omitempty"` // TLS Certifcate. @@ -6249,6 +6314,13 @@ func (x *AddQANPostgreSQLPgStatMonitorAgentRequest) GetSkipConnectionCheck() boo return false } +func (x *AddQANPostgreSQLPgStatMonitorAgentRequest) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *AddQANPostgreSQLPgStatMonitorAgentRequest) GetTlsCa() string { if x != nil { return x.TlsCa @@ -7625,7 +7697,7 @@ var file_inventorypb_agents_proto_rawDesc = []byte{ 0x74, 0x6f, 0x6d, 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, 0xbe, 0x05, 0x0a, 0x17, 0x51, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf8, 0x05, 0x0a, 0x17, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, @@ -7645,79 +7717,163 @@ var file_inventorypb_agents_proto_rawDesc = []byte{ 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, - 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x0d, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, + 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xa5, 0x06, 0x0a, 0x14, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, + 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, + 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, + 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, 0x0a, 0x06, + 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, + 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, + 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, + 0x69, 0x6e, 0x67, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, + 0x67, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, + 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x46, 0x69, + 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, + 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, + 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, + 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xbb, 0x04, + 0x0a, 0x17, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, + 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, - 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xeb, 0x05, 0x0a, 0x14, - 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, - 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, - 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, - 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, - 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x31, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, - 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, - 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, - 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 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, 0xbb, 0x04, 0x0a, 0x17, 0x51, 0x41, - 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x05, 0x0a, 0x1e, + 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, + 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x10, + 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x12, 0x60, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, + 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, + 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, + 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xbd, 0x05, 0x0a, 0x1f, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, @@ -7731,698 +7887,689 @@ var file_inventorypb_agents_proto_rawDesc = []byte{ 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, - 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x59, 0x0a, - 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, + 0x69, 0x66, 0x79, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, + 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x61, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, + 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, + 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, + 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x88, 0x05, 0x0a, 0x0b, 0x52, 0x44, 0x53, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, + 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x77, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x77, 0x73, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x0d, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x44, 0x53, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, - 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 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, 0xc9, 0x04, 0x0a, 0x1e, 0x51, 0x41, 0x4e, 0x50, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, - 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, - 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x12, 0x60, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, - 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, - 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x83, 0x05, 0x0a, 0x1f, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, - 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, - 0x36, 0x0a, 0x17, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x44, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x61, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, - 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x61, 0x73, + 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x62, 0x61, 0x73, 0x69, 0x63, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x3a, 0x0a, 0x19, 0x65, 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x17, 0x65, 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x70, + 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x70, 0x75, 0x73, 0x68, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, + 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, + 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xfa, 0x03, 0x0a, + 0x10, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0f, + 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x73, 0x4f, 0x6e, 0x4e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x52, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x75, + 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x88, 0x05, 0x0a, 0x0b, 0x52, 0x44, - 0x53, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x61, - 0x77, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x77, 0x73, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b, 0x65, - 0x79, 0x12, 0x4d, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x44, 0x53, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, - 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x14, 0x62, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x65, 0x6e, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x65, 0x6e, 0x68, 0x61, - 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x12, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x8a, 0x05, 0x0a, 0x15, 0x41, 0x7a, + 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, + 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x1e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x61, + 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x7a, + 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x19, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, + 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x12, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xfb, 0x02, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0x30, 0x0a, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x75, 0x73, 0x68, + 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x75, 0x73, + 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xfa, 0x03, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, - 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, - 0x75, 0x6e, 0x73, 0x4f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x52, 0x0a, - 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, - 0x72, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x12, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, - 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x8a, 0x05, 0x0a, 0x15, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, - 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x43, 0x0a, - 0x1e, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, - 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x30, 0x0a, - 0x14, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x70, 0x75, 0x73, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x45, 0x78, 0x65, 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x09, 0x6c, - 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, - 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xfb, - 0x02, 0x0a, 0x17, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x59, 0x0a, 0x0d, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x75, - 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xa2, 0x01, 0x0a, - 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x22, 0xba, 0x09, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x70, 0x6d, 0x6d, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x08, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x08, 0x76, 0x6d, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x07, 0x76, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, - 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, - 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, - 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x10, 0x6d, - 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, - 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x11, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, - 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, - 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x17, - 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x17, 0x71, 0x61, 0x6e, 0x5f, 0x6d, - 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, - 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x14, 0x71, 0x61, 0x6e, 0x4d, 0x79, - 0x73, 0x71, 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, - 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x6f, 0x6e, 0x67, - 0x6f, 0x64, 0x62, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x12, 0x74, 0x0a, 0x21, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, - 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x77, 0x0a, 0x22, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, - 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, - 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1f, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa2, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6d, + 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, + 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xba, 0x09, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x30, 0x0a, 0x09, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x08, 0x76, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0e, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x56, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x76, 0x6d, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x12, 0x3c, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, + 0x42, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, + 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, + 0x64, 0x62, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x6f, + 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, + 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x5f, + 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, + 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, + 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, + 0x56, 0x0a, 0x17, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x6c, 0x6f, + 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, + 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x14, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, + 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, + 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, + 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x74, 0x0a, 0x21, 0x71, 0x61, 0x6e, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, - 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, - 0x39, 0x0a, 0x0c, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, - 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x52, 0x44, 0x53, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x72, - 0x64, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, - 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x17, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x35, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xde, 0x09, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x70, 0x6d, - 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2e, - 0x0a, 0x07, 0x76, 0x6d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x4d, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, 0x6d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3e, - 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, - 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x44, - 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x6f, - 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, - 0x11, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, - 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x11, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x48, 0x00, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x61, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, - 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, - 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x58, 0x0a, 0x17, 0x71, 0x61, 0x6e, 0x5f, - 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, - 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x71, 0x61, - 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, - 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x17, 0x71, 0x61, - 0x6e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x76, 0x0a, 0x21, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, - 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x71, - 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x79, 0x0a, - 0x22, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, - 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, - 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1f, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0c, 0x72, 0x64, 0x73, 0x5f, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x44, 0x53, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x64, 0x73, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, - 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x12, 0x5a, 0x0a, 0x17, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, - 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, - 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x4f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, - 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x6a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6c, - 0x6f, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x1c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xdb, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x50, 0x4d, 0x4d, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0f, 0x72, 0x75, - 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x72, 0x75, - 0x6e, 0x73, 0x4f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x54, 0x0a, 0x0d, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, - 0x64, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x47, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x70, 0x6d, 0x6d, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x08, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xe2, 0x02, 0x0a, 0x16, 0x41, - 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x77, + 0x0a, 0x22, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, + 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1f, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0c, 0x72, 0x64, 0x73, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x44, 0x53, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x72, 0x64, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x17, + 0x61, 0x7a, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, + 0x15, 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x58, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, - 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, - 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x09, - 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, - 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, - 0x57, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, - 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x7b, 0x0a, 0x19, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xde, 0x09, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x32, 0x0a, 0x09, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6d, + 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x07, 0x76, 0x6d, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x76, + 0x6d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, + 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, + 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x79, + 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x10, + 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, + 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, + 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x12, 0x4a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, + 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x70, 0x72, 0x6f, + 0x78, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x61, 0x0a, + 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, + 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, + 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x12, 0x58, 0x0a, 0x17, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x6c, + 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, + 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6c, + 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x1a, 0x71, 0x61, + 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x6f, + 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x76, 0x0a, + 0x21, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, + 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, + 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x79, 0x0a, 0x22, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, + 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, + 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x1f, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, + 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x12, 0x3b, 0x0a, 0x0c, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x52, 0x44, 0x53, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x0b, 0x72, 0x64, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, + 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x17, 0x61, 0x7a, 0x75, + 0x72, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x15, + 0x61, 0x7a, 0x75, 0x72, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x4f, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, 0x1a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, - 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x22, 0xf0, 0x05, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, - 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, - 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, - 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, - 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, - 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, 0x0a, 0x06, - 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, - 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, - 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x4d, - 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x80, 0x01, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, - 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7d, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, - 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, - 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, 0x71, - 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0xbc, 0x07, 0x0a, 0x19, 0x41, - 0x64, 0x64, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, - 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x2e, 0x0a, - 0x13, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x6c, 0x73, 0x43, - 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, - 0x21, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1d, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, - 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x5b, - 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, - 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x12, 0x39, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x12, 0x37, 0x0a, 0x17, - 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x11, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, + 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, + 0x6a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x3e, 0x0a, 0x1c, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, + 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x18, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x6f, + 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xdb, 0x01, 0x0a, 0x12, + 0x41, 0x64, 0x64, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x73, 0x4f, 0x6e, 0x4e, 0x6f, 0x64, 0x65, + 0x49, 0x64, 0x12, 0x54, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x6e, 0x76, 0x65, + 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x63, 0x0a, 0x1a, 0x41, 0x64, 0x64, - 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, - 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x6f, - 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6d, - 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x7e, - 0x0a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x47, 0x0a, 0x13, 0x41, 0x64, 0x64, + 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x30, 0x0a, 0x09, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x50, 0x4d, 0x4d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x22, 0xe2, 0x02, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, + 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, + 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x4e, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 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, 0x57, 0x0a, 0x17, 0x41, 0x64, 0x64, 0x4e, 0x6f, + 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, + 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, + 0x22, 0x7b, 0x0a, 0x19, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x5a, 0x0a, + 0x1a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x6e, 0x6f, 0x64, + 0x65, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0xf0, 0x05, 0x0a, 0x18, 0x41, 0x64, + 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, + 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, + 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, + 0x3f, 0x0a, 0x1c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x5a, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, + 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, + 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, + 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x80, 0x01, 0x0a, + 0x19, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6d, 0x79, + 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0e, + 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x1f, + 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x7d, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x66, - 0x0a, 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x62, + 0x0a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, + 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x22, 0xbc, 0x07, 0x0a, 0x19, 0x41, 0x64, 0x64, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, + 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, + 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, + 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x21, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x1d, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x5b, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x6f, 0x6e, + 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, + 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, + 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x18, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x63, 0x68, + 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x61, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, + 0x6e, 0x69, 0x73, 0x6d, 0x12, 0x37, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x25, 0x0a, + 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, + 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, + 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x63, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0xb3, 0x05, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x50, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, - 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x12, 0x5c, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, - 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x75, 0x73, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, - 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, - 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, - 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, - 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x67, 0x0a, 0x1b, - 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x7f, 0x0a, 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x7e, 0x0a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x1e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, - 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x22, 0xe8, 0x04, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, - 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, + 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x6f, + 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6d, + 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0xb3, + 0x05, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, + 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, + 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, + 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, + 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, + 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x5c, 0x0a, 0x0d, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, + 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, + 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, + 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, + 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x67, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x6f, 0x73, + 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x7f, 0x0a, + 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, + 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x6a, + 0x0a, 0x1e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x48, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0xe8, 0x04, 0x0a, 0x1a, 0x41, + 0x64, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, + 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x5c, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, + 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, + 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x67, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, + 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x72, + 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x7f, + 0x0a, 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, + 0x6a, 0x0a, 0x1e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, + 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, + 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x78, 0x79, + 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0xe2, 0x05, 0x0a, 0x21, + 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, @@ -8436,240 +8583,204 @@ var file_inventorypb_agents_proto_rawDesc = []byte{ 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, - 0x5c, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, + 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, + 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, + 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, + 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, + 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x0d, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, + 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, + 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, + 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, + 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x85, 0x01, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, + 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, + 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, + 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x24, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x25, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, + 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x71, + 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, + 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, + 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x8f, 0x06, 0x0a, + 0x1e, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, + 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, + 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, 0x0a, + 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, + 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, + 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x77, + 0x6c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x60, 0x0a, 0x0d, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, + 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, + 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, - 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, - 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x67, 0x0a, - 0x1b, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x7f, 0x0a, 0x1d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, - 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x1e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x22, 0xa8, 0x05, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, - 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, - 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, - 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, - 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, - 0x65, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, - 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, - 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x73, 0x12, 0x63, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, - 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x30, 0x0a, 0x09, 0x6c, - 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, + 0x6b, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x09, 0x6c, + 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x85, - 0x01, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, - 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, - 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, - 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x71, - 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x24, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x79, + 0x0a, 0x1f, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, + 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x56, 0x0a, 0x17, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, + 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, + 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x14, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6c, 0x6f, + 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x21, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, + 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, - 0x88, 0x01, 0x0a, 0x25, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, - 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xd5, 0x05, 0x0a, 0x1e, 0x41, - 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, - 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, - 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, - 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, - 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, - 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x74, - 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, - 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, - 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6c, - 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, - 0x67, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x60, 0x0a, 0x0d, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, - 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, - 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, - 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x79, 0x0a, 0x1f, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, + 0x7c, 0x0a, 0x22, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x17, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x14, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, - 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x83, 0x01, - 0x0a, 0x21, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, - 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x22, 0x7c, 0x0a, 0x22, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, - 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x17, 0x71, 0x61, 0x6e, - 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, - 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x14, 0x71, 0x61, 0x6e, - 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x22, 0xa3, 0x06, 0x0a, 0x21, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, - 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, - 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, - 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, - 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x2e, 0x0a, 0x13, - 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x6c, 0x73, 0x43, 0x65, - 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x21, - 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1d, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x28, 0x0a, - 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x63, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x51, 0x41, - 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, - 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, - 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x12, 0x39, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x12, 0x37, 0x0a, 0x17, 0x61, - 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x75, - 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, - 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 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, 0x85, 0x01, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x51, + 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xa3, 0x06, + 0x0a, 0x21, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, + 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, + 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, + 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x6c, 0x73, 0x5f, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x48, 0x0a, 0x21, 0x74, 0x6c, 0x73, 0x5f, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x1d, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x12, 0x63, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, + 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, + 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x39, 0x0a, 0x18, + 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, + 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, + 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x12, 0x37, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, + 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x85, 0x01, 0x0a, 0x22, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x4d, 0x6f, + 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, + 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x6f, + 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x86, 0x01, 0x0a, 0x24, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x25, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x70, 0x72, @@ -8678,125 +8789,115 @@ var file_inventorypb_agents_proto_rawDesc = []byte{ 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, - 0x86, 0x01, 0x0a, 0x24, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, - 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, - 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x25, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, - 0x62, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x71, 0x61, 0x6e, 0x4d, - 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x72, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x22, 0x80, 0x05, 0x0a, 0x28, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, + 0xba, 0x05, 0x0a, 0x28, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, + 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, + 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, + 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x6a, 0x0a, 0x0d, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x45, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, + 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, + 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, + 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x15, + 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, + 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xa1, 0x01, 0x0a, + 0x29, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, + 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x21, 0x71, 0x61, + 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, + 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, + 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x22, 0x8d, 0x01, 0x0a, 0x2b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, - 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, - 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x6a, - 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, - 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, - 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x28, - 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, - 0x63, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, - 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, - 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, - 0x4b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xa1, 0x01, 0x0a, 0x29, 0x41, 0x64, 0x64, 0x51, 0x41, - 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x21, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x2b, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, - 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, - 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x2c, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, - 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x21, 0x71, - 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, - 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, - 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x22, 0xb8, 0x05, 0x0a, 0x29, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, - 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, - 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, - 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x28, 0x0a, - 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x6b, 0x0a, - 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, - 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, - 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x15, + 0x12, 0x22, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x22, 0xa4, 0x01, 0x0a, 0x2c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x51, 0x41, 0x4e, 0x50, 0x6f, + 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x74, 0x0a, 0x21, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, + 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, + 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, + 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0xf2, 0x05, 0x0a, 0x29, 0x41, 0x64, 0x64, 0x51, + 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x6d, 0x6d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x26, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, + 0x02, 0x10, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, + 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, + 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, 0x0a, + 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, + 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, 0x64, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, + 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, diff --git a/api/inventorypb/agents.pb.validate.go b/api/inventorypb/agents.pb.validate.go index 53f4ef1faa..a451c1e5f6 100644 --- a/api/inventorypb/agents.pb.validate.go +++ b/api/inventorypb/agents.pb.validate.go @@ -929,6 +929,8 @@ func (m *QANMySQLPerfSchemaAgent) validate(all bool) error { // no validation rules for TlsKey + // no validation rules for DisableCommentsParsing + // no validation rules for MaxQueryLength // no validation rules for QueryExamplesDisabled @@ -1063,6 +1065,8 @@ func (m *QANMySQLSlowlogAgent) validate(all bool) error { // no validation rules for TlsKey + // no validation rules for DisableCommentsParsing + // no validation rules for MaxQueryLength // no validation rules for QueryExamplesDisabled @@ -1315,6 +1319,8 @@ func (m *QANPostgreSQLPgStatementsAgent) validate(all bool) error { // no validation rules for Username + // no validation rules for DisableCommentsParsing + // no validation rules for MaxQueryLength // no validation rules for Tls @@ -1446,6 +1452,8 @@ func (m *QANPostgreSQLPgStatMonitorAgent) validate(all bool) error { // no validation rules for TlsSkipVerify + // no validation rules for DisableCommentsParsing + // no validation rules for MaxQueryLength // no validation rules for QueryExamplesDisabled @@ -6892,6 +6900,8 @@ func (m *AddQANMySQLPerfSchemaAgentRequest) validate(all bool) error { // no validation rules for SkipConnectionCheck + // no validation rules for DisableCommentsParsing + // no validation rules for LogLevel if len(errors) > 0 { @@ -7466,6 +7476,8 @@ func (m *AddQANMySQLSlowlogAgentRequest) validate(all bool) error { // no validation rules for SkipConnectionCheck + // no validation rules for DisableCommentsParsing + // no validation rules for LogLevel if len(errors) > 0 { @@ -8593,6 +8605,8 @@ func (m *AddQANPostgreSQLPgStatementsAgentRequest) validate(all bool) error { // no validation rules for SkipConnectionCheck + // no validation rules for DisableCommentsParsing + // no validation rules for MaxQueryLength // no validation rules for TlsCa @@ -9173,6 +9187,8 @@ func (m *AddQANPostgreSQLPgStatMonitorAgentRequest) validate(all bool) error { // no validation rules for SkipConnectionCheck + // no validation rules for DisableCommentsParsing + // no validation rules for TlsCa // no validation rules for TlsCert diff --git a/api/inventorypb/agents.proto b/api/inventorypb/agents.proto index 134a50c964..683ee9e1de 100644 --- a/api/inventorypb/agents.proto +++ b/api/inventorypb/agents.proto @@ -277,6 +277,8 @@ message QANMySQLPerfSchemaAgent { string tls_cert = 12; // Password for decrypting tls_cert. string tls_key = 13; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 18; // Limit query length in QAN (default: server-defined; -1: no limit). int32 max_query_length = 16; // True if query examples are disabled. @@ -317,6 +319,8 @@ message QANMySQLSlowlogAgent { string tls_cert = 13; // Password for decrypting tls_cert. string tls_key = 14; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 18; // Limit query length in QAN (default: server-defined; -1: no limit) int32 max_query_length = 17; // True if query examples are disabled. @@ -384,6 +388,8 @@ message QANPostgreSQLPgStatementsAgent { string service_id = 4; // PostgreSQL username for getting pg stat statements data. string username = 5; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 13; // Limit query length in QAN (default: server-defined; -1: no limit). int32 max_query_length = 12; // Use TLS for database connections. @@ -420,6 +426,8 @@ message QANPostgreSQLPgStatMonitorAgent { bool tls = 6; // Skip TLS certificate and hostname validation. bool tls_skip_verify = 7; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 14; // Limit query length in QAN (default: server-defined; -1: no limit). int32 max_query_length = 13; // True if query examples are disabled. @@ -905,6 +913,8 @@ message AddQANMySQLPerfSchemaAgentRequest { map custom_labels = 8; // Skip connection check. bool skip_connection_check = 9; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 15; // Log level for exporter. LogLevel log_level = 13; } @@ -954,6 +964,8 @@ message AddQANMySQLSlowlogAgentRequest { map custom_labels = 9; // Skip connection check. bool skip_connection_check = 10; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 16; // Log level for exporter. LogLevel log_level = 14; } @@ -1040,6 +1052,8 @@ message AddQANPostgreSQLPgStatementsAgentRequest { map custom_labels = 7; // Skip connection check. bool skip_connection_check = 8; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 14; // Limit query length in QAN (default: server-defined; -1: no limit). int32 max_query_length = 13; // TLS CA certificate. @@ -1088,6 +1102,8 @@ message AddQANPostgreSQLPgStatMonitorAgentRequest { map custom_labels = 8; // Skip connection check. bool skip_connection_check = 9; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 15; // TLS CA certificate. string tls_ca = 10; // TLS Certifcate. diff --git a/api/inventorypb/json/client/agents/add_qan_my_sql_perf_schema_agent_responses.go b/api/inventorypb/json/client/agents/add_qan_my_sql_perf_schema_agent_responses.go index 24d2f077c3..616f0634cc 100644 --- a/api/inventorypb/json/client/agents/add_qan_my_sql_perf_schema_agent_responses.go +++ b/api/inventorypb/json/client/agents/add_qan_my_sql_perf_schema_agent_responses.go @@ -164,6 +164,9 @@ type AddQANMySQLPerfSchemaAgentBody struct { // Skip connection check. SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Log level for exporters // Enum: [auto fatal error warn info debug] LogLevel *string `json:"log_level,omitempty"` @@ -525,6 +528,9 @@ type AddQANMySQLPerfSchemaAgentOKBodyQANMysqlPerfschemaAgent struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/add_qan_my_sql_slowlog_agent_responses.go b/api/inventorypb/json/client/agents/add_qan_my_sql_slowlog_agent_responses.go index 149ac0af4f..fa9cbc2800 100644 --- a/api/inventorypb/json/client/agents/add_qan_my_sql_slowlog_agent_responses.go +++ b/api/inventorypb/json/client/agents/add_qan_my_sql_slowlog_agent_responses.go @@ -168,6 +168,9 @@ type AddQANMySQLSlowlogAgentBody struct { // Skip connection check. SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Log level for exporters // Enum: [auto fatal error warn info debug] LogLevel *string `json:"log_level,omitempty"` @@ -529,6 +532,9 @@ type AddQANMySQLSlowlogAgentOKBodyQANMysqlSlowlogAgent struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit) MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_stat_monitor_agent_responses.go b/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_stat_monitor_agent_responses.go index 21347f98bb..8ccbf4e307 100644 --- a/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_stat_monitor_agent_responses.go +++ b/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_stat_monitor_agent_responses.go @@ -155,6 +155,9 @@ type AddQANPostgreSQLPgStatMonitorAgentBody struct { // Skip connection check. SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // TLS CA certificate. TLSCa string `json:"tls_ca,omitempty"` @@ -516,6 +519,9 @@ type AddQANPostgreSQLPgStatMonitorAgentOKBodyQANPostgresqlPgstatmonitorAgent str // Skip TLS certificate and hostname validation. TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_statements_agent_responses.go b/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_statements_agent_responses.go index 1becf32d48..6de82d98fe 100644 --- a/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_statements_agent_responses.go +++ b/api/inventorypb/json/client/agents/add_qan_postgre_sql_pg_statements_agent_responses.go @@ -149,6 +149,9 @@ type AddQANPostgreSQLPgStatementsAgentBody struct { // Skip connection check. SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -507,6 +510,9 @@ type AddQANPostgreSQLPgStatementsAgentOKBodyQANPostgresqlPgstatementsAgent struc // PostgreSQL username for getting pg stat statements data. Username string `json:"username,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/change_qan_my_sql_perf_schema_agent_responses.go b/api/inventorypb/json/client/agents/change_qan_my_sql_perf_schema_agent_responses.go index 7b9db78afd..f4d4b364d0 100644 --- a/api/inventorypb/json/client/agents/change_qan_my_sql_perf_schema_agent_responses.go +++ b/api/inventorypb/json/client/agents/change_qan_my_sql_perf_schema_agent_responses.go @@ -477,6 +477,9 @@ type ChangeQANMySQLPerfSchemaAgentOKBodyQANMysqlPerfschemaAgent struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/change_qan_my_sql_slowlog_agent_responses.go b/api/inventorypb/json/client/agents/change_qan_my_sql_slowlog_agent_responses.go index 8502354c73..8f33720634 100644 --- a/api/inventorypb/json/client/agents/change_qan_my_sql_slowlog_agent_responses.go +++ b/api/inventorypb/json/client/agents/change_qan_my_sql_slowlog_agent_responses.go @@ -477,6 +477,9 @@ type ChangeQANMySQLSlowlogAgentOKBodyQANMysqlSlowlogAgent struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit) MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_stat_monitor_agent_responses.go b/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_stat_monitor_agent_responses.go index 80b54e5e10..5c9f510ed7 100644 --- a/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_stat_monitor_agent_responses.go +++ b/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_stat_monitor_agent_responses.go @@ -468,6 +468,9 @@ type ChangeQANPostgreSQLPgStatMonitorAgentOKBodyQANPostgresqlPgstatmonitorAgent // Skip TLS certificate and hostname validation. TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_statements_agent_responses.go b/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_statements_agent_responses.go index 73acb90f3b..23398c5633 100644 --- a/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_statements_agent_responses.go +++ b/api/inventorypb/json/client/agents/change_qan_postgre_sql_pg_statements_agent_responses.go @@ -462,6 +462,9 @@ type ChangeQANPostgreSQLPgStatementsAgentOKBodyQANPostgresqlPgstatementsAgent st // PostgreSQL username for getting pg stat statements data. Username string `json:"username,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/get_agent_responses.go b/api/inventorypb/json/client/agents/get_agent_responses.go index d3c101c5d3..95d06c09e3 100644 --- a/api/inventorypb/json/client/agents/get_agent_responses.go +++ b/api/inventorypb/json/client/agents/get_agent_responses.go @@ -2651,6 +2651,9 @@ type GetAgentOKBodyQANMysqlPerfschemaAgent struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -2868,6 +2871,9 @@ type GetAgentOKBodyQANMysqlSlowlogAgent struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit) MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -3073,6 +3079,9 @@ type GetAgentOKBodyQANPostgresqlPgstatementsAgent struct { // PostgreSQL username for getting pg stat statements data. Username string `json:"username,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -3284,6 +3293,9 @@ type GetAgentOKBodyQANPostgresqlPgstatmonitorAgent struct { // Skip TLS certificate and hostname validation. TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/client/agents/list_agents_responses.go b/api/inventorypb/json/client/agents/list_agents_responses.go index a8775a3cd3..763fecc753 100644 --- a/api/inventorypb/json/client/agents/list_agents_responses.go +++ b/api/inventorypb/json/client/agents/list_agents_responses.go @@ -2892,6 +2892,9 @@ type ListAgentsOKBodyQANMysqlPerfschemaAgentItems0 struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -3109,6 +3112,9 @@ type ListAgentsOKBodyQANMysqlSlowlogAgentItems0 struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit) MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -3314,6 +3320,9 @@ type ListAgentsOKBodyQANPostgresqlPgstatementsAgentItems0 struct { // PostgreSQL username for getting pg stat statements data. Username string `json:"username,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -3525,6 +3534,9 @@ type ListAgentsOKBodyQANPostgresqlPgstatmonitorAgentItems0 struct { // Skip TLS certificate and hostname validation. TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/inventorypb/json/inventorypb.json b/api/inventorypb/json/inventorypb.json index 89cf71e3d0..0ff9724ba6 100644 --- a/api/inventorypb/json/inventorypb.json +++ b/api/inventorypb/json/inventorypb.json @@ -2070,6 +2070,11 @@ }, "x-order": 11 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 13 + }, "disable_query_examples": { "description": "Disable query examples.", "type": "boolean", @@ -2087,7 +2092,7 @@ "info", "debug" ], - "x-order": 13 + "x-order": 14 }, "max_query_length": { "type": "integer", @@ -2170,7 +2175,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -2189,13 +2199,13 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -2205,12 +2215,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -2230,7 +2240,7 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "tls": { "description": "Use TLS for database connections.", @@ -2326,6 +2336,11 @@ }, "x-order": 12 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 14 + }, "disable_query_examples": { "description": "Disable query examples.", "type": "boolean", @@ -2343,7 +2358,7 @@ "info", "debug" ], - "x-order": 14 + "x-order": 15 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", @@ -2432,7 +2447,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -2451,19 +2471,19 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -2473,12 +2493,12 @@ "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -2498,7 +2518,7 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "tls": { "description": "Use TLS for database connections.", @@ -2594,6 +2614,11 @@ }, "x-order": 8 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "disable_query_examples": { "description": "Disable query examples.", "type": "boolean", @@ -2611,7 +2636,7 @@ "info", "debug" ], - "x-order": 13 + "x-order": 14 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", @@ -2647,17 +2672,17 @@ "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 10 + "x-order": 11 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 11 + "x-order": 12 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 12 + "x-order": 13 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", @@ -2694,7 +2719,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -2713,13 +2743,13 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -2729,12 +2759,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "service_id": { "description": "Service identifier.", @@ -2754,7 +2784,7 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "tls": { "description": "Use TLS for database connections.", @@ -2835,6 +2865,11 @@ }, "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 8 + }, "log_level": { "type": "string", "title": "Log level for exporters", @@ -2847,13 +2882,13 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 8 + "x-order": 9 }, "password": { "description": "PostgreSQL password for getting pg stat statements data.", @@ -2883,17 +2918,17 @@ "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 9 + "x-order": 10 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 10 + "x-order": 11 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 11 + "x-order": 12 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", @@ -2930,7 +2965,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -2949,13 +2989,13 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -2965,7 +3005,7 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "service_id": { "description": "Service identifier.", @@ -2985,17 +3025,17 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "username": { "description": "PostgreSQL username for getting pg stat statements data.", @@ -4989,7 +5029,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -5008,13 +5053,13 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -5024,12 +5069,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -5049,7 +5094,7 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "tls": { "description": "Use TLS for database connections.", @@ -5206,7 +5251,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -5225,19 +5275,19 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -5247,12 +5297,12 @@ "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -5272,7 +5322,7 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "tls": { "description": "Use TLS for database connections.", @@ -5429,7 +5479,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -5448,13 +5503,13 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -5464,12 +5519,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "service_id": { "description": "Service identifier.", @@ -5489,7 +5544,7 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "tls": { "description": "Use TLS for database connections.", @@ -5631,7 +5686,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -5650,13 +5710,13 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -5666,7 +5726,7 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "service_id": { "description": "Service identifier.", @@ -5686,17 +5746,17 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "username": { "description": "PostgreSQL username for getting pg stat statements data.", @@ -6812,7 +6872,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -6831,13 +6896,13 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -6847,12 +6912,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -6872,7 +6937,7 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "tls": { "description": "Use TLS for database connections.", @@ -6922,7 +6987,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -6941,19 +7011,19 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -6963,12 +7033,12 @@ "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -6988,7 +7058,7 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "tls": { "description": "Use TLS for database connections.", @@ -7038,7 +7108,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -7057,13 +7132,13 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -7073,7 +7148,7 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "service_id": { "description": "Service identifier.", @@ -7093,17 +7168,17 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "username": { "description": "PostgreSQL username for getting pg stat statements data.", @@ -7128,7 +7203,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -7147,13 +7227,13 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -7163,12 +7243,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "service_id": { "description": "Service identifier.", @@ -7188,7 +7268,7 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "tls": { "description": "Use TLS for database connections.", @@ -8399,7 +8479,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -8418,13 +8503,13 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -8434,12 +8519,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -8459,7 +8544,7 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "tls": { "description": "Use TLS for database connections.", @@ -8512,7 +8597,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -8531,19 +8621,19 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -8553,12 +8643,12 @@ "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -8578,7 +8668,7 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "tls": { "description": "Use TLS for database connections.", @@ -8631,7 +8721,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -8650,13 +8745,13 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -8666,7 +8761,7 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "service_id": { "description": "Service identifier.", @@ -8686,17 +8781,17 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "username": { "description": "PostgreSQL username for getting pg stat statements data.", @@ -8724,7 +8819,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -8743,13 +8843,13 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -8759,12 +8859,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "service_id": { "description": "Service identifier.", @@ -8784,7 +8884,7 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "tls": { "description": "Use TLS for database connections.", diff --git a/api/managementpb/agent/agent.pb.go b/api/managementpb/agent/agent.pb.go index bd9abdc01b..daf6943c77 100644 --- a/api/managementpb/agent/agent.pb.go +++ b/api/managementpb/agent/agent.pb.go @@ -80,6 +80,8 @@ type UniversalAgent struct { PushMetrics bool `protobuf:"varint,24,opt,name=push_metrics,json=pushMetrics,proto3" json:"push_metrics,omitempty"` // True if query examples are disabled. QueryExamplesDisabled bool `protobuf:"varint,25,opt,name=query_examples_disabled,json=queryExamplesDisabled,proto3" json:"query_examples_disabled,omitempty"` + // True if query comments parsing is disabled. + CommentsParsingDisabled bool `protobuf:"varint,39,opt,name=comments_parsing_disabled,json=commentsParsingDisabled,proto3" json:"comments_parsing_disabled,omitempty"` // True if RDS basic metrics are disdabled. RdsBasicMetricsDisabled bool `protobuf:"varint,26,opt,name=rds_basic_metrics_disabled,json=rdsBasicMetricsDisabled,proto3" json:"rds_basic_metrics_disabled,omitempty"` // True if RDS enhanced metrics are disdabled. @@ -317,6 +319,13 @@ func (x *UniversalAgent) GetQueryExamplesDisabled() bool { return false } +func (x *UniversalAgent) GetCommentsParsingDisabled() bool { + if x != nil { + return x.CommentsParsingDisabled + } + return false +} + func (x *UniversalAgent) GetRdsBasicMetricsDisabled() bool { if x != nil { return x.RdsBasicMetricsDisabled @@ -854,7 +863,7 @@ var file_managementpb_agent_agent_proto_rawDesc = []byte{ 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, 0x8d, 0x15, 0x0a, 0x0e, 0x55, 0x6e, 0x69, 0x76, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc9, 0x15, 0x0a, 0x0e, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x15, 0x69, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, @@ -932,130 +941,134 @@ var file_managementpb_agent_agent_proto_rawDesc = []byte{ 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x64, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1a, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x72, 0x64, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x41, 0x0a, - 0x1d, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1b, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, - 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x25, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x73, 0x4f, - 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1f, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x4a, 0x0a, 0x22, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, - 0x6c, 0x73, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x24, 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, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0x65, 0x0a, 0x0c, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, - 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, - 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0e, 0x69, - 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x54, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, - 0x1a, 0xc9, 0x01, 0x0a, 0x0c, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, - 0x0a, 0x14, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x65, 0x74, 0x12, - 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0xbb, 0x03, 0x0a, - 0x0e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x3a, 0x0a, 0x1a, 0x69, 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x73, 0x54, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x12, 0x54, 0x0a, 0x28, 0x69, + 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, + 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x27, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, + 0x73, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x1a, + 0x72, 0x64, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x17, 0x72, 0x64, 0x73, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x1d, 0x72, 0x64, 0x73, + 0x5f, 0x65, 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x1a, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0f, + 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x73, 0x4f, 0x6e, 0x4e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x1e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x22, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, 0x73, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x21, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, + 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x22, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x24, 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, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0x65, 0x0a, 0x0c, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, + 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x74, 0x6c, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x69, 0x73, 0x54, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x1a, 0xc9, 0x01, 0x0a, + 0x0c, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, + 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x69, 0x73, + 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x1a, 0xbb, 0x03, 0x0a, 0x0e, 0x4d, 0x6f, 0x6e, + 0x67, 0x6f, 0x44, 0x42, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x69, 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x22, 0x69, - 0x73, 0x54, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, - 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x65, - 0x74, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x39, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x68, - 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x63, 0x68, 0x61, - 0x6e, 0x69, 0x73, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, - 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, - 0x69, 0x73, 0x6d, 0x12, 0x37, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x11, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x6c, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x6a, 0x0a, 0x11, 0x50, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x15, 0x0a, 0x06, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x73, 0x6c, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x65, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, - 0x74, 0x12, 0x23, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x73, 0x73, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x53, 0x73, 0x6c, - 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 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, 0x4a, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x67, 0x65, 0x6e, 0x74, 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, 0x17, 0x0a, 0x07, 0x6e, 0x6f, - 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, - 0x65, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x6c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, - 0xb3, 0x01, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0xa9, 0x01, 0x0a, 0x0a, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x31, - 0x12, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x22, 0x52, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, - 0x64, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x2f, 0x4c, 0x69, 0x73, 0x74, 0x42, 0xb0, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 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, - 0x70, 0x62, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x3b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x0d, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x19, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x16, 0x69, 0x73, 0x54, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x12, 0x54, 0x0a, 0x28, 0x69, 0x73, 0x5f, 0x74, 0x6c, + 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x22, 0x69, 0x73, 0x54, 0x6c, 0x73, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x46, 0x69, + 0x6c, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x53, 0x65, 0x74, 0x12, 0x15, 0x0a, + 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6c, 0x73, 0x43, 0x61, 0x12, 0x39, 0x0a, 0x18, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x63, 0x68, 0x61, 0x6e, 0x69, 0x73, 0x6d, 0x12, + 0x37, 0x0a, 0x17, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x6c, 0x6c, + 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x1a, 0x6a, 0x0a, 0x11, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x53, 0x51, 0x4c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, + 0x73, 0x6c, 0x5f, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x73, 0x6c, + 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x73, 0x6c, 0x43, 0x65, 0x72, 0x74, 0x12, 0x23, 0x0a, + 0x0e, 0x69, 0x73, 0x5f, 0x73, 0x73, 0x6c, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x53, 0x73, 0x6c, 0x4b, 0x65, 0x79, 0x53, + 0x65, 0x74, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x4a, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, + 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, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, + 0x4a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x6e, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x32, 0xb3, 0x01, 0x0a, 0x05, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0xa9, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x31, 0x12, 0x0b, 0x4c, 0x69, + 0x73, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x22, 0x52, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x6c, 0x69, + 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2f, 0x4c, 0x69, 0x73, + 0x74, 0x42, 0xb0, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 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, 0x70, 0x62, 0x2f, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x3b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x0d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x5c, + 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x19, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x5c, + 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/managementpb/agent/agent.pb.validate.go b/api/managementpb/agent/agent.pb.validate.go index 4edead30fc..9a136b93e7 100644 --- a/api/managementpb/agent/agent.pb.validate.go +++ b/api/managementpb/agent/agent.pb.validate.go @@ -240,6 +240,8 @@ func (m *UniversalAgent) validate(all bool) error { // no validation rules for QueryExamplesDisabled + // no validation rules for CommentsParsingDisabled + // no validation rules for RdsBasicMetricsDisabled // no validation rules for RdsEnhancedMetricsDisabled diff --git a/api/managementpb/agent/agent.proto b/api/managementpb/agent/agent.proto index 6a9ed9a487..87567a7ae8 100644 --- a/api/managementpb/agent/agent.proto +++ b/api/managementpb/agent/agent.proto @@ -110,6 +110,8 @@ message UniversalAgent { bool push_metrics = 24; // True if query examples are disabled. bool query_examples_disabled = 25; + // True if query comments parsing is disabled. + bool comments_parsing_disabled = 39; // True if RDS basic metrics are disdabled. bool rds_basic_metrics_disabled = 26; // True if RDS enhanced metrics are disdabled. diff --git a/api/managementpb/agent/json/agent.json b/api/managementpb/agent/json/agent.json index 571bb85d47..f4891a00d7 100644 --- a/api/managementpb/agent/json/agent.json +++ b/api/managementpb/agent/json/agent.json @@ -105,6 +105,11 @@ }, "x-order": 5 }, + "comments_parsing_disabled": { + "description": "True if query comments parsing is disabled.", + "type": "boolean", + "x-order": 25 + }, "created_at": { "description": "Creation timestamp.", "type": "string", @@ -145,7 +150,7 @@ "is_connected": { "description": "True if Agent is running and connected to pmm-managed.", "type": "boolean", - "x-order": 37 + "x-order": 38 }, "is_password_set": { "description": "True if password for connecting the agent to the database is set.", @@ -305,65 +310,65 @@ "rds_basic_metrics_disabled": { "description": "True if RDS basic metrics are disdabled.", "type": "boolean", - "x-order": 25 + "x-order": 26 }, "rds_enhanced_metrics_disabled": { "description": "True if RDS enhanced metrics are disdabled.", "type": "boolean", - "x-order": 26 + "x-order": 27 }, "runs_on_node_id": { "description": "Node identifier where this instance runs.", "type": "string", - "x-order": 27 + "x-order": 28 }, "service_id": { "description": "Service identifier.", "type": "string", - "x-order": 28 + "x-order": 29 }, "status": { "description": "Actual Agent status.", "type": "string", - "x-order": 29 + "x-order": 30 }, "table_count": { "description": "Last known table count.", "type": "integer", "format": "int32", - "x-order": 30 + "x-order": 31 }, "table_count_tablestats_group_limit": { "description": "Tablestats group collectors are disabled if there are more than that number of tables.\n0 means tablestats group collectors are always enabled (no limit).\nNegative value means tablestats group collectors are always disabled.", "type": "integer", "format": "int32", - "x-order": 31 + "x-order": 32 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 32 + "x-order": 33 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 33 + "x-order": 34 }, "updated_at": { "description": "Last update timestamp.", "type": "string", "format": "date-time", - "x-order": 35 + "x-order": 36 }, "username": { "description": "HTTP basic auth username for collecting metrics.", "type": "string", - "x-order": 34 + "x-order": 35 }, "version": { "description": "Agent version.", "type": "string", - "x-order": 36 + "x-order": 37 } } }, diff --git a/api/managementpb/agent/json/client/agent/list_agents_responses.go b/api/managementpb/agent/json/client/agent/list_agents_responses.go index a0b2abc3d1..6143803fa9 100644 --- a/api/managementpb/agent/json/client/agent/list_agents_responses.go +++ b/api/managementpb/agent/json/client/agent/list_agents_responses.go @@ -467,6 +467,9 @@ type ListAgentsOKBodyAgentsItems0 struct { // True if query examples are disabled. QueryExamplesDisabled bool `json:"query_examples_disabled,omitempty"` + // True if query comments parsing is disabled. + CommentsParsingDisabled bool `json:"comments_parsing_disabled,omitempty"` + // True if RDS basic metrics are disdabled. RDSBasicMetricsDisabled bool `json:"rds_basic_metrics_disabled,omitempty"` diff --git a/api/managementpb/json/client/my_sql/add_my_sql_responses.go b/api/managementpb/json/client/my_sql/add_my_sql_responses.go index c5414127cf..97d0ea9998 100644 --- a/api/managementpb/json/client/my_sql/add_my_sql_responses.go +++ b/api/managementpb/json/client/my_sql/add_my_sql_responses.go @@ -178,6 +178,9 @@ type AddMySQLBody struct { // Skip connection check. SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -1046,6 +1049,9 @@ type AddMySQLOKBodyQANMysqlPerfschema struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -1263,6 +1269,9 @@ type AddMySQLOKBodyQANMysqlSlowlog struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit) MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go b/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go index 2df4a540c8..ba2ec37478 100644 --- a/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go +++ b/api/managementpb/json/client/postgre_sql/add_postgre_sql_responses.go @@ -187,6 +187,9 @@ type AddPostgreSQLBody struct { // Skip connection check. SkipConnectionCheck bool `json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Use TLS for database connections. TLS bool `json:"tls,omitempty"` @@ -1002,6 +1005,9 @@ type AddPostgreSQLOKBodyQANPostgresqlPgstatementsAgent struct { // PostgreSQL username for getting pg stat statements data. Username string `json:"username,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -1213,6 +1219,9 @@ type AddPostgreSQLOKBodyQANPostgresqlPgstatmonitorAgent struct { // Skip TLS certificate and hostname validation. TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/managementpb/json/client/rds/add_rds_responses.go b/api/managementpb/json/client/rds/add_rds_responses.go index 8c430076fa..cb525e8b8c 100644 --- a/api/managementpb/json/client/rds/add_rds_responses.go +++ b/api/managementpb/json/client/rds/add_rds_responses.go @@ -1565,6 +1565,9 @@ type AddRDSOKBodyQANMysqlPerfschema struct { // Password for decrypting tls_cert. TLSKey string `json:"tls_key,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` @@ -1767,6 +1770,9 @@ type AddRDSOKBodyQANPostgresqlPgstatements struct { // PostgreSQL username for getting pg stat statements data. Username string `json:"username,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `json:"disable_comments_parsing,omitempty"` + // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `json:"max_query_length,omitempty"` diff --git a/api/managementpb/json/managementpb.json b/api/managementpb/json/managementpb.json index 768bf78bb7..63d67d39ee 100644 --- a/api/managementpb/json/managementpb.json +++ b/api/managementpb/json/managementpb.json @@ -2956,7 +2956,7 @@ "agent_password": { "description": "Custom password for exporter endpoint /metrics.", "type": "string", - "x-order": 28 + "x-order": 29 }, "cluster": { "description": "Cluster name.", @@ -2977,12 +2977,17 @@ "items": { "type": "string" }, - "x-order": 27 + "x-order": 28 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 17 }, "disable_query_examples": { "description": "Disable query examples.", "type": "boolean", - "x-order": 18 + "x-order": 19 }, "environment": { "description": "Environment name.", @@ -3001,19 +3006,19 @@ "info", "debug" ], - "x-order": 29 + "x-order": 30 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 17 + "x-order": 18 }, "max_slowlog_file_size": { "description": "If qan-mysql-slowlog-agent is added, slowlog file is rotated at this size if \u003e 0.\nIf zero, server's default value is used.\nUse negative value to disable rotation.", "type": "string", "format": "int64", - "x-order": 19 + "x-order": 20 }, "metrics_mode": { "description": "MetricsMode defines desired metrics mode for agent,\nit can be pull, push or auto mode chosen by server.", @@ -3024,7 +3029,7 @@ "PULL", "PUSH" ], - "x-order": 26 + "x-order": 27 }, "node_id": { "description": "Node identifier on which a service is been running.\nExactly one of these parameters should be present: node_id, node_name, add_node.", @@ -3086,32 +3091,32 @@ "description": "Tablestats group collectors will be disabled if there are more than that number of tables.\nIf zero, server's default value is used.\nUse negative value to disable them.", "type": "integer", "format": "int32", - "x-order": 25 + "x-order": 26 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 20 + "x-order": 21 }, "tls_ca": { "description": "Certificate Authority certificate chain.", "type": "string", - "x-order": 22 + "x-order": 23 }, "tls_cert": { "description": "Client certificate.", "type": "string", - "x-order": 23 + "x-order": 24 }, "tls_key": { "description": "Password for decrypting tls_cert.", "type": "string", - "x-order": 24 + "x-order": 25 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 21 + "x-order": 22 }, "username": { "description": "MySQL username for scraping metrics.", @@ -3272,7 +3277,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -3291,13 +3301,13 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -3307,12 +3317,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -3332,7 +3342,7 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "tls": { "description": "Use TLS for database connections.", @@ -3382,7 +3392,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -3401,19 +3416,19 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -3423,12 +3438,12 @@ "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -3448,7 +3463,7 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "tls": { "description": "Use TLS for database connections.", @@ -3994,7 +4009,7 @@ "agent_password": { "description": "Custom password for exporter endpoint /metrics.", "type": "string", - "x-order": 27 + "x-order": 28 }, "cluster": { "description": "Cluster name.", @@ -4020,7 +4035,12 @@ "items": { "type": "string" }, - "x-order": 23 + "x-order": 24 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 20 }, "disable_query_examples": { "description": "Disable query examples.", @@ -4044,7 +4064,7 @@ "info", "debug" ], - "x-order": 28 + "x-order": 29 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", @@ -4061,7 +4081,7 @@ "PULL", "PUSH" ], - "x-order": 22 + "x-order": 23 }, "node_id": { "description": "Node identifier on which a service is been running.\nExactly one of these parameters should be present: node_id, node_name, add_node.", @@ -4122,27 +4142,27 @@ "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 20 + "x-order": 21 }, "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 24 + "x-order": 25 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 25 + "x-order": 26 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 26 + "x-order": 27 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation. Uses sslmode=required instead of verify-full.", "type": "boolean", - "x-order": 21 + "x-order": 22 }, "username": { "description": "PostgreSQL username for scraping metrics.", @@ -4277,7 +4297,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -4296,13 +4321,13 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -4312,7 +4337,7 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "service_id": { "description": "Service identifier.", @@ -4332,17 +4357,17 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "username": { "description": "PostgreSQL username for getting pg stat statements data.", @@ -4367,7 +4392,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -4386,13 +4416,13 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -4402,12 +4432,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "service_id": { "description": "Service identifier.", @@ -4427,7 +4457,7 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "tls": { "description": "Use TLS for database connections.", @@ -5575,7 +5605,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -5594,13 +5629,13 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -5610,12 +5645,12 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "service_id": { "description": "Service identifier.", @@ -5635,7 +5670,7 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "tls": { "description": "Use TLS for database connections.", @@ -5685,7 +5720,12 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 + }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 }, "disabled": { "description": "Desired Agent status: enabled (false) or disabled (true).", @@ -5704,13 +5744,13 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "pmm_agent_id": { "description": "The pmm-agent identifier which runs this instance.", @@ -5720,7 +5760,7 @@ "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "service_id": { "description": "Service identifier.", @@ -5740,17 +5780,17 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "username": { "description": "PostgreSQL username for getting pg stat statements data.", diff --git a/api/managementpb/mysql.pb.go b/api/managementpb/mysql.pb.go index facce735cd..d579dc8998 100644 --- a/api/managementpb/mysql.pb.go +++ b/api/managementpb/mysql.pb.go @@ -71,6 +71,8 @@ type AddMySQLRequest struct { CustomLabels map[string]string `protobuf:"bytes,15,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Skip connection check. SkipConnectionCheck bool `protobuf:"varint,16,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,31,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Limit query length in QAN (default: server-defined; -1: no limit). MaxQueryLength int32 `protobuf:"varint,30,opt,name=max_query_length,json=maxQueryLength,proto3" json:"max_query_length,omitempty"` // Disable query examples. @@ -256,6 +258,13 @@ func (x *AddMySQLRequest) GetSkipConnectionCheck() bool { return false } +func (x *AddMySQLRequest) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *AddMySQLRequest) GetMaxQueryLength() int32 { if x != nil { return x.MaxQueryLength @@ -447,7 +456,7 @@ var file_managementpb_mysql_proto_rawDesc = []byte{ 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, 0x0a, 0x0a, 0x0f, 0x41, 0x64, 0x64, + 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbe, 0x0a, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61, @@ -490,99 +499,103 @@ var file_managementpb_mysql_proto_rawDesc = []byte{ 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x73, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, - 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, - 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, - 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, - 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x19, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x18, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, - 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, - 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, - 0xcd, 0x02, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, - 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, - 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x14, 0x71, - 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, - 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x12, 0x71, - 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x12, 0x4b, 0x0a, 0x11, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, - 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, - 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, - 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x71, - 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, - 0x84, 0x03, 0x0a, 0x05, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x12, 0xfa, 0x02, 0x0a, 0x08, 0x41, 0x64, - 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xb2, 0x02, 0x92, 0x41, 0x8b, 0x02, 0x12, 0x09, 0x41, 0x64, 0x64, 0x20, 0x4d, 0x79, - 0x53, 0x51, 0x4c, 0x1a, 0xfd, 0x01, 0x41, 0x64, 0x64, 0x73, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, - 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x73, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x64, 0x20, 0x22, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x20, 0x74, 0x68, - 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x22, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, - 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, - 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x22, 0x20, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x22, - 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 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, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x2f, 0x41, 0x64, 0x64, 0x42, 0x8d, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0a, 0x4d, 0x79, 0x73, 0x71, 0x6c, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 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, 0x70, 0x62, - 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6b, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x1f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x6d, + 0x61, 0x78, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x6d, + 0x61, 0x78, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, + 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, + 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, + 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, + 0x63, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, + 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, + 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, + 0x4b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3a, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, + 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, + 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 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, 0xcd, 0x02, 0x0a, 0x10, 0x41, 0x64, + 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, + 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, + 0x4c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x14, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, + 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x12, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, + 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x4b, 0x0a, 0x11, 0x71, + 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, + 0x6f, 0x67, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, + 0x6c, 0x53, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0x84, 0x03, 0x0a, 0x05, 0x4d, 0x79, + 0x53, 0x51, 0x4c, 0x12, 0xfa, 0x02, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, + 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, + 0x64, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x79, + 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb2, 0x02, 0x92, 0x41, + 0x8b, 0x02, 0x12, 0x09, 0x41, 0x64, 0x64, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x1a, 0xfd, 0x01, + 0x41, 0x64, 0x64, 0x73, 0x20, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x73, 0x65, + 0x76, 0x65, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x49, 0x74, + 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x61, + 0x64, 0x64, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x74, 0x6f, + 0x20, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, + 0x68, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x22, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, + 0x73, 0x20, 0x22, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x22, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, + 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0x20, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x22, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x74, 0x68, 0x65, + 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 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, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x2f, 0x41, 0x64, 0x64, + 0x42, 0x8d, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x42, 0x0a, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x27, 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, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, + 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0a, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/managementpb/mysql.pb.validate.go b/api/managementpb/mysql.pb.validate.go index b197b981fc..e5b6ae0288 100644 --- a/api/managementpb/mysql.pb.validate.go +++ b/api/managementpb/mysql.pb.validate.go @@ -149,6 +149,8 @@ func (m *AddMySQLRequest) validate(all bool) error { // no validation rules for SkipConnectionCheck + // no validation rules for DisableCommentsParsing + // no validation rules for MaxQueryLength // no validation rules for DisableQueryExamples diff --git a/api/managementpb/mysql.proto b/api/managementpb/mysql.proto index 667c52974d..7113058d18 100644 --- a/api/managementpb/mysql.proto +++ b/api/managementpb/mysql.proto @@ -56,6 +56,8 @@ message AddMySQLRequest { map custom_labels = 15; // Skip connection check. bool skip_connection_check = 16; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 31; // Limit query length in QAN (default: server-defined; -1: no limit). int32 max_query_length = 30; // Disable query examples. diff --git a/api/managementpb/postgresql.pb.go b/api/managementpb/postgresql.pb.go index 575c08580b..0d70714e10 100644 --- a/api/managementpb/postgresql.pb.go +++ b/api/managementpb/postgresql.pb.go @@ -77,6 +77,8 @@ type AddPostgreSQLRequest struct { CustomLabels map[string]string `protobuf:"bytes,14,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Skip connection check. SkipConnectionCheck bool `protobuf:"varint,15,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` + // Disable parsing comments from queries and showing them in QAN. + DisableCommentsParsing bool `protobuf:"varint,30,opt,name=disable_comments_parsing,json=disableCommentsParsing,proto3" json:"disable_comments_parsing,omitempty"` // Use TLS for database connections. Tls bool `protobuf:"varint,16,opt,name=tls,proto3" json:"tls,omitempty"` // Skip TLS certificate and hostname validation. Uses sslmode=required instead of verify-full. @@ -271,6 +273,13 @@ func (x *AddPostgreSQLRequest) GetSkipConnectionCheck() bool { return false } +func (x *AddPostgreSQLRequest) GetDisableCommentsParsing() bool { + if x != nil { + return x.DisableCommentsParsing + } + return false +} + func (x *AddPostgreSQLRequest) GetTls() bool { if x != nil { return x.Tls @@ -425,7 +434,7 @@ var file_managementpb_postgresql_proto_rawDesc = []byte{ 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, 0xf0, 0x09, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaa, 0x0a, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, @@ -480,90 +489,94 @@ var file_managementpb_postgresql_proto_rawDesc = []byte{ 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, - 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, - 0x12, 0x3a, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x74, - 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, - 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x18, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, - 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, - 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, - 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0x88, 0x03, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, - 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, - 0x51, 0x4c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, - 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x74, 0x0a, 0x21, + 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x18, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, + 0x6e, 0x67, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, + 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x74, + 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x74, 0x6c, 0x73, + 0x53, 0x6b, 0x69, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x3a, 0x0a, 0x0c, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x16, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x61, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6c, 0x73, 0x43, 0x61, 0x12, 0x19, 0x0a, 0x08, + 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x74, 0x6c, 0x73, 0x43, 0x65, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6c, 0x73, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6c, 0x73, 0x4b, 0x65, 0x79, + 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, + 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 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, 0x88, 0x03, 0x0a, 0x15, 0x41, + 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x11, + 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x74, 0x0a, 0x21, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, + 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, + 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1e, 0x71, 0x61, + 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x77, 0x0a, 0x22, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, - 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, - 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, - 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x52, 0x1e, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, - 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x77, 0x0a, 0x22, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, - 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1f, 0x71, 0x61, 0x6e, 0x50, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x32, 0x81, 0x03, 0x0a, 0x0a, - 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x12, 0xf2, 0x02, 0x0a, 0x0d, 0x41, - 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x12, 0x20, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x50, - 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x9b, 0x02, 0x92, 0x41, 0xef, 0x01, 0x12, 0x0e, 0x41, 0x64, 0x64, 0x20, 0x50, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x1a, 0xdc, 0x01, 0x41, 0x64, 0x64, 0x73, 0x20, - 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x70, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x20, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2e, - 0x20, 0x49, 0x74, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x79, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2c, 0x20, 0x77, - 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, - 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x22, 0x6e, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x73, - 0x20, 0x22, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x22, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x64, 0x20, 0x22, 0x70, 0x6d, 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x22, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, - 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2f, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x2f, 0x41, 0x64, 0x64, 0x42, - 0x92, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x42, 0x0f, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 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, 0x70, 0x62, 0xa2, 0x02, - 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xe2, 0x02, - 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, + 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x1f, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x32, 0x81, 0x03, 0x0a, 0x0a, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x53, 0x51, 0x4c, 0x12, 0xf2, 0x02, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, + 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, + 0x4c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x53, 0x51, 0x4c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x02, 0x92, 0x41, + 0xef, 0x01, 0x12, 0x0e, 0x41, 0x64, 0x64, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, + 0x51, 0x4c, 0x1a, 0xdc, 0x01, 0x41, 0x64, 0x64, 0x73, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x53, 0x51, 0x4c, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, + 0x20, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x61, 0x75, + 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x61, 0x64, 0x64, 0x73, + 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, + 0x73, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x20, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x22, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x2c, + 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x22, 0x70, 0x6f, 0x73, 0x74, + 0x67, 0x72, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x22, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x22, 0x70, 0x6d, + 0x6d, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x53, 0x51, 0x4c, 0x2f, 0x41, 0x64, 0x64, 0x42, 0x92, 0x01, 0x0a, 0x0e, 0x63, 0x6f, + 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0f, 0x50, 0x6f, + 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x27, 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, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, + 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0a, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0xea, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/managementpb/postgresql.pb.validate.go b/api/managementpb/postgresql.pb.validate.go index f100455abd..181682d702 100644 --- a/api/managementpb/postgresql.pb.validate.go +++ b/api/managementpb/postgresql.pb.validate.go @@ -155,6 +155,8 @@ func (m *AddPostgreSQLRequest) validate(all bool) error { // no validation rules for SkipConnectionCheck + // no validation rules for DisableCommentsParsing + // no validation rules for Tls // no validation rules for TlsSkipVerify diff --git a/api/managementpb/postgresql.proto b/api/managementpb/postgresql.proto index 72fa2378ef..c48e497afa 100644 --- a/api/managementpb/postgresql.proto +++ b/api/managementpb/postgresql.proto @@ -62,6 +62,8 @@ message AddPostgreSQLRequest { map custom_labels = 14; // Skip connection check. bool skip_connection_check = 15; + // Disable parsing comments from queries and showing them in QAN. + bool disable_comments_parsing = 30; // Use TLS for database connections. bool tls = 16; // Skip TLS certificate and hostname validation. Uses sslmode=required instead of verify-full. diff --git a/api/managementpb/service/json/client/mgmt_service/list_services_responses.go b/api/managementpb/service/json/client/mgmt_service/list_services_responses.go index 14dc7e9404..fdc3b2c330 100644 --- a/api/managementpb/service/json/client/mgmt_service/list_services_responses.go +++ b/api/managementpb/service/json/client/mgmt_service/list_services_responses.go @@ -782,6 +782,9 @@ type ListServicesOKBodyServicesItems0AgentsItems0 struct { // True if query examples are disabled. QueryExamplesDisabled bool `json:"query_examples_disabled,omitempty"` + // True if query comments parsing is disabled. + CommentsParsingDisabled bool `json:"comments_parsing_disabled,omitempty"` + // True if RDS basic metrics are disdabled. RDSBasicMetricsDisabled bool `json:"rds_basic_metrics_disabled,omitempty"` diff --git a/api/managementpb/service/json/service.json b/api/managementpb/service/json/service.json index 6455fde1e3..56aff3ce16 100644 --- a/api/managementpb/service/json/service.json +++ b/api/managementpb/service/json/service.json @@ -129,6 +129,11 @@ }, "x-order": 5 }, + "comments_parsing_disabled": { + "description": "True if query comments parsing is disabled.", + "type": "boolean", + "x-order": 25 + }, "created_at": { "description": "Creation timestamp.", "type": "string", @@ -169,7 +174,7 @@ "is_connected": { "description": "True if Agent is running and connected to pmm-managed.", "type": "boolean", - "x-order": 37 + "x-order": 38 }, "is_password_set": { "description": "True if password for connecting the agent to the database is set.", @@ -329,65 +334,65 @@ "rds_basic_metrics_disabled": { "description": "True if RDS basic metrics are disdabled.", "type": "boolean", - "x-order": 25 + "x-order": 26 }, "rds_enhanced_metrics_disabled": { "description": "True if RDS enhanced metrics are disdabled.", "type": "boolean", - "x-order": 26 + "x-order": 27 }, "runs_on_node_id": { "description": "Node identifier where this instance runs.", "type": "string", - "x-order": 27 + "x-order": 28 }, "service_id": { "description": "Service identifier.", "type": "string", - "x-order": 28 + "x-order": 29 }, "status": { "description": "Actual Agent status.", "type": "string", - "x-order": 29 + "x-order": 30 }, "table_count": { "description": "Last known table count.", "type": "integer", "format": "int32", - "x-order": 30 + "x-order": 31 }, "table_count_tablestats_group_limit": { "description": "Tablestats group collectors are disabled if there are more than that number of tables.\n0 means tablestats group collectors are always enabled (no limit).\nNegative value means tablestats group collectors are always disabled.", "type": "integer", "format": "int32", - "x-order": 31 + "x-order": 32 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 32 + "x-order": 33 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 33 + "x-order": 34 }, "updated_at": { "description": "Last update timestamp.", "type": "string", "format": "date-time", - "x-order": 35 + "x-order": 36 }, "username": { "description": "HTTP basic auth username for collecting metrics.", "type": "string", - "x-order": 34 + "x-order": 35 }, "version": { "description": "Agent version.", "type": "string", - "x-order": 36 + "x-order": 37 } } }, diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 3936460e7a..926ca7fa3f 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -6205,6 +6205,11 @@ "type": "boolean", "x-order": 12 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 13 + }, "log_level": { "type": "string", "title": "Log level for exporters", @@ -6217,7 +6222,7 @@ "info", "debug" ], - "x-order": 13 + "x-order": 14 } } } @@ -6283,16 +6288,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -6300,7 +6310,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -6315,12 +6325,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -6334,7 +6344,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 0 @@ -6467,6 +6477,11 @@ "type": "boolean", "x-order": 13 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 14 + }, "log_level": { "type": "string", "title": "Log level for exporters", @@ -6479,7 +6494,7 @@ "info", "debug" ], - "x-order": 14 + "x-order": 15 } } } @@ -6545,22 +6560,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -6568,7 +6588,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -6583,12 +6603,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -6602,7 +6622,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 0 @@ -6714,20 +6734,25 @@ "type": "boolean", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 10 + "x-order": 11 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 11 + "x-order": 12 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 12 + "x-order": 13 }, "log_level": { "type": "string", @@ -6741,7 +6766,7 @@ "info", "debug" ], - "x-order": 13 + "x-order": 14 } } } @@ -6792,16 +6817,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -6809,7 +6839,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -6824,12 +6854,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -6843,7 +6873,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 0 @@ -6944,26 +6974,31 @@ "type": "boolean", "x-order": 7 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 8 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 8 + "x-order": 9 }, "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 9 + "x-order": 10 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 10 + "x-order": 11 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -6977,7 +7012,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } } } @@ -7018,21 +7053,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -7040,7 +7080,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -7055,12 +7095,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -7074,7 +7114,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 0 @@ -9102,16 +9142,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9119,7 +9164,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9134,12 +9179,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -9153,7 +9198,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 0 @@ -9319,22 +9364,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9342,7 +9392,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9357,12 +9407,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -9376,7 +9426,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 0 @@ -9527,16 +9577,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9544,7 +9599,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9559,12 +9614,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -9578,7 +9633,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 0 @@ -9719,21 +9774,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9741,7 +9801,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9756,12 +9816,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -9775,7 +9835,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 0 @@ -10722,16 +10782,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -10739,7 +10804,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -10754,12 +10819,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -10773,7 +10838,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 7 @@ -10832,22 +10897,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -10855,7 +10925,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -10870,12 +10940,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -10889,7 +10959,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 8 @@ -11013,21 +11083,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -11035,7 +11110,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -11050,12 +11125,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -11069,7 +11144,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 10 @@ -11113,16 +11188,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -11130,7 +11210,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -11145,12 +11225,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -11164,7 +11244,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 11 @@ -12303,16 +12383,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -12320,7 +12405,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -12335,12 +12420,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -12354,7 +12439,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } } }, @@ -12416,22 +12501,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -12439,7 +12529,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -12454,12 +12544,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -12473,7 +12563,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } } }, @@ -12603,21 +12693,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -12625,7 +12720,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -12640,12 +12735,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -12659,7 +12754,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } } }, @@ -12706,16 +12801,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -12723,7 +12823,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -12738,12 +12838,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -12757,7 +12857,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } } }, @@ -18553,73 +18653,78 @@ "type": "boolean", "x-order": 24 }, + "comments_parsing_disabled": { + "description": "True if query comments parsing is disabled.", + "type": "boolean", + "x-order": 25 + }, "rds_basic_metrics_disabled": { "description": "True if RDS basic metrics are disdabled.", "type": "boolean", - "x-order": 25 + "x-order": 26 }, "rds_enhanced_metrics_disabled": { "description": "True if RDS enhanced metrics are disdabled.", "type": "boolean", - "x-order": 26 + "x-order": 27 }, "runs_on_node_id": { "description": "Node identifier where this instance runs.", "type": "string", - "x-order": 27 + "x-order": 28 }, "service_id": { "description": "Service identifier.", "type": "string", - "x-order": 28 + "x-order": 29 }, "status": { "description": "Actual Agent status.", "type": "string", - "x-order": 29 + "x-order": 30 }, "table_count": { "description": "Last known table count.", "type": "integer", "format": "int32", - "x-order": 30 + "x-order": 31 }, "table_count_tablestats_group_limit": { "description": "Tablestats group collectors are disabled if there are more than that number of tables.\n0 means tablestats group collectors are always enabled (no limit).\nNegative value means tablestats group collectors are always disabled.", "type": "integer", "format": "int32", - "x-order": 31 + "x-order": 32 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 32 + "x-order": 33 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 33 + "x-order": 34 }, "username": { "description": "HTTP basic auth username for collecting metrics.", "type": "string", - "x-order": 34 + "x-order": 35 }, "updated_at": { "description": "Last update timestamp.", "type": "string", "format": "date-time", - "x-order": 35 + "x-order": 36 }, "version": { "description": "Agent version.", "type": "string", - "x-order": 36 + "x-order": 37 }, "is_connected": { "description": "True if Agent is running and connected to pmm-managed.", "type": "boolean", - "x-order": 37 + "x-order": 38 } } }, @@ -25318,53 +25423,58 @@ "type": "boolean", "x-order": 16 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 17 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 17 + "x-order": 18 }, "disable_query_examples": { "description": "Disable query examples.", "type": "boolean", - "x-order": 18 + "x-order": 19 }, "max_slowlog_file_size": { "description": "If qan-mysql-slowlog-agent is added, slowlog file is rotated at this size if \u003e 0.\nIf zero, server's default value is used.\nUse negative value to disable rotation.", "type": "string", "format": "int64", - "x-order": 19 + "x-order": 20 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 20 + "x-order": 21 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 21 + "x-order": 22 }, "tls_ca": { "description": "Certificate Authority certificate chain.", "type": "string", - "x-order": 22 + "x-order": 23 }, "tls_cert": { "description": "Client certificate.", "type": "string", - "x-order": 23 + "x-order": 24 }, "tls_key": { "description": "Password for decrypting tls_cert.", "type": "string", - "x-order": 24 + "x-order": 25 }, "tablestats_group_table_limit": { "description": "Tablestats group collectors will be disabled if there are more than that number of tables.\nIf zero, server's default value is used.\nUse negative value to disable them.", "type": "integer", "format": "int32", - "x-order": 25 + "x-order": 26 }, "metrics_mode": { "description": "MetricsMode defines desired metrics mode for agent,\nit can be pull, push or auto mode chosen by server.", @@ -25375,7 +25485,7 @@ "PULL", "PUSH" ], - "x-order": 26 + "x-order": 27 }, "disable_collectors": { "description": "List of collector names to disable in this exporter.", @@ -25383,12 +25493,12 @@ "items": { "type": "string" }, - "x-order": 27 + "x-order": 28 }, "agent_password": { "description": "Custom password for exporter endpoint /metrics.", "type": "string", - "x-order": 28 + "x-order": 29 }, "log_level": { "type": "string", @@ -25402,7 +25512,7 @@ "info", "debug" ], - "x-order": 29 + "x-order": 30 } } } @@ -25658,16 +25768,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -25675,7 +25790,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -25690,12 +25805,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -25709,7 +25824,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 2 @@ -25768,22 +25883,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -25791,7 +25911,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -25806,12 +25926,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -25825,7 +25945,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 3 @@ -26818,15 +26938,20 @@ "type": "boolean", "x-order": 19 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 20 + }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 20 + "x-order": 21 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation. Uses sslmode=required instead of verify-full.", "type": "boolean", - "x-order": 21 + "x-order": 22 }, "metrics_mode": { "description": "MetricsMode defines desired metrics mode for agent,\nit can be pull, push or auto mode chosen by server.", @@ -26837,7 +26962,7 @@ "PULL", "PUSH" ], - "x-order": 22 + "x-order": 23 }, "disable_collectors": { "description": "List of collector names to disable in this exporter.", @@ -26845,27 +26970,27 @@ "items": { "type": "string" }, - "x-order": 23 + "x-order": 24 }, "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 24 + "x-order": 25 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 25 + "x-order": 26 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 26 + "x-order": 27 }, "agent_password": { "description": "Custom password for exporter endpoint /metrics.", "type": "string", - "x-order": 27 + "x-order": 28 }, "log_level": { "type": "string", @@ -26879,7 +27004,7 @@ "info", "debug" ], - "x-order": 28 + "x-order": 29 } } } @@ -27089,21 +27214,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -27111,7 +27241,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -27126,12 +27256,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -27145,7 +27275,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 2 @@ -27189,16 +27319,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -27206,7 +27341,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -27221,12 +27356,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -27240,7 +27375,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 3 @@ -28272,16 +28407,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -28289,7 +28429,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -28304,12 +28444,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -28323,7 +28463,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 4 @@ -28532,21 +28672,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -28554,7 +28699,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -28569,12 +28714,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -28588,7 +28733,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 8 @@ -30445,73 +30590,78 @@ "type": "boolean", "x-order": 24 }, + "comments_parsing_disabled": { + "description": "True if query comments parsing is disabled.", + "type": "boolean", + "x-order": 25 + }, "rds_basic_metrics_disabled": { "description": "True if RDS basic metrics are disdabled.", "type": "boolean", - "x-order": 25 + "x-order": 26 }, "rds_enhanced_metrics_disabled": { "description": "True if RDS enhanced metrics are disdabled.", "type": "boolean", - "x-order": 26 + "x-order": 27 }, "runs_on_node_id": { "description": "Node identifier where this instance runs.", "type": "string", - "x-order": 27 + "x-order": 28 }, "service_id": { "description": "Service identifier.", "type": "string", - "x-order": 28 + "x-order": 29 }, "status": { "description": "Actual Agent status.", "type": "string", - "x-order": 29 + "x-order": 30 }, "table_count": { "description": "Last known table count.", "type": "integer", "format": "int32", - "x-order": 30 + "x-order": 31 }, "table_count_tablestats_group_limit": { "description": "Tablestats group collectors are disabled if there are more than that number of tables.\n0 means tablestats group collectors are always enabled (no limit).\nNegative value means tablestats group collectors are always disabled.", "type": "integer", "format": "int32", - "x-order": 31 + "x-order": 32 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 32 + "x-order": 33 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 33 + "x-order": 34 }, "username": { "description": "HTTP basic auth username for collecting metrics.", "type": "string", - "x-order": 34 + "x-order": 35 }, "updated_at": { "description": "Last update timestamp.", "type": "string", "format": "date-time", - "x-order": 35 + "x-order": 36 }, "version": { "description": "Agent version.", "type": "string", - "x-order": 36 + "x-order": 37 }, "is_connected": { "description": "True if Agent is running and connected to pmm-managed.", "type": "boolean", - "x-order": 37 + "x-order": 38 } } }, diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 11c33ab93d..24f7b6c588 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -3438,6 +3438,11 @@ "type": "boolean", "x-order": 12 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 13 + }, "log_level": { "type": "string", "title": "Log level for exporters", @@ -3450,7 +3455,7 @@ "info", "debug" ], - "x-order": 13 + "x-order": 14 } } } @@ -3516,16 +3521,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -3533,7 +3543,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -3548,12 +3558,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -3567,7 +3577,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 0 @@ -3700,6 +3710,11 @@ "type": "boolean", "x-order": 13 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 14 + }, "log_level": { "type": "string", "title": "Log level for exporters", @@ -3712,7 +3727,7 @@ "info", "debug" ], - "x-order": 14 + "x-order": 15 } } } @@ -3778,22 +3793,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -3801,7 +3821,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -3816,12 +3836,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -3835,7 +3855,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 0 @@ -3947,20 +3967,25 @@ "type": "boolean", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 10 + "x-order": 11 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 11 + "x-order": 12 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 12 + "x-order": 13 }, "log_level": { "type": "string", @@ -3974,7 +3999,7 @@ "info", "debug" ], - "x-order": 13 + "x-order": 14 } } } @@ -4025,16 +4050,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -4042,7 +4072,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -4057,12 +4087,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -4076,7 +4106,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 0 @@ -4177,26 +4207,31 @@ "type": "boolean", "x-order": 7 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 8 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 8 + "x-order": 9 }, "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 9 + "x-order": 10 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 10 + "x-order": 11 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -4210,7 +4245,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } } } @@ -4251,21 +4286,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -4273,7 +4313,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -4288,12 +4328,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -4307,7 +4347,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 0 @@ -6335,16 +6375,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -6352,7 +6397,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -6367,12 +6412,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -6386,7 +6431,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 0 @@ -6552,22 +6597,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -6575,7 +6625,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -6590,12 +6640,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -6609,7 +6659,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 0 @@ -6760,16 +6810,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -6777,7 +6832,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -6792,12 +6847,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -6811,7 +6866,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 0 @@ -6952,21 +7007,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -6974,7 +7034,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -6989,12 +7049,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -7008,7 +7068,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 0 @@ -7955,16 +8015,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -7972,7 +8037,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -7987,12 +8052,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -8006,7 +8071,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 7 @@ -8065,22 +8130,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -8088,7 +8158,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -8103,12 +8173,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -8122,7 +8192,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 8 @@ -8246,21 +8316,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -8268,7 +8343,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -8283,12 +8358,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -8302,7 +8377,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 10 @@ -8346,16 +8421,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -8363,7 +8443,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -8378,12 +8458,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -8397,7 +8477,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 11 @@ -9536,16 +9616,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9553,7 +9638,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9568,12 +9653,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -9587,7 +9672,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } } }, @@ -9649,22 +9734,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9672,7 +9762,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9687,12 +9777,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -9706,7 +9796,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } } }, @@ -9836,21 +9926,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9858,7 +9953,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9873,12 +9968,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -9892,7 +9987,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } } }, @@ -9939,16 +10034,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -9956,7 +10056,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -9971,12 +10071,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -9990,7 +10090,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } } }, @@ -17015,53 +17115,58 @@ "type": "boolean", "x-order": 16 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 17 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 17 + "x-order": 18 }, "disable_query_examples": { "description": "Disable query examples.", "type": "boolean", - "x-order": 18 + "x-order": 19 }, "max_slowlog_file_size": { "description": "If qan-mysql-slowlog-agent is added, slowlog file is rotated at this size if \u003e 0.\nIf zero, server's default value is used.\nUse negative value to disable rotation.", "type": "string", "format": "int64", - "x-order": 19 + "x-order": 20 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 20 + "x-order": 21 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 21 + "x-order": 22 }, "tls_ca": { "description": "Certificate Authority certificate chain.", "type": "string", - "x-order": 22 + "x-order": 23 }, "tls_cert": { "description": "Client certificate.", "type": "string", - "x-order": 23 + "x-order": 24 }, "tls_key": { "description": "Password for decrypting tls_cert.", "type": "string", - "x-order": 24 + "x-order": 25 }, "tablestats_group_table_limit": { "description": "Tablestats group collectors will be disabled if there are more than that number of tables.\nIf zero, server's default value is used.\nUse negative value to disable them.", "type": "integer", "format": "int32", - "x-order": 25 + "x-order": 26 }, "metrics_mode": { "description": "MetricsMode defines desired metrics mode for agent,\nit can be pull, push or auto mode chosen by server.", @@ -17072,7 +17177,7 @@ "PULL", "PUSH" ], - "x-order": 26 + "x-order": 27 }, "disable_collectors": { "description": "List of collector names to disable in this exporter.", @@ -17080,12 +17185,12 @@ "items": { "type": "string" }, - "x-order": 27 + "x-order": 28 }, "agent_password": { "description": "Custom password for exporter endpoint /metrics.", "type": "string", - "x-order": 28 + "x-order": 29 }, "log_level": { "type": "string", @@ -17099,7 +17204,7 @@ "info", "debug" ], - "x-order": 29 + "x-order": 30 } } } @@ -17355,16 +17460,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -17372,7 +17482,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -17387,12 +17497,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -17406,7 +17516,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 2 @@ -17465,22 +17575,27 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "type": "integer", "format": "int32", "title": "Limit query length in QAN (default: server-defined; -1: no limit)", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "max_slowlog_file_size": { "description": "Slowlog file is rotated at this size if \u003e 0.", "type": "string", "format": "int64", - "x-order": 12 + "x-order": 13 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -17488,7 +17603,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 13 + "x-order": 14 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -17503,12 +17618,12 @@ "DONE", "UNKNOWN" ], - "x-order": 14 + "x-order": 15 }, "process_exec_path": { "type": "string", "title": "mod tidy", - "x-order": 15 + "x-order": 16 }, "log_level": { "type": "string", @@ -17522,7 +17637,7 @@ "info", "debug" ], - "x-order": 16 + "x-order": 17 } }, "x-order": 3 @@ -18069,15 +18184,20 @@ "type": "boolean", "x-order": 19 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 20 + }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 20 + "x-order": 21 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation. Uses sslmode=required instead of verify-full.", "type": "boolean", - "x-order": 21 + "x-order": 22 }, "metrics_mode": { "description": "MetricsMode defines desired metrics mode for agent,\nit can be pull, push or auto mode chosen by server.", @@ -18088,7 +18208,7 @@ "PULL", "PUSH" ], - "x-order": 22 + "x-order": 23 }, "disable_collectors": { "description": "List of collector names to disable in this exporter.", @@ -18096,27 +18216,27 @@ "items": { "type": "string" }, - "x-order": 23 + "x-order": 24 }, "tls_ca": { "description": "TLS CA certificate.", "type": "string", - "x-order": 24 + "x-order": 25 }, "tls_cert": { "description": "TLS Certifcate.", "type": "string", - "x-order": 25 + "x-order": 26 }, "tls_key": { "description": "TLS Certificate Key.", "type": "string", - "x-order": 26 + "x-order": 27 }, "agent_password": { "description": "Custom password for exporter endpoint /metrics.", "type": "string", - "x-order": 27 + "x-order": 28 }, "log_level": { "type": "string", @@ -18130,7 +18250,7 @@ "info", "debug" ], - "x-order": 28 + "x-order": 29 } } } @@ -18340,21 +18460,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -18362,7 +18487,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -18377,12 +18502,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -18396,7 +18521,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 2 @@ -18440,16 +18565,21 @@ "type": "boolean", "x-order": 6 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 7 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 7 + "x-order": 8 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 8 + "x-order": 9 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -18457,7 +18587,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 9 + "x-order": 10 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -18472,12 +18602,12 @@ "DONE", "UNKNOWN" ], - "x-order": 10 + "x-order": 11 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 11 + "x-order": 12 }, "log_level": { "type": "string", @@ -18491,7 +18621,7 @@ "info", "debug" ], - "x-order": 12 + "x-order": 13 } }, "x-order": 3 @@ -19523,16 +19653,21 @@ "type": "string", "x-order": 9 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 10 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 10 + "x-order": 11 }, "query_examples_disabled": { "description": "True if query examples are disabled.", "type": "boolean", - "x-order": 11 + "x-order": 12 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -19540,7 +19675,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 12 + "x-order": 13 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -19555,12 +19690,12 @@ "DONE", "UNKNOWN" ], - "x-order": 13 + "x-order": 14 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 14 + "x-order": 15 }, "log_level": { "type": "string", @@ -19574,7 +19709,7 @@ "info", "debug" ], - "x-order": 15 + "x-order": 16 } }, "x-order": 4 @@ -19783,21 +19918,26 @@ "type": "string", "x-order": 4 }, + "disable_comments_parsing": { + "description": "Disable parsing comments from queries and showing them in QAN.", + "type": "boolean", + "x-order": 5 + }, "max_query_length": { "description": "Limit query length in QAN (default: server-defined; -1: no limit).", "type": "integer", "format": "int32", - "x-order": 5 + "x-order": 6 }, "tls": { "description": "Use TLS for database connections.", "type": "boolean", - "x-order": 6 + "x-order": 7 }, "tls_skip_verify": { "description": "Skip TLS certificate and hostname validation.", "type": "boolean", - "x-order": 7 + "x-order": 8 }, "custom_labels": { "description": "Custom user-assigned labels.\n\nStatus fields below.", @@ -19805,7 +19945,7 @@ "additionalProperties": { "type": "string" }, - "x-order": 8 + "x-order": 9 }, "status": { "description": "AgentStatus represents actual Agent status.\n\n - STARTING: Agent is starting.\n - RUNNING: Agent is running.\n - WAITING: Agent encountered error and will be restarted automatically soon.\n - STOPPING: Agent is stopping.\n - DONE: Agent finished.\n - UNKNOWN: Agent is not connected, we don't know anything about it's state.", @@ -19820,12 +19960,12 @@ "DONE", "UNKNOWN" ], - "x-order": 9 + "x-order": 10 }, "process_exec_path": { "description": "Path to exec process.", "type": "string", - "x-order": 10 + "x-order": 11 }, "log_level": { "type": "string", @@ -19839,7 +19979,7 @@ "info", "debug" ], - "x-order": 11 + "x-order": 12 } }, "x-order": 8 diff --git a/go.mod b/go.mod index 9513f10139..249ef29f9a 100644 --- a/go.mod +++ b/go.mod @@ -134,6 +134,7 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/xlab/treeprint v1.1.0 // indirect go.uber.org/atomic v1.10.0 // indirect + golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/genproto v0.0.0-20230526203410-71b5a4ffd15e // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 955ac36655..0ee06f5ea4 100644 --- a/go.sum +++ b/go.sum @@ -850,7 +850,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230315142452-642cacee5cc0 h1:pVgRXcIictcr+lBQIFeiwuwtDIs4eL21OuM9nyAADmo= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= +golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= diff --git a/managed/models/agent_helpers.go b/managed/models/agent_helpers.go index 59e1c93ac4..21df05d004 100644 --- a/managed/models/agent_helpers.go +++ b/managed/models/agent_helpers.go @@ -716,6 +716,7 @@ type CreateAgentParams struct { TableCountTablestatsGroupLimit int32 MaxQueryLength int32 QueryExamplesDisabled bool + CommentsParsingDisabled bool MaxQueryLogSize int64 AWSAccessKey string AWSSecretKey string @@ -864,6 +865,7 @@ func CreateAgent(q *reform.Querier, agentType AgentType, params *CreateAgentPara TableCountTablestatsGroupLimit: params.TableCountTablestatsGroupLimit, MaxQueryLength: params.MaxQueryLength, QueryExamplesDisabled: params.QueryExamplesDisabled, + CommentsParsingDisabled: params.CommentsParsingDisabled, MaxQueryLogSize: params.MaxQueryLogSize, AWSAccessKey: pointer.ToStringOrNil(params.AWSAccessKey), AWSSecretKey: pointer.ToStringOrNil(params.AWSSecretKey), diff --git a/managed/models/agent_model.go b/managed/models/agent_model.go index ffd7485b5e..f146abffb9 100644 --- a/managed/models/agent_model.go +++ b/managed/models/agent_model.go @@ -180,11 +180,12 @@ type Agent struct { // See IsMySQLTablestatsGroupEnabled method. TableCountTablestatsGroupLimit int32 `reform:"table_count_tablestats_group_limit"` - MaxQueryLength int32 `reform:"max_query_length"` - QueryExamplesDisabled bool `reform:"query_examples_disabled"` - MaxQueryLogSize int64 `reform:"max_query_log_size"` - MetricsPath *string `reform:"metrics_path"` - MetricsScheme *string `reform:"metrics_scheme"` + MaxQueryLength int32 `reform:"max_query_length"` + QueryExamplesDisabled bool `reform:"query_examples_disabled"` + CommentsParsingDisabled bool `reform:"comments_parsing_disabled"` + MaxQueryLogSize int64 `reform:"max_query_log_size"` + MetricsPath *string `reform:"metrics_path"` + MetricsScheme *string `reform:"metrics_scheme"` RDSBasicMetricsDisabled bool `reform:"rds_basic_metrics_disabled"` RDSEnhancedMetricsDisabled bool `reform:"rds_enhanced_metrics_disabled"` diff --git a/managed/models/agent_model_reform.go b/managed/models/agent_model_reform.go index 32071169c7..056057a5af 100644 --- a/managed/models/agent_model_reform.go +++ b/managed/models/agent_model_reform.go @@ -54,6 +54,7 @@ func (v *agentTableType) Columns() []string { "table_count_tablestats_group_limit", "max_query_length", "query_examples_disabled", + "comments_parsing_disabled", "max_query_log_size", "metrics_path", "metrics_scheme", @@ -115,6 +116,7 @@ var AgentTable = &agentTableType{ {Name: "TableCountTablestatsGroupLimit", Type: "int32", Column: "table_count_tablestats_group_limit"}, {Name: "MaxQueryLength", Type: "int32", Column: "max_query_length"}, {Name: "QueryExamplesDisabled", Type: "bool", Column: "query_examples_disabled"}, + {Name: "CommentsParsingDisabled", Type: "bool", Column: "comments_parsing_disabled"}, {Name: "MaxQueryLogSize", Type: "int64", Column: "max_query_log_size"}, {Name: "MetricsPath", Type: "*string", Column: "metrics_path"}, {Name: "MetricsScheme", Type: "*string", Column: "metrics_scheme"}, @@ -134,7 +136,7 @@ var AgentTable = &agentTableType{ // String returns a string representation of this struct or record. func (s Agent) String() string { - res := make([]string, 37) + res := make([]string, 38) res[0] = "AgentID: " + reform.Inspect(s.AgentID, true) res[1] = "AgentType: " + reform.Inspect(s.AgentType, true) res[2] = "RunsOnNodeID: " + reform.Inspect(s.RunsOnNodeID, true) @@ -161,17 +163,18 @@ func (s Agent) String() string { res[23] = "TableCountTablestatsGroupLimit: " + reform.Inspect(s.TableCountTablestatsGroupLimit, true) res[24] = "MaxQueryLength: " + reform.Inspect(s.MaxQueryLength, true) res[25] = "QueryExamplesDisabled: " + reform.Inspect(s.QueryExamplesDisabled, true) - res[26] = "MaxQueryLogSize: " + reform.Inspect(s.MaxQueryLogSize, true) - res[27] = "MetricsPath: " + reform.Inspect(s.MetricsPath, true) - res[28] = "MetricsScheme: " + reform.Inspect(s.MetricsScheme, true) - res[29] = "RDSBasicMetricsDisabled: " + reform.Inspect(s.RDSBasicMetricsDisabled, true) - res[30] = "RDSEnhancedMetricsDisabled: " + reform.Inspect(s.RDSEnhancedMetricsDisabled, true) - res[31] = "PushMetrics: " + reform.Inspect(s.PushMetrics, true) - res[32] = "DisabledCollectors: " + reform.Inspect(s.DisabledCollectors, true) - res[33] = "MySQLOptions: " + reform.Inspect(s.MySQLOptions, true) - res[34] = "MongoDBOptions: " + reform.Inspect(s.MongoDBOptions, true) - res[35] = "PostgreSQLOptions: " + reform.Inspect(s.PostgreSQLOptions, true) - res[36] = "LogLevel: " + reform.Inspect(s.LogLevel, true) + res[26] = "CommentsParsingDisabled: " + reform.Inspect(s.CommentsParsingDisabled, true) + res[27] = "MaxQueryLogSize: " + reform.Inspect(s.MaxQueryLogSize, true) + res[28] = "MetricsPath: " + reform.Inspect(s.MetricsPath, true) + res[29] = "MetricsScheme: " + reform.Inspect(s.MetricsScheme, true) + res[30] = "RDSBasicMetricsDisabled: " + reform.Inspect(s.RDSBasicMetricsDisabled, true) + res[31] = "RDSEnhancedMetricsDisabled: " + reform.Inspect(s.RDSEnhancedMetricsDisabled, true) + res[32] = "PushMetrics: " + reform.Inspect(s.PushMetrics, true) + res[33] = "DisabledCollectors: " + reform.Inspect(s.DisabledCollectors, true) + res[34] = "MySQLOptions: " + reform.Inspect(s.MySQLOptions, true) + res[35] = "MongoDBOptions: " + reform.Inspect(s.MongoDBOptions, true) + res[36] = "PostgreSQLOptions: " + reform.Inspect(s.PostgreSQLOptions, true) + res[37] = "LogLevel: " + reform.Inspect(s.LogLevel, true) return strings.Join(res, ", ") } @@ -205,6 +208,7 @@ func (s *Agent) Values() []interface{} { s.TableCountTablestatsGroupLimit, s.MaxQueryLength, s.QueryExamplesDisabled, + s.CommentsParsingDisabled, s.MaxQueryLogSize, s.MetricsPath, s.MetricsScheme, @@ -249,6 +253,7 @@ func (s *Agent) Pointers() []interface{} { &s.TableCountTablestatsGroupLimit, &s.MaxQueryLength, &s.QueryExamplesDisabled, + &s.CommentsParsingDisabled, &s.MaxQueryLogSize, &s.MetricsPath, &s.MetricsScheme, diff --git a/managed/models/database.go b/managed/models/database.go index 6fc92cbb34..6abb888eab 100644 --- a/managed/models/database.go +++ b/managed/models/database.go @@ -908,6 +908,13 @@ var databaseSchema = [][]string{ `DROP TABLE IF EXISTS onboarding_system_tips`, `DROP TABLE IF EXISTS onboarding_user_tips`, }, + 84: { + `ALTER TABLE agents + ADD COLUMN comments_parsing_disabled BOOLEAN NOT NULL DEFAULT TRUE`, + + `ALTER TABLE agents + ALTER COLUMN comments_parsing_disabled DROP DEFAULT`, + }, } // ^^^ Avoid default values in schema definition. ^^^ @@ -1169,12 +1176,13 @@ func setupFixture1(q *reform.Querier, params SetupDBParams) error { } ap := &CreateAgentParams{ - PMMAgentID: PMMServerAgentID, - ServiceID: service.ServiceID, - TLS: params.SSLMode != DisableSSLMode, - TLSSkipVerify: params.SSLMode == DisableSSLMode || params.SSLMode == VerifyCaSSLMode, - Username: params.Username, - Password: params.Password, + PMMAgentID: PMMServerAgentID, + ServiceID: service.ServiceID, + TLS: params.SSLMode != DisableSSLMode, + TLSSkipVerify: params.SSLMode == DisableSSLMode || params.SSLMode == VerifyCaSSLMode, + CommentsParsingDisabled: true, + Username: params.Username, + Password: params.Password, } if ap.TLS { ap.PostgreSQLOptions = &PostgreSQLOptions{} diff --git a/managed/models/database_test.go b/managed/models/database_test.go index cb6a900ee7..8a69ee598c 100644 --- a/managed/models/database_test.go +++ b/managed/models/database_test.go @@ -27,8 +27,6 @@ import ( "github.com/lib/pq" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "gopkg.in/reform.v1" - "gopkg.in/reform.v1/dialects/postgresql" "github.com/percona/pmm/managed/models" "github.com/percona/pmm/managed/utils/testdb" @@ -208,8 +206,8 @@ func TestDatabaseChecks(t *testing.T) { now, now) require.NoError(t, err) _, err = db.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/1', 'pmm-agent', '/node_id/1', NULL, false, '', $1, $2, false, false, 0, false, 0, 0, true, true, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/1', 'pmm-agent', '/node_id/1', NULL, false, '', $1, $2, false, false, 0, false, true, 0, 0, true, true, false)", now, now) require.NoError(t, err) @@ -219,13 +217,13 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/2', 'pmm-agent', '/node_id/1', NULL, false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/2', 'pmm-agent', '/node_id/1', NULL, false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) require.NoError(t, err) _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/3', 'mysqld_exporter', NULL, '/agent_id/1', '/node_id/1', false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/3', 'mysqld_exporter', NULL, '/agent_id/1', '/node_id/1', false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) require.NoError(t, err) }) @@ -235,8 +233,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/4', 'mysqld_exporter', NULL, NULL, '/node_id/1', false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/4', 'mysqld_exporter', NULL, NULL, '/node_id/1', false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assertCheckViolation(t, err, "agents", "runs_on_node_id_xor_pmm_agent_id") }) @@ -246,8 +244,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/5', 'pmm-agent', '/node_id/1', '/agent_id/1', '/node_id/1', false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/5', 'pmm-agent', '/node_id/1', '/agent_id/1', '/node_id/1', false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assertCheckViolation(t, err, "agents", "runs_on_node_id_xor_pmm_agent_id") }) @@ -258,8 +256,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/6', 'mysqld_exporter', '/node_id/1', NULL, '/node_id/1', false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/6', 'mysqld_exporter', '/node_id/1', NULL, '/node_id/1', false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assertCheckViolation(t, err, "agents", "runs_on_node_id_only_for_pmm_agent") }) @@ -269,8 +267,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/7', 'pmm-agent', NULL, '/agent_id/1', '/node_id/1', false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/7', 'pmm-agent', NULL, '/agent_id/1', '/node_id/1', false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assertCheckViolation(t, err, "agents", "runs_on_node_id_only_for_pmm_agent") }) @@ -283,8 +281,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/8', 'node_exporter', NULL, '/agent_id/1', '/node_id/1', NULL, false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/8', 'node_exporter', NULL, '/agent_id/1', '/node_id/1', NULL, false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assert.NoError(t, err) @@ -295,8 +293,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/8', 'mysqld_exporter', NULL, '/agent_id/1', NULL, '/service_id/1', false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/8', 'mysqld_exporter', NULL, '/agent_id/1', NULL, '/service_id/1', false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assert.NoError(t, err) @@ -307,8 +305,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/8', 'mysqld_exporter', NULL, '/agent_id/1', NULL, NULL, false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/8', 'mysqld_exporter', NULL, '/agent_id/1', NULL, NULL, false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assertCheckViolation(t, err, "agents", "node_id_or_service_id_for_non_pmm_agent") @@ -319,8 +317,8 @@ func TestDatabaseChecks(t *testing.T) { defer rollback() _, err = tx.Exec( - "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ - "VALUES ('/agent_id/8', 'mysqld_exporter', NULL, '/agent_id/1', '/node_id/1', '/service_id/1', false, '', $1, $2, false, false, 0, false, 0, 0, false, false, false)", + "INSERT INTO agents (agent_id, agent_type, runs_on_node_id, pmm_agent_id, node_id, service_id, disabled, status, created_at, updated_at, tls, tls_skip_verify, max_query_length, query_examples_disabled, comments_parsing_disabled, max_query_log_size, table_count_tablestats_group_limit, rds_basic_metrics_disabled, rds_enhanced_metrics_disabled, push_metrics) "+ + "VALUES ('/agent_id/8', 'mysqld_exporter', NULL, '/agent_id/1', '/node_id/1', '/service_id/1', false, '', $1, $2, false, false, 0, false, true, 0, 0, false, false, false)", now, now) assertCheckViolation(t, err, "agents", "node_id_or_service_id_for_non_pmm_agent") }) @@ -385,7 +383,6 @@ func TestDatabaseMigrations(t *testing.T) { }) t.Run("stats_collections field migration: string to string array", func(t *testing.T) { sqlDB := testdb.Open(t, models.SkipFixtures, pointer.ToInt(57)) - db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) defer sqlDB.Close() //nolint:errcheck // Insert dummy node in DB @@ -409,16 +406,17 @@ func TestDatabaseMigrations(t *testing.T) { // Apply migration testdb.SetupDB(t, sqlDB, models.SkipFixtures, pointer.ToInt(68)) - agent, err := models.FindAgentByID(db.Querier, "id") + var agentID string + var mongoDBOptions *models.MongoDBOptions + err = sqlDB.QueryRow(`SELECT agent_id, mongo_db_tls_options FROM agents WHERE agent_id = $1`, "id").Scan(&agentID, &mongoDBOptions) + require.NoError(t, err) - require.Equal(t, "id", agent.AgentID) - require.Equal(t, []string{"db.col1", "db.col2", "db.col3"}, agent.MongoDBOptions.StatsCollections) + require.Equal(t, "id", agentID) + require.Equal(t, []string{"db.col1", "db.col2", "db.col3"}, mongoDBOptions.StatsCollections) }) - // TODO https://jira.percona.com/browse/PMM-10872 t.Run("stats_collections field migration: string array to string array", func(t *testing.T) { sqlDB := testdb.Open(t, models.SkipFixtures, pointer.ToInt(58)) - db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) defer sqlDB.Close() //nolint:errcheck // Insert dummy node in DB @@ -442,9 +440,12 @@ func TestDatabaseMigrations(t *testing.T) { // Apply migration testdb.SetupDB(t, sqlDB, models.SkipFixtures, pointer.ToInt(68)) - agent, err := models.FindAgentByID(db.Querier, "id") + var agentID string + var mongoDBOptions *models.MongoDBOptions + err = sqlDB.QueryRow(`SELECT agent_id, mongo_db_tls_options FROM agents WHERE agent_id = $1`, "id").Scan(&agentID, &mongoDBOptions) + require.NoError(t, err) - require.Equal(t, "id", agent.AgentID) - require.Equal(t, []string{"db.col1", "db.col2", "db.col3"}, agent.MongoDBOptions.StatsCollections) + require.Equal(t, "id", agentID) + require.Equal(t, []string{"db.col1", "db.col2", "db.col3"}, mongoDBOptions.StatsCollections) }) } diff --git a/managed/services/agents/mysql.go b/managed/services/agents/mysql.go index 9ed04cb38f..56a67d7077 100644 --- a/managed/services/agents/mysql.go +++ b/managed/services/agents/mysql.go @@ -149,10 +149,11 @@ func mysqldExporterConfig(service *models.Service, exporter *models.Agent, redac func qanMySQLPerfSchemaAgentConfig(service *models.Service, agent *models.Agent) *agentpb.SetStateRequest_BuiltinAgent { tdp := agent.TemplateDelimiters(service) return &agentpb.SetStateRequest_BuiltinAgent{ - Type: inventorypb.AgentType_QAN_MYSQL_PERFSCHEMA_AGENT, - Dsn: agent.DSN(service, time.Second, "", nil), - MaxQueryLength: agent.MaxQueryLength, - DisableQueryExamples: agent.QueryExamplesDisabled, + Type: inventorypb.AgentType_QAN_MYSQL_PERFSCHEMA_AGENT, + Dsn: agent.DSN(service, time.Second, "", nil), + MaxQueryLength: agent.MaxQueryLength, + DisableQueryExamples: agent.QueryExamplesDisabled, + DisableCommentsParsing: agent.CommentsParsingDisabled, TextFiles: &agentpb.TextFiles{ Files: agent.Files(), TemplateLeftDelim: tdp.Left, @@ -166,11 +167,12 @@ func qanMySQLPerfSchemaAgentConfig(service *models.Service, agent *models.Agent) func qanMySQLSlowlogAgentConfig(service *models.Service, agent *models.Agent) *agentpb.SetStateRequest_BuiltinAgent { tdp := agent.TemplateDelimiters(service) return &agentpb.SetStateRequest_BuiltinAgent{ - Type: inventorypb.AgentType_QAN_MYSQL_SLOWLOG_AGENT, - Dsn: agent.DSN(service, time.Second, "", nil), - MaxQueryLength: agent.MaxQueryLength, - DisableQueryExamples: agent.QueryExamplesDisabled, - MaxQueryLogSize: agent.MaxQueryLogSize, + Type: inventorypb.AgentType_QAN_MYSQL_SLOWLOG_AGENT, + Dsn: agent.DSN(service, time.Second, "", nil), + MaxQueryLength: agent.MaxQueryLength, + DisableQueryExamples: agent.QueryExamplesDisabled, + DisableCommentsParsing: agent.CommentsParsingDisabled, + MaxQueryLogSize: agent.MaxQueryLogSize, TextFiles: &agentpb.TextFiles{ Files: agent.Files(), TemplateLeftDelim: tdp.Left, diff --git a/managed/services/agents/postgresql.go b/managed/services/agents/postgresql.go index 87c1e98a32..e3503ed638 100644 --- a/managed/services/agents/postgresql.go +++ b/managed/services/agents/postgresql.go @@ -103,13 +103,14 @@ func postgresExporterConfig(service *models.Service, exporter *models.Agent, red return res, nil } -// qanPostgreSQLPgStatementsAgentConfig returns desired configuration of qan-mongodb-profiler-agent built-in agent. +// qanPostgreSQLPgStatementsAgentConfig returns desired configuration of qan-postgresql-pgstatements-agent built-in agent. func qanPostgreSQLPgStatementsAgentConfig(service *models.Service, agent *models.Agent) *agentpb.SetStateRequest_BuiltinAgent { tdp := agent.TemplateDelimiters(service) return &agentpb.SetStateRequest_BuiltinAgent{ - Type: inventorypb.AgentType_QAN_POSTGRESQL_PGSTATEMENTS_AGENT, - Dsn: agent.DSN(service, 5*time.Second, service.DatabaseName, nil), - MaxQueryLength: agent.MaxQueryLength, + Type: inventorypb.AgentType_QAN_POSTGRESQL_PGSTATEMENTS_AGENT, + Dsn: agent.DSN(service, 5*time.Second, service.DatabaseName, nil), + MaxQueryLength: agent.MaxQueryLength, + DisableCommentsParsing: agent.CommentsParsingDisabled, TextFiles: &agentpb.TextFiles{ Files: agent.Files(), TemplateLeftDelim: tdp.Left, @@ -118,14 +119,15 @@ func qanPostgreSQLPgStatementsAgentConfig(service *models.Service, agent *models } } -// qanPostgreSQLPgStatMonitorAgentConfig returns desired configuration of qan-mongodb-profiler-agent built-in agent. +// qanPostgreSQLPgStatMonitorAgentConfig returns desired configuration of qan-postgresql-pgstatmonitor-agent built-in agent. func qanPostgreSQLPgStatMonitorAgentConfig(service *models.Service, agent *models.Agent) *agentpb.SetStateRequest_BuiltinAgent { tdp := agent.TemplateDelimiters(service) return &agentpb.SetStateRequest_BuiltinAgent{ - Type: inventorypb.AgentType_QAN_POSTGRESQL_PGSTATMONITOR_AGENT, - Dsn: agent.DSN(service, time.Second, service.DatabaseName, nil), - DisableQueryExamples: agent.QueryExamplesDisabled, - MaxQueryLength: agent.MaxQueryLength, + Type: inventorypb.AgentType_QAN_POSTGRESQL_PGSTATMONITOR_AGENT, + Dsn: agent.DSN(service, time.Second, service.DatabaseName, nil), + DisableQueryExamples: agent.QueryExamplesDisabled, + MaxQueryLength: agent.MaxQueryLength, + DisableCommentsParsing: agent.CommentsParsingDisabled, TextFiles: &agentpb.TextFiles{ Files: agent.Files(), TemplateLeftDelim: tdp.Left, diff --git a/managed/services/converters.go b/managed/services/converters.go index 7cf584d9d7..65b574094c 100644 --- a/managed/services/converters.go +++ b/managed/services/converters.go @@ -303,36 +303,38 @@ func ToAPIAgent(q *reform.Querier, agent *models.Agent) (inventorypb.Agent, erro case models.QANMySQLPerfSchemaAgentType: return &inventorypb.QANMySQLPerfSchemaAgent{ - AgentId: agent.AgentID, - PmmAgentId: pointer.GetString(agent.PMMAgentID), - ServiceId: serviceID, - Username: pointer.GetString(agent.Username), - Disabled: agent.Disabled, - Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), - CustomLabels: labels, - Tls: agent.TLS, - TlsSkipVerify: agent.TLSSkipVerify, - MaxQueryLength: agent.MaxQueryLength, - QueryExamplesDisabled: agent.QueryExamplesDisabled, - ProcessExecPath: processExecPath, - LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), + AgentId: agent.AgentID, + PmmAgentId: pointer.GetString(agent.PMMAgentID), + ServiceId: serviceID, + Username: pointer.GetString(agent.Username), + Disabled: agent.Disabled, + Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), + CustomLabels: labels, + Tls: agent.TLS, + TlsSkipVerify: agent.TLSSkipVerify, + MaxQueryLength: agent.MaxQueryLength, + QueryExamplesDisabled: agent.QueryExamplesDisabled, + DisableCommentsParsing: agent.CommentsParsingDisabled, + ProcessExecPath: processExecPath, + LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), }, nil case models.QANMySQLSlowlogAgentType: return &inventorypb.QANMySQLSlowlogAgent{ - AgentId: agent.AgentID, - PmmAgentId: pointer.GetString(agent.PMMAgentID), - ServiceId: serviceID, - Username: pointer.GetString(agent.Username), - Disabled: agent.Disabled, - Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), - CustomLabels: labels, - Tls: agent.TLS, - TlsSkipVerify: agent.TLSSkipVerify, - QueryExamplesDisabled: agent.QueryExamplesDisabled, - MaxSlowlogFileSize: agent.MaxQueryLogSize, - ProcessExecPath: processExecPath, - LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), + AgentId: agent.AgentID, + PmmAgentId: pointer.GetString(agent.PMMAgentID), + ServiceId: serviceID, + Username: pointer.GetString(agent.Username), + Disabled: agent.Disabled, + Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), + CustomLabels: labels, + Tls: agent.TLS, + TlsSkipVerify: agent.TLSSkipVerify, + QueryExamplesDisabled: agent.QueryExamplesDisabled, + DisableCommentsParsing: agent.CommentsParsingDisabled, + MaxSlowlogFileSize: agent.MaxQueryLogSize, + ProcessExecPath: processExecPath, + LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), }, nil case models.QANMongoDBProfilerAgentType: @@ -372,35 +374,37 @@ func ToAPIAgent(q *reform.Querier, agent *models.Agent) (inventorypb.Agent, erro case models.QANPostgreSQLPgStatementsAgentType: return &inventorypb.QANPostgreSQLPgStatementsAgent{ - AgentId: agent.AgentID, - PmmAgentId: pointer.GetString(agent.PMMAgentID), - ServiceId: serviceID, - Username: pointer.GetString(agent.Username), - Disabled: agent.Disabled, - Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), - CustomLabels: labels, - MaxQueryLength: agent.MaxQueryLength, - Tls: agent.TLS, - TlsSkipVerify: agent.TLSSkipVerify, - ProcessExecPath: processExecPath, - LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), + AgentId: agent.AgentID, + PmmAgentId: pointer.GetString(agent.PMMAgentID), + ServiceId: serviceID, + Username: pointer.GetString(agent.Username), + Disabled: agent.Disabled, + Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), + CustomLabels: labels, + MaxQueryLength: agent.MaxQueryLength, + DisableCommentsParsing: agent.CommentsParsingDisabled, + Tls: agent.TLS, + TlsSkipVerify: agent.TLSSkipVerify, + ProcessExecPath: processExecPath, + LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), }, nil case models.QANPostgreSQLPgStatMonitorAgentType: return &inventorypb.QANPostgreSQLPgStatMonitorAgent{ - AgentId: agent.AgentID, - PmmAgentId: pointer.GetString(agent.PMMAgentID), - ServiceId: serviceID, - Username: pointer.GetString(agent.Username), - Disabled: agent.Disabled, - Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), - CustomLabels: labels, - MaxQueryLength: agent.MaxQueryLength, - Tls: agent.TLS, - TlsSkipVerify: agent.TLSSkipVerify, - QueryExamplesDisabled: agent.QueryExamplesDisabled, - ProcessExecPath: processExecPath, - LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), + AgentId: agent.AgentID, + PmmAgentId: pointer.GetString(agent.PMMAgentID), + ServiceId: serviceID, + Username: pointer.GetString(agent.Username), + Disabled: agent.Disabled, + Status: inventorypb.AgentStatus(inventorypb.AgentStatus_value[agent.Status]), + CustomLabels: labels, + MaxQueryLength: agent.MaxQueryLength, + Tls: agent.TLS, + TlsSkipVerify: agent.TLSSkipVerify, + QueryExamplesDisabled: agent.QueryExamplesDisabled, + DisableCommentsParsing: agent.CommentsParsingDisabled, + ProcessExecPath: processExecPath, + LogLevel: inventorypb.LogLevel(inventorypb.LogLevel_value[pointer.GetString(agent.LogLevel)]), }, nil case models.RDSExporterType: diff --git a/managed/services/inventory/agents.go b/managed/services/inventory/agents.go index 82b566549e..534706afb4 100644 --- a/managed/services/inventory/agents.go +++ b/managed/services/inventory/agents.go @@ -366,17 +366,18 @@ func (as *AgentsService) AddQANMySQLPerfSchemaAgent(ctx context.Context, req *in var res *inventorypb.QANMySQLPerfSchemaAgent e := as.db.InTransaction(func(tx *reform.TX) error { params := &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: req.ServiceId, - Username: req.Username, - Password: req.Password, - CustomLabels: req.CustomLabels, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - MySQLOptions: models.MySQLOptionsFromRequest(req), - MaxQueryLength: req.MaxQueryLength, - QueryExamplesDisabled: req.DisableQueryExamples, - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: req.ServiceId, + Username: req.Username, + Password: req.Password, + CustomLabels: req.CustomLabels, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + MySQLOptions: models.MySQLOptionsFromRequest(req), + MaxQueryLength: req.MaxQueryLength, + QueryExamplesDisabled: req.DisableQueryExamples, + CommentsParsingDisabled: req.DisableCommentsParsing, + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), } row, err := models.CreateAgent(tx.Querier, models.QANMySQLPerfSchemaAgentType, params) if err != nil { @@ -431,18 +432,19 @@ func (as *AgentsService) AddQANMySQLSlowlogAgent(ctx context.Context, req *inven } params := &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: req.ServiceId, - Username: req.Username, - Password: req.Password, - CustomLabels: req.CustomLabels, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - MySQLOptions: models.MySQLOptionsFromRequest(req), - MaxQueryLength: req.MaxQueryLength, - QueryExamplesDisabled: req.DisableQueryExamples, - MaxQueryLogSize: maxSlowlogFileSize, - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: req.ServiceId, + Username: req.Username, + Password: req.Password, + CustomLabels: req.CustomLabels, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + MySQLOptions: models.MySQLOptionsFromRequest(req), + MaxQueryLength: req.MaxQueryLength, + QueryExamplesDisabled: req.DisableQueryExamples, + CommentsParsingDisabled: req.DisableCommentsParsing, + MaxQueryLogSize: maxSlowlogFileSize, + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), } row, err := models.CreateAgent(tx.Querier, models.QANMySQLSlowlogAgentType, params) if err != nil { @@ -676,16 +678,17 @@ func (as *AgentsService) AddQANPostgreSQLPgStatementsAgent(ctx context.Context, var res *inventorypb.QANPostgreSQLPgStatementsAgent e := as.db.InTransaction(func(tx *reform.TX) error { params := &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: req.ServiceId, - Username: req.Username, - Password: req.Password, - CustomLabels: req.CustomLabels, - MaxQueryLength: req.MaxQueryLength, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: req.ServiceId, + Username: req.Username, + Password: req.Password, + CustomLabels: req.CustomLabels, + MaxQueryLength: req.MaxQueryLength, + CommentsParsingDisabled: req.DisableCommentsParsing, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), } row, err := models.CreateAgent(tx.Querier, models.QANPostgreSQLPgStatementsAgentType, params) if err != nil { @@ -736,17 +739,18 @@ func (as *AgentsService) AddQANPostgreSQLPgStatMonitorAgent(ctx context.Context, var res *inventorypb.QANPostgreSQLPgStatMonitorAgent e := as.db.InTransaction(func(tx *reform.TX) error { params := &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: req.ServiceId, - Username: req.Username, - Password: req.Password, - MaxQueryLength: req.MaxQueryLength, - QueryExamplesDisabled: req.DisableQueryExamples, - CustomLabels: req.CustomLabels, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: req.ServiceId, + Username: req.Username, + Password: req.Password, + MaxQueryLength: req.MaxQueryLength, + QueryExamplesDisabled: req.DisableQueryExamples, + CommentsParsingDisabled: req.DisableCommentsParsing, + CustomLabels: req.CustomLabels, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), } row, err := models.CreateAgent(tx.Querier, models.QANPostgreSQLPgStatMonitorAgentType, params) if err != nil { diff --git a/managed/services/management/agent.go b/managed/services/management/agent.go index 79111cd64b..645c31c7f9 100644 --- a/managed/services/management/agent.go +++ b/managed/services/management/agent.go @@ -157,6 +157,7 @@ func (s *AgentService) agentToAPI(agent *models.Agent) (*agentv1beta1.UniversalA ProcessExecPath: pointer.GetString(agent.ProcessExecPath), PushMetrics: agent.PushMetrics, QueryExamplesDisabled: agent.QueryExamplesDisabled, + CommentsParsingDisabled: agent.CommentsParsingDisabled, RdsBasicMetricsDisabled: agent.RDSBasicMetricsDisabled, RdsEnhancedMetricsDisabled: agent.RDSEnhancedMetricsDisabled, RunsOnNodeId: pointer.GetString(agent.RunsOnNodeID), diff --git a/managed/services/management/agent_test.go b/managed/services/management/agent_test.go index 297a9486f6..b79b6f1a14 100644 --- a/managed/services/management/agent_test.go +++ b/managed/services/management/agent_test.go @@ -133,9 +133,10 @@ func TestAgentService(t *testing.T) { SslCert: "", IsSslKeySet: false, }, - ServiceId: "/service_id/00000000-0000-4000-8000-000000000002", - Status: "UNKNOWN", - Tls: true, + ServiceId: "/service_id/00000000-0000-4000-8000-000000000002", + Status: "UNKNOWN", + Tls: true, + CommentsParsingDisabled: true, }, { AgentId: pgStatStatementID, @@ -150,9 +151,10 @@ func TestAgentService(t *testing.T) { SslCert: "", IsSslKeySet: false, }, - ServiceId: "/service_id/00000000-0000-4000-8000-000000000002", - Status: "UNKNOWN", - Tls: true, + ServiceId: "/service_id/00000000-0000-4000-8000-000000000002", + Status: "UNKNOWN", + Tls: true, + CommentsParsingDisabled: true, }, { AgentId: models.PMMServerAgentID, diff --git a/managed/services/management/mysql.go b/managed/services/management/mysql.go index 8eeab76130..5493bbdffb 100644 --- a/managed/services/management/mysql.go +++ b/managed/services/management/mysql.go @@ -137,16 +137,17 @@ func (s *MySQLService) Add(ctx context.Context, req *managementpb.AddMySQLReques if req.QanMysqlPerfschema { row, err = models.CreateAgent(tx.Querier, models.QANMySQLPerfSchemaAgentType, &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: service.ServiceID, - Username: req.Username, - Password: req.Password, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - MySQLOptions: models.MySQLOptionsFromRequest(req), - MaxQueryLength: req.MaxQueryLength, - QueryExamplesDisabled: req.DisableQueryExamples, - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: service.ServiceID, + Username: req.Username, + Password: req.Password, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + MySQLOptions: models.MySQLOptionsFromRequest(req), + MaxQueryLength: req.MaxQueryLength, + QueryExamplesDisabled: req.DisableQueryExamples, + CommentsParsingDisabled: req.DisableCommentsParsing, + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), }) if err != nil { return err @@ -161,17 +162,18 @@ func (s *MySQLService) Add(ctx context.Context, req *managementpb.AddMySQLReques if req.QanMysqlSlowlog { row, err = models.CreateAgent(tx.Querier, models.QANMySQLSlowlogAgentType, &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: service.ServiceID, - Username: req.Username, - Password: req.Password, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - MySQLOptions: models.MySQLOptionsFromRequest(req), - MaxQueryLength: req.MaxQueryLength, - QueryExamplesDisabled: req.DisableQueryExamples, - MaxQueryLogSize: maxSlowlogFileSize, - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: service.ServiceID, + Username: req.Username, + Password: req.Password, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + MySQLOptions: models.MySQLOptionsFromRequest(req), + MaxQueryLength: req.MaxQueryLength, + QueryExamplesDisabled: req.DisableQueryExamples, + CommentsParsingDisabled: req.DisableCommentsParsing, + MaxQueryLogSize: maxSlowlogFileSize, + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), }) if err != nil { return err diff --git a/managed/services/management/postgresql.go b/managed/services/management/postgresql.go index 0470970e2d..dfdf559fa4 100644 --- a/managed/services/management/postgresql.go +++ b/managed/services/management/postgresql.go @@ -111,15 +111,17 @@ func (s *PostgreSQLService) Add(ctx context.Context, req *managementpb.AddPostgr if req.QanPostgresqlPgstatementsAgent { row, err = models.CreateAgent(tx.Querier, models.QANPostgreSQLPgStatementsAgentType, &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: service.ServiceID, - Username: req.Username, - Password: req.Password, - MaxQueryLength: req.MaxQueryLength, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: service.ServiceID, + Username: req.Username, + Password: req.Password, + MaxQueryLength: req.MaxQueryLength, + QueryExamplesDisabled: req.DisableQueryExamples, + CommentsParsingDisabled: req.DisableCommentsParsing, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), }) if err != nil { return err @@ -134,16 +136,17 @@ func (s *PostgreSQLService) Add(ctx context.Context, req *managementpb.AddPostgr if req.QanPostgresqlPgstatmonitorAgent { row, err = models.CreateAgent(tx.Querier, models.QANPostgreSQLPgStatMonitorAgentType, &models.CreateAgentParams{ - PMMAgentID: req.PmmAgentId, - ServiceID: service.ServiceID, - Username: req.Username, - Password: req.Password, - MaxQueryLength: req.MaxQueryLength, - QueryExamplesDisabled: req.DisableQueryExamples, - TLS: req.Tls, - TLSSkipVerify: req.TlsSkipVerify, - PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), - LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), + PMMAgentID: req.PmmAgentId, + ServiceID: service.ServiceID, + Username: req.Username, + Password: req.Password, + MaxQueryLength: req.MaxQueryLength, + QueryExamplesDisabled: req.DisableQueryExamples, + CommentsParsingDisabled: req.DisableCommentsParsing, + TLS: req.Tls, + TLSSkipVerify: req.TlsSkipVerify, + PostgreSQLOptions: models.PostgreSQLOptionsFromRequest(req), + LogLevel: services.SpecifyLogLevel(req.LogLevel, inventorypb.LogLevel_fatal), }) if err != nil { return err diff --git a/managed/services/qan/client.go b/managed/services/qan/client.go index cd212bf958..f9cfd2ba5b 100644 --- a/managed/services/qan/client.go +++ b/managed/services/qan/client.go @@ -189,6 +189,7 @@ func (c *Client) Collect(ctx context.Context, metricsBuckets []*agentpb.MetricsB c.l.Error(err) continue } + mb := &qanpb.MetricsBucket{ Queryid: m.Common.Queryid, ExplainFingerprint: m.Common.ExplainFingerprint, @@ -269,6 +270,9 @@ func (c *Client) Collect(ctx context.Context, metricsBuckets []*agentpb.MetricsB delete(labels, labelName) } + for k, l := range m.Common.Comments { + labels[k] = l + } mb.Labels = labels convertedMetricsBuckets = append(convertedMetricsBuckets, mb) diff --git a/qan-api2/Makefile b/qan-api2/Makefile index 90cac0b9b8..58fdadc243 100644 --- a/qan-api2/Makefile +++ b/qan-api2/Makefile @@ -32,6 +32,13 @@ install-race: ## Install qan-api2 binary with race detector test-env-up: ## Start docker containers used for testing docker run -d --platform=linux/amd64 --name pmm-clickhouse-test -p19000:9000 yandex/clickhouse-server:21.3.20 + make test-env + +test-env-up-applem1: ## Start docker containers used for testing on Apple M1 and higher chips. + docker run -d --platform=linux/amd64 --name pmm-clickhouse-test -p19000:9000 clickhouse/clickhouse-server:head-alpine + make test-env + +test-env: sleep 10 docker exec pmm-clickhouse-test clickhouse client --query="CREATE DATABASE IF NOT EXISTS pmm_test;" cat migrations/sql/*.up.sql | docker exec -i pmm-clickhouse-test clickhouse client -d pmm_test --multiline --multiquery diff --git a/qan-api2/models/reporter.go b/qan-api2/models/reporter.go index effbd00522..9d00088f96 100644 --- a/qan-api2/models/reporter.go +++ b/qan-api2/models/reporter.go @@ -95,7 +95,7 @@ WHERE period_start >= :period_start_from AND period_start <= :period_start_to {{ end }} {{ if .Labels }}{{$i := 0}} AND ({{range $key, $vals := .Labels }}{{ $i = inc $i}} - {{ if gt $i 1}} OR {{ end }} has(['{{ StringsJoin $vals "', '" }}'], labels.value[indexOf(labels.key, '{{ $key }}')]) + {{ if gt $i 1}} AND {{ end }} has(['{{ StringsJoin $vals "', '" }}'], labels.value[indexOf(labels.key, '{{ $key }}')]) {{ end }}) {{ end }} GROUP BY {{ .Group }} @@ -472,14 +472,14 @@ var ( // SelectFilters selects dimension and their values, and also keys and values of labels. func (r *Reporter) SelectFilters(ctx context.Context, periodStartFromSec, periodStartToSec int64, mainMetricName string, dimensions, labels map[string][]string) (*qanpb.FiltersReply, error) { //nolint:lll - result := qanpb.FiltersReply{ - Labels: make(map[string]*qanpb.ListLabels), - } - if !isValidMetricColumn(mainMetricName) { return nil, fmt.Errorf("invalid main metric name %s", mainMetricName) } + result := qanpb.FiltersReply{ + Labels: r.commentsIntoGroupLabels(ctx, periodStartFromSec, periodStartToSec), + } + for dimensionName, dimensionQuery := range dimensionQueries { subDimensions := make(map[string][]string) for k, v := range dimensions { @@ -583,3 +583,84 @@ func (r *Reporter) queryFilters(ctx context.Context, periodStartFromSec, return labels, totalMainMetricPerSec, nil } + +const queryLabels = ` +SELECT + labels.key, + labels.value +FROM metrics +WHERE (period_start >= ?) AND (period_start <= ?) +ORDER BY + labels.value ASC +` + +type customLabelArray struct { + keys []string + values []string +} + +func (r *Reporter) queryLabels(ctx context.Context, periodStartFromSec, + periodStartToSec int64, +) ([]*customLabelArray, error) { + var labels []*customLabelArray + + rows, err := r.db.QueryContext(ctx, queryLabels, periodStartFromSec, periodStartToSec) + if err != nil { + return nil, errors.Wrapf(err, "failed to select for QueryFilter %s", queryLabels) + } + defer rows.Close() //nolint:errcheck + + for rows.Next() { + var label customLabelArray + err = rows.Scan(&label.keys, &label.values) + if err != nil { + return nil, errors.Wrapf(err, "failed to scan for QueryFilter %s", queryLabels) + } + labels = append(labels, &label) + } + if err = rows.Err(); err != nil { + return nil, errors.Wrapf(err, "failed to select for QueryFilter %s", queryLabels) + } + + return labels, nil +} + +// commentsIntoGroupLabels parse labels and comment labels into filter groups and values. +func (r *Reporter) commentsIntoGroupLabels(ctx context.Context, periodStartFromSec, periodStartToSec int64) map[string]*qanpb.ListLabels { + groupLabels := make(map[string]*qanpb.ListLabels) + + labelKeysValues, err := r.queryLabels(ctx, periodStartFromSec, periodStartToSec) + if err != nil { + return groupLabels + } + + count := len(labelKeysValues) + res := make(map[string]map[string]float32) + for _, label := range labelKeysValues { + for index, key := range label.keys { + if _, ok := res[key]; !ok { + res[key] = make(map[string]float32) + } + + res[key][label.values[index]]++ + } + } + + for key, values := range res { + if _, ok := groupLabels[key]; !ok { + groupLabels[key] = &qanpb.ListLabels{ + Name: []*qanpb.Values{}, + } + } + + for k, v := range values { + val := qanpb.Values{ + Value: k, + MainMetricPercent: v / float32(count), + } + groupLabels[key].Name = append(groupLabels[key].Name, &val) + } + } + + return groupLabels +} diff --git a/qan-api2/services/analytics/filters_test.go b/qan-api2/services/analytics/filters_test.go index 333ffc33d1..c32b16c5b3 100644 --- a/qan-api2/services/analytics/filters_test.go +++ b/qan-api2/services/analytics/filters_test.go @@ -18,6 +18,7 @@ package analytics import ( "context" + "encoding/json" "log" "os" "testing" @@ -25,7 +26,6 @@ import ( _ "github.com/ClickHouse/clickhouse-go/151" // register database/sql driver // TODO replace with 'google.golang.org/protobuf/encoding/protojson' since this one is deprecated - "github.com/golang/protobuf/jsonpb" //nolint:staticcheck "github.com/golang/protobuf/ptypes/timestamp" "github.com/jmoiron/sqlx" "github.com/stretchr/testify/assert" @@ -34,6 +34,24 @@ import ( "github.com/percona/pmm/qan-api2/models" ) +type expected struct { + Labels map[string]listLabels `json:"labels,omitempty"` +} + +type listLabels struct { + Name []testValuesUnmarshal `json:"name,omitempty"` +} +type testValues struct { + MainMetricPercent float32 `json:"mainMetricPercent,omitempty"` + MainMetricPerSec float32 `json:"mainMetricPerSec,omitempty"` +} + +type testValuesUnmarshal struct { + Value string `json:"value,omitempty"` + MainMetricPercent any `json:"mainMetricPercent,omitempty"` + MainMetricPerSec any `json:"mainMetricPerSec,omitempty"` +} + func TestService_GetFilters(t *testing.T) { dsn, ok := os.LookupEnv("QANAPI_DSN_TEST") if !ok { @@ -172,13 +190,51 @@ func TestService_GetFilters(t *testing.T) { assert.Nil(t, got, "Service.GetFilters() return not nil") return } + + valuesGot := make(map[string]map[string]testValues) + for k, l := range got.Labels { + if _, ok := valuesGot[k]; !ok { + valuesGot[k] = make(map[string]testValues) + } + for _, v := range l.Name { + valuesGot[k][v.Value] = testValues{ + MainMetricPercent: v.MainMetricPercent, + MainMetricPerSec: v.MainMetricPerSec, + } + } + } + expectedJSON := getExpectedJSON(t, got, "../../test_data/TestService_GetFilters_"+tt.name+".json") - marshaler := jsonpb.Marshaler{Indent: " "} - gotJSON, err := marshaler.MarshalToString(got) + var unmarshal expected + err = json.Unmarshal(expectedJSON, &unmarshal) if err != nil { - t.Errorf("cannot marshal:%v", err) + t.Errorf("cannot unmarshal:%v", err) } - assert.JSONEq(t, string(expectedJSON), gotJSON) + + valuesExpected := make(map[string]map[string]testValues) + for k, l := range unmarshal.Labels { + if _, ok := valuesExpected[k]; !ok { + valuesExpected[k] = make(map[string]testValues) + } + for _, v := range l.Name { + percent := float32(0) + if p, ok := v.MainMetricPercent.(float64); ok { + percent = float32(p) + } + + perSec := float32(0) + if p, ok := v.MainMetricPerSec.(float64); ok { + perSec = float32(p) + } + + valuesExpected[k][v.Value] = testValues{ + MainMetricPercent: percent, + MainMetricPerSec: perSec, + } + } + } + + assert.ObjectsAreEqual(valuesExpected, valuesGot) }) } } diff --git a/qan-api2/test_data/TestService_GetFilters_success.json b/qan-api2/test_data/TestService_GetFilters_success.json index 3d0f582779..23d3afdd14 100644 --- a/qan-api2/test_data/TestService_GetFilters_success.json +++ b/qan-api2/test_data/TestService_GetFilters_success.json @@ -273,6 +273,606 @@ } ] }, + "label0": { + "name": [ + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value57", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value82", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value68", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value88", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value1", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label1": { + "name": [ + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value66", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value89", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label2": { + "name": [ + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value63", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value24", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value33", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value59", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label3": { + "name": [ + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value12", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value97", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value50", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value73", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label4": { + "name": [ + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value85", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value8", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value80", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label5": { + "name": [ + { + "value": "value48", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value56", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value21", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label6": { + "name": [ + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value22", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value98", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label7": { + "name": [ + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value72", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value14", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value60", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value20", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label8": { + "name": [ + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value81", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value7", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value99", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label9": { + "name": [ + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value65", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value46", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value76", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + } + ] + }, "machine_id": { "name": [ { diff --git a/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_client_host_schema_service_name.json b/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_client_host_schema_service_name.json index 8b5c2fa3ab..f0b31a6931 100644 --- a/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_client_host_schema_service_name.json +++ b/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_client_host_schema_service_name.json @@ -209,6 +209,606 @@ } ] }, + "label0": { + "name": [ + { + "value": "value57", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value1", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value68", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value82", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value88", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label1": { + "name": [ + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value66", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value89", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label2": { + "name": [ + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value24", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value63", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value59", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value33", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label3": { + "name": [ + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value12", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value73", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value97", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value50", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label4": { + "name": [ + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value85", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value80", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value8", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label5": { + "name": [ + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value48", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value21", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value56", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label6": { + "name": [ + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value98", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value22", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label7": { + "name": [ + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value20", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value72", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value14", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value60", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label8": { + "name": [ + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value81", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value7", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value99", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label9": { + "name": [ + { + "value": "value76", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value46", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value65", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + } + ] + }, "machine_id": { "name": [ { diff --git a/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_multiple.json b/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_multiple.json index 70f3ae6833..2b43aef1e1 100644 --- a/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_multiple.json +++ b/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_multiple.json @@ -225,6 +225,606 @@ } ] }, + "label0": { + "name": [ + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value82", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value57", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value88", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value1", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value68", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label1": { + "name": [ + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value66", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value89", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label2": { + "name": [ + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value24", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value33", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value59", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value63", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label3": { + "name": [ + { + "value": "value12", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value73", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value97", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value50", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label4": { + "name": [ + { + "value": "value80", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value8", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value85", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label5": { + "name": [ + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value21", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value56", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value48", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label6": { + "name": [ + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value22", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value98", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label7": { + "name": [ + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value14", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value72", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value60", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value20", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label8": { + "name": [ + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value99", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value81", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value7", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label9": { + "name": [ + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value65", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value46", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value76", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + } + ] + }, "machine_id": { "name": [ { diff --git a/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_username.json b/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_username.json index f48d9bc412..e0d4e0fb7c 100644 --- a/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_username.json +++ b/qan-api2/test_data/TestService_GetFilters_success_with_dimensions_username.json @@ -199,6 +199,606 @@ } ] }, + "label0": { + "name": [ + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value88", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value1", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value82", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value68", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value57", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label1": { + "name": [ + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value89", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value66", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label2": { + "name": [ + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value63", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value59", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value24", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value33", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label3": { + "name": [ + { + "value": "value73", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value12", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value50", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value97", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label4": { + "name": [ + { + "value": "value80", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value85", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value8", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label5": { + "name": [ + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value21", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value56", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value48", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label6": { + "name": [ + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value22", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value98", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label7": { + "name": [ + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value20", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value14", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value60", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value72", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label8": { + "name": [ + { + "value": "value99", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value81", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value7", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label9": { + "name": [ + { + "value": "value46", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value76", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value65", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + } + ] + }, "machine_id": { "name": [ { diff --git a/qan-api2/test_data/TestService_GetFilters_success_with_labels.json b/qan-api2/test_data/TestService_GetFilters_success_with_labels.json index 3d0f582779..24a3109903 100644 --- a/qan-api2/test_data/TestService_GetFilters_success_with_labels.json +++ b/qan-api2/test_data/TestService_GetFilters_success_with_labels.json @@ -273,6 +273,606 @@ } ] }, + "label0": { + "name": [ + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value82", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value57", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value1", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value68", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value88", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label1": { + "name": [ + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value92", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value66", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value89", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label2": { + "name": [ + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value59", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value24", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value33", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value36", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value63", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label3": { + "name": [ + { + "value": "value12", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value50", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value73", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value97", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label4": { + "name": [ + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value85", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value8", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value80", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value75", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label5": { + "name": [ + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value93", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value48", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value56", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value52", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value21", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value3", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value39", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label6": { + "name": [ + { + "value": "value9", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value49", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value13", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value51", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value90", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value5", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value22", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value98", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label7": { + "name": [ + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value74", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value0", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value10", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value61", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value23", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value27", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value72", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value20", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value86", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value79", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value14", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value60", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value64", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value9", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label8": { + "name": [ + { + "value": "value71", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value7", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value32", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value28", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value38", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value81", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value45", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value37", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value62", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value25", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value70", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value42", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value99", + "mainMetricPercent": 0.006802721 + } + ] + }, + "label9": { + "name": [ + { + "value": "value46", + "mainMetricPercent": 0.013605442 + }, + { + "value": "value76", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value58", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value95", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value35", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value83", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value65", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value41", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value29", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value26", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value40", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value43", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value55", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value11", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value16", + "mainMetricPercent": 0.006802721 + }, + { + "value": "value71", + "mainMetricPercent": 0.006802721 + } + ] + }, "machine_id": { "name": [ { From 7e38b0ee20e22c069dbc9f8c6c682a6bd7d45161 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Mon, 12 Jun 2023 15:11:45 +0200 Subject: [PATCH 033/123] PMM-12175 Update pmm.ini file to get new postgresql (#2260) --- update/ansible/playbook/tasks/update.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/update/ansible/playbook/tasks/update.yml b/update/ansible/playbook/tasks/update.yml index 2df7d2bf3a..5cc426f187 100644 --- a/update/ansible/playbook/tasks/update.yml +++ b/update/ansible/playbook/tasks/update.yml @@ -62,6 +62,10 @@ register: managed_init_result changed_when: True + - name: Update postgresql version + command: sed -i 's:-D /srv/postgres$:-D /srv/postgres14:; s:/usr/pgsql/bin/postgres:/usr/pgsql-14/bin/postgres:; s:/srv/logs/postgresql.log:/srv/logs/postgresql14.log:' /etc/supervisord.d/pmm.ini + changed_when: true + - name: Disable pmm-update-perform-init ini_file: path: /etc/supervisord.d/pmm.ini From a11438dc384ed47a8938a3c4f206129d5f3a6ef4 Mon Sep 17 00:00:00 2001 From: Michael Okoko <10512379+idoqo@users.noreply.github.com> Date: Tue, 13 Jun 2023 10:11:39 +0100 Subject: [PATCH 034/123] drop label from description (#2183) --- managed/data/iatemplates/mysql_replication_io_running.yml | 1 - managed/data/iatemplates/mysql_replication_sql_running.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/managed/data/iatemplates/mysql_replication_io_running.yml b/managed/data/iatemplates/mysql_replication_io_running.yml index a21f7c21f3..d9e895089c 100644 --- a/managed/data/iatemplates/mysql_replication_io_running.yml +++ b/managed/data/iatemplates/mysql_replication_io_running.yml @@ -11,5 +11,4 @@ templates: description: |- MySQL Replication Not Running on {{ $labels.instance }} VALUE = {{ $value }} - LABELS: {{ $labels }} summary: MySQL Replication Not Running on (instance {{ $labels.instance }}) diff --git a/managed/data/iatemplates/mysql_replication_sql_running.yml b/managed/data/iatemplates/mysql_replication_sql_running.yml index 194f5fd176..6b312deecf 100644 --- a/managed/data/iatemplates/mysql_replication_sql_running.yml +++ b/managed/data/iatemplates/mysql_replication_sql_running.yml @@ -11,5 +11,4 @@ templates: description: |- MySQL Replication Not Running on {{ $labels.instance }} VALUE = {{ $value }} - LABELS: {{ $labels }} summary: MySQL Replication Not Running on (instance {{ $labels.instance }}) From 2e0f242890cc50f71d8663de0d75df6b1d99f16e Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 13 Jun 2023 12:08:47 +0200 Subject: [PATCH 035/123] PMM-7 fix pg version in ini file (#2265) --- update/ansible/playbook/tasks/update.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/update/ansible/playbook/tasks/update.yml b/update/ansible/playbook/tasks/update.yml index 5cc426f187..e0e8322352 100644 --- a/update/ansible/playbook/tasks/update.yml +++ b/update/ansible/playbook/tasks/update.yml @@ -62,8 +62,16 @@ register: managed_init_result changed_when: True - - name: Update postgresql version - command: sed -i 's:-D /srv/postgres$:-D /srv/postgres14:; s:/usr/pgsql/bin/postgres:/usr/pgsql-14/bin/postgres:; s:/srv/logs/postgresql.log:/srv/logs/postgresql14.log:' /etc/supervisord.d/pmm.ini + - name: Update postgresql version_1 + command: sed -i 's:-D /srv/postgres$:-D /srv/postgres14:' /etc/supervisord.d/pmm.ini + changed_when: true + + - name: Update postgresql version_2 + command: sed -i 's:/usr/pgsql/bin/postgres:/usr/pgsql-14/bin/postgres:' /etc/supervisord.d/pmm.ini + changed_when: true + + - name: Update postgresql version_3 + command: sed -i 's:/srv/logs/postgresql.log:/srv/logs/postgresql14.log:' /etc/supervisord.d/pmm.ini changed_when: true - name: Disable pmm-update-perform-init From d3cc54b82fe78da150438053baade655695e1eac Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 13 Jun 2023 12:53:39 +0200 Subject: [PATCH 036/123] PMM-7 Update update.yml (#2266) --- update/ansible/playbook/tasks/update.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/update/ansible/playbook/tasks/update.yml b/update/ansible/playbook/tasks/update.yml index e0e8322352..5419554e9f 100644 --- a/update/ansible/playbook/tasks/update.yml +++ b/update/ansible/playbook/tasks/update.yml @@ -74,6 +74,10 @@ command: sed -i 's:/srv/logs/postgresql.log:/srv/logs/postgresql14.log:' /etc/supervisord.d/pmm.ini changed_when: true + - name: Update postgresql version_4 + command: sed -i 's:/usr/pgsql-11/bin/postgres:/usr/pgsql-14/bin/postgres:' /etc/supervisord.d/pmm.ini + changed_when: true + - name: Disable pmm-update-perform-init ini_file: path: /etc/supervisord.d/pmm.ini From 9352bd3e43525e05608837a3be94ac310886ef73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20=C4=8Ctvrtka?= <62988319+JiriCtvrtka@users.noreply.github.com> Date: Tue, 13 Jun 2023 16:01:39 +0200 Subject: [PATCH 037/123] PMM-12175 Update - Remove supervisorctl path. (#2267) * PMM-12175 Remove supervisorctl path. * PMM-12175 Fix. --- .../playbook/tasks/roles/dashboards_upgrade/tasks/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml index cda0d9ed08..c7349ab6c2 100644 --- a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml @@ -61,7 +61,6 @@ supervisorctl: name: grafana state: stopped - supervisorctl_path: supervisorctl become: true when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' ignore_errors: true @@ -101,7 +100,6 @@ supervisorctl: name: grafana state: restarted - supervisorctl_path: supervisorctl become: true ignore_errors: true when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' From cf9b201b18746ccfd151bb534323bb0a4bf507b1 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Tue, 13 Jun 2023 19:39:33 +0300 Subject: [PATCH 038/123] PMM-7 fix several CI issues (#2264) * PMM-7 fix several CI issues * PMM-7 use the dedicated Makefile target * PMM-7 bump up Go version * PMM-7 add a tag to skip lint errors * PMM-7 revert using a Makefile target * PMM-7 fix the failing lint check * PMM-7 try docker compose * PMM-7 fix install-dev-tools target * PMM-7 tweak the tags to make it pass * PMM-7 add a delay prior to installing dev tools * PMM-7 put back the original run command * PMM-7 fix the path * PMM-7 fix a failing yum clean for OL9 * PMM-7 do not clean metadata on OL9 * PMM-7 install ansible-lint from a different repo * PMM-7 fix error in the yum command * PMM-7 fix git dir ownership * PMM-7 mute the linter errors * PMM-7 add one more rule to warn_list * PMM-7 add ignore-errors to lint wanings * PMM-7 add newline * PMM-7 add a comment * PMM-7 move target to another makefile --- .github/workflows/update.yml | 2 +- build/docker/rpmbuild/Dockerfile | 2 +- build/docker/rpmbuild/Dockerfile.el9 | 2 +- build/docker/server/Dockerfile.el9 | 2 +- update/.ansible-lint | 13 ++++++++-- update/.devcontainer/install-dev-tools.sh | 26 ++++++++++--------- update/Makefile | 8 +++--- .../tasks/roles/clickhouse/tasks/main.yml | 8 +++--- update/ansible/playbook/tasks/update.yml | 4 +++ 9 files changed, 42 insertions(+), 25 deletions(-) diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index a6cf2ba771..a1ea10e660 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -45,7 +45,7 @@ jobs: uses: actions/checkout@v3 - name: Docker Up - run: docker-compose up -d + run: docker compose up -d - name: Install dev tools in container run: docker exec pmm-update-server /root/go/src/github.com/percona/pmm/update/.devcontainer/install-dev-tools.sh diff --git a/build/docker/rpmbuild/Dockerfile b/build/docker/rpmbuild/Dockerfile index ce3e7cadaa..72520d0807 100644 --- a/build/docker/rpmbuild/Dockerfile +++ b/build/docker/rpmbuild/Dockerfile @@ -23,7 +23,7 @@ RUN yum update -y && \ yum clean all && rm -rf /var/cache/yum # keep that format for easier search -ENV GO_VERSION 1.20.1 +ENV GO_VERSION 1.20.5 ENV GO_RELEASER_VERSION 1.15.2 RUN if [ `uname -i` == "x86_64" ]; then ARCH=amd64; else ARCH=arm64; fi && \ diff --git a/build/docker/rpmbuild/Dockerfile.el9 b/build/docker/rpmbuild/Dockerfile.el9 index 1f0553d344..223ccb1af7 100644 --- a/build/docker/rpmbuild/Dockerfile.el9 +++ b/build/docker/rpmbuild/Dockerfile.el9 @@ -24,7 +24,7 @@ RUN yum update -y && \ yum clean all && rm -rf /var/cache/yum # keep that format for easier search -ENV GO_VERSION 1.20.1 +ENV GO_VERSION 1.20.5 ENV GO_RELEASER_VERSION 1.15.2 RUN if [ `uname -i` == "x86_64" ]; then ARCH=amd64; else ARCH=arm64; fi && \ diff --git a/build/docker/server/Dockerfile.el9 b/build/docker/server/Dockerfile.el9 index ff9f5d2b3a..45db578d46 100644 --- a/build/docker/server/Dockerfile.el9 +++ b/build/docker/server/Dockerfile.el9 @@ -24,7 +24,7 @@ WORKDIR /opt RUN microdnf -y install yum && yum -y install python3-pip && \ yum -y install oracle-epel-release-el9 ansible-core && \ yum -y install epel-release && \ - yum -y install ansible + yum -y install ansible vi COPY RPMS /tmp/RPMS COPY gitCommit /tmp/gitCommit diff --git a/update/.ansible-lint b/update/.ansible-lint index 15133722a9..29c64847a3 100644 --- a/update/.ansible-lint +++ b/update/.ansible-lint @@ -1,4 +1,13 @@ --- +# https://ansible.readthedocs.io/projects/lint/configuring/#ansible-lint-configuration + skip_list: - - "303" # "supervisorctl used in place of supervisorctl module" - but we need more control - - "403" # "Package installs should not use latest" - but we need it + - "303" # "supervisorctl used in place of supervisorctl module" - we need more control + - "403" # "Package installs should not use latest" - we need latest + +warn_list: # don't move to 'skip_list' - it will silence them completely + - literal-compare # Don't compare to literal True/False + - risky-file-permissions # File permissions unset or incorrect + - no-changed-when # Commands should not change things if nothing needs doing + - parser-error # AnsibleParserError + - ignore-errors # Use failed_when and specify error conditions instead of using ignore_errors diff --git a/update/.devcontainer/install-dev-tools.sh b/update/.devcontainer/install-dev-tools.sh index dda62aea54..861f1aeed9 100755 --- a/update/.devcontainer/install-dev-tools.sh +++ b/update/.devcontainer/install-dev-tools.sh @@ -8,7 +8,7 @@ set -o errexit set -o xtrace # download (in the background) the same verison as used by PMM build process -curl -sS https://dl.google.com/go/go1.20.4.linux-amd64.tar.gz -o /tmp/golang.tar.gz & +curl -sS https://dl.google.com/go/go1.20.5.linux-amd64.tar.gz -o /tmp/golang.tar.gz & # to install man pages sed -i '/nodocs/d' /etc/yum.conf @@ -17,26 +17,29 @@ sed -i '/nodocs/d' /etc/yum.conf sed -i'' -e 's^/release/^/experimental/^' /etc/yum.repos.d/pmm2-server.repo percona-release enable original testing -# this mirror always fails, on both AWS and github -echo "exclude=mirror.es.its.nyu.edu" >> /etc/yum/pluginconf.d/fastestmirror.conf -yum clean plugins -# https://stackoverflow.com/questions/26734777/yum-error-cannot-retrieve-metalink-for-repository-epel-please-verify-its-path -sed -i "s/metalink=https/metalink=http/" /etc/yum.repos.d/epel.repo +RHEL=$(rpm --eval '%{rhel}') +if [ "$RHEL" = "7" ]; then + # this mirror always fails, on both AWS and github + echo "exclude=mirror.es.its.nyu.edu" >> /etc/yum/pluginconf.d/fastestmirror.conf + yum clean plugins + # https://stackoverflow.com/questions/26734777/yum-error-cannot-retrieve-metalink-for-repository-epel-please-verify-its-path + sed -i "s/metalink=https/metalink=http/" /etc/yum.repos.d/epel.repo +fi # reinstall with man pages yum install -y yum rpm yum reinstall -y yum rpm yum install -y gcc git make pkgconfig \ - ansible-lint ansible \ + ansible \ mc tmux psmisc lsof which iproute \ bash-completion \ man man-pages -if [ $(rpm --eval '%{rhel}') = '7' ]; then - yum install -y glibc-static bash-completion-extras +if [ "$RHEL" = '7' ]; then + yum install -y ansible-lint glibc-static bash-completion-extras else - yum install -y --enablerepo=ol9_codeready_builder glibc-static + yum install -y ansible-lint glibc-static --enablerepo=ol9_codeready_builder fi fg || true @@ -51,8 +54,7 @@ go env # use modules to install (in the background) tagged releases cd $(mktemp -d) go mod init tools -env GOPROXY=https://proxy.golang.org go get -v \ - github.com/go-delve/delve/cmd/dlv@latest & +env GOPROXY=https://proxy.golang.org go get -v github.com/go-delve/delve/cmd/dlv@latest & cd /root/go/src/github.com/percona/pmm make init diff --git a/update/Makefile b/update/Makefile index abe2a32ba8..fb3afa5c60 100644 --- a/update/Makefile +++ b/update/Makefile @@ -23,14 +23,16 @@ LD_FLAGS = -ldflags " \ -X 'github.com/percona/pmm/version.FullCommit=$(PMM_RELEASE_FULLCOMMIT)' \ -X 'github.com/percona/pmm/version.Branch=$(PMM_RELEASE_BRANCH)' \ " +prep: ## Mark the root directory of pmm as safe for OL9 + git config --global --add safe.directory /root/go/src/github.com/percona/pmm -release: ## Build pmm-update release binary +release: prep ## Build pmm-update release binary env CGO_ENABLED=0 go build -v $(LD_FLAGS) -o $(PMM_RELEASE_PATH)/pmm-update -install: ## Install pmm-update binary +install: prep ## Install pmm-update binary go build -v $(LD_FLAGS) -o $(GOBIN)/pmm-update . -install-race: ## Install pmm-update binary with race detector +install-race: prep ## Install pmm-update binary with race detector go build -v $(LD_FLAGS) -race -o $(GOBIN)/pmm-update . TEST_FLAGS ?= -timeout=60s -count=1 -v -p 1 diff --git a/update/ansible/playbook/tasks/roles/clickhouse/tasks/main.yml b/update/ansible/playbook/tasks/roles/clickhouse/tasks/main.yml index 61ed5c7508..2fb89b954b 100644 --- a/update/ansible/playbook/tasks/roles/clickhouse/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/clickhouse/tasks/main.yml @@ -81,9 +81,9 @@ - name: Install clickhouse package yum: name: - - clickhouse-client-{{ clickhouse_version}} - - clickhouse-server-{{ clickhouse_version}} - - clickhouse-common-static-{{ clickhouse_version}} + - clickhouse-client-{{ clickhouse_version }} + - clickhouse-server-{{ clickhouse_version }} + - clickhouse-common-static-{{ clickhouse_version }} state: installed enablerepo: clickhouse ignore_errors: "{{ ansible_check_mode }}" # We don't have clickhouse repo when we run ansible with --check @@ -100,7 +100,7 @@ capabilities: path: /usr/bin/clickhouse state: absent - capability: "{{ item}}" + capability: "{{ item }}" loop: - cap_ipc_lock - cap_sys_nice diff --git a/update/ansible/playbook/tasks/update.yml b/update/ansible/playbook/tasks/update.yml index 5419554e9f..b8fdadc7db 100644 --- a/update/ansible/playbook/tasks/update.yml +++ b/update/ansible/playbook/tasks/update.yml @@ -206,9 +206,12 @@ - skip_ansible_lint # '503 Tasks that run when changed should likely be handlers'. # The handler looks bad in this case + # TODO: join with the command above - name: Cleanup yum metadata command: yum clean metadata become: true + tags: + - skip_ansible_lint # Split download and update to produce a bit more of progress output. - name: Download pmm2 packages @@ -259,6 +262,7 @@ - tzdata - libssh2 - sshpass + - vi - name: Install nginx include_role: From 52dc189c78fc2c596e24e412e74e127567f76d2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 16:58:29 +0000 Subject: [PATCH 039/123] Bump github.com/grafana/grafana-api-golang-client from 0.22.0 to 0.23.0 (#2263) Bumps [github.com/grafana/grafana-api-golang-client](https://github.com/grafana/grafana-api-golang-client) from 0.22.0 to 0.23.0. - [Release notes](https://github.com/grafana/grafana-api-golang-client/releases) - [Commits](https://github.com/grafana/grafana-api-golang-client/compare/v0.22.0...v0.23.0) --- updated-dependencies: - dependency-name: github.com/grafana/grafana-api-golang-client dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 249ef29f9a..46a5f126f0 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( github.com/golang-migrate/migrate/v4 v4.16.1 github.com/golang/protobuf v1.5.3 github.com/google/uuid v1.3.0 - github.com/grafana/grafana-api-golang-client v0.22.0 + github.com/grafana/grafana-api-golang-client v0.23.0 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 diff --git a/go.sum b/go.sum index 0ee06f5ea4..683c426e9d 100644 --- a/go.sum +++ b/go.sum @@ -414,8 +414,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/grafana/grafana-api-golang-client v0.22.0 h1:igOpT90S9zxmNkDCHvfKQ39TBRtJJBjF9eSGjZ7pHeI= -github.com/grafana/grafana-api-golang-client v0.22.0/go.mod h1:24W29gPe9yl0/3A9X624TPkAOR8DpHno490cPwnkv8E= +github.com/grafana/grafana-api-golang-client v0.23.0 h1:Uta0dSkxWYf1D83/E7MRLCG69387FiUc+k9U/35nMhY= +github.com/grafana/grafana-api-golang-client v0.23.0/go.mod h1:24W29gPe9yl0/3A9X624TPkAOR8DpHno490cPwnkv8E= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= From 6df0435eb67da8cadcfe8adfaa1676fd505c6fa2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 17:16:39 +0000 Subject: [PATCH 040/123] Bump github.com/brianvoe/gofakeit/v6 from 6.21.0 to 6.22.0 (#2256) Bumps [github.com/brianvoe/gofakeit/v6](https://github.com/brianvoe/gofakeit) from 6.21.0 to 6.22.0. - [Release notes](https://github.com/brianvoe/gofakeit/releases) - [Commits](https://github.com/brianvoe/gofakeit/compare/v6.21.0...v6.22.0) --- updated-dependencies: - dependency-name: github.com/brianvoe/gofakeit/v6 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 46a5f126f0..f005a5a3fb 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/aws/aws-sdk-go v1.44.273 github.com/blang/semver v3.5.1+incompatible - github.com/brianvoe/gofakeit/v6 v6.21.0 + github.com/brianvoe/gofakeit/v6 v6.22.0 github.com/charmbracelet/bubbles v0.15.0 github.com/charmbracelet/bubbletea v0.24.0 github.com/charmbracelet/lipgloss v0.7.1 diff --git a/go.sum b/go.sum index 683c426e9d..cfe7a33ad9 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/brianvoe/gofakeit v3.18.0+incompatible h1:wDOmHc9DLG4nRjUVVaxA+CEglKOW72Y5+4WNxUIkjM8= github.com/brianvoe/gofakeit v3.18.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= -github.com/brianvoe/gofakeit/v6 v6.21.0 h1:tNkm9yxEbpuPK8Bx39tT4sSc5i9SUGiciLdNix+VDQY= -github.com/brianvoe/gofakeit/v6 v6.21.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= +github.com/brianvoe/gofakeit/v6 v6.22.0 h1:BzOsDot1o3cufTfOk+fWKE9nFYojyDV+XHdCWL2+uyE= +github.com/brianvoe/gofakeit/v6 v6.22.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= From f1e452451648a8e380362b019089495488e110c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 20:51:51 +0300 Subject: [PATCH 041/123] Bump golang.org/x/text from 0.9.0 to 0.10.0 (#2262) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.9.0 to 0.10.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f005a5a3fb..3a9b9ef17d 100644 --- a/go.mod +++ b/go.mod @@ -77,7 +77,7 @@ require ( golang.org/x/crypto v0.9.0 golang.org/x/sync v0.2.0 golang.org/x/sys v0.8.0 - golang.org/x/text v0.9.0 + golang.org/x/text v0.10.0 golang.org/x/tools v0.9.3 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc diff --git a/go.sum b/go.sum index cfe7a33ad9..025e3713a7 100644 --- a/go.sum +++ b/go.sum @@ -1019,8 +1019,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 018270cdf29212177ee670af6a31b1e324935a34 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Tue, 13 Jun 2023 21:20:49 +0300 Subject: [PATCH 042/123] PMM-7 enable `godot` linter rule (#2252) * PMM-7 fix linter warnings * PMM-7 add several exceptions to godot config * PMM-7 fix the remaining errors * PMM-7 remove the temp disables in the config --- .golangci.yml | 8 +++-- agent/agents/mysql/perfschema/perfschema.go | 5 ++- .../pgstatmonitor/pgstatmonitor_models.go | 2 +- .../pgstatstatements/pgstatstatements.go | 4 +-- agent/cmd/pmm-agent-entrypoint/main.go | 1 - agent/commands/clients.go | 2 +- agent/connectionuptime/service.go | 1 - agent/connectionuptime/service_test.go | 1 - agent/main_test.go | 32 +++++++++---------- agent/queryparser/parser.go | 2 +- agent/runner/actions/query_transform.go | 1 + agent/tailog/store.go | 7 ++-- api-tests/helpers.go | 4 +-- api/agentpb/agent.go | 2 +- api/inventorypb/agents.go | 2 +- api/inventorypb/nodes.go | 2 +- api/inventorypb/services.go | 2 +- managed/cmd/pmm-managed-starlark/main.go | 4 +-- managed/models/database.go | 10 +++--- managed/models/database_test.go | 2 +- managed/services/agents/state.go | 4 +-- .../services/backup/pitr_timerange_service.go | 4 +-- .../dbaas/kubernetes/olm_operator_test.go | 1 - .../services/management/alerting/service.go | 4 +-- .../management/dbaas/kubernetes_server.go | 4 +-- .../management/ia/rules_service_test.go | 2 ++ managed/services/management/rds.go | 2 +- managed/services/platform/platform.go | 2 +- managed/services/qan/client.go | 2 +- managed/services/supervisord/logs.go | 2 +- managed/services/supervisord/pprof_config.go | 1 - managed/services/telemetry/deps.go | 1 - .../services/telemetry/distribution_util.go | 1 - .../telemetry/distribution_util_test.go | 1 - managed/services/telemetry/telemetry_test.go | 1 - managed/utils/collectors/collectors.go | 4 +-- managed/utils/dir/dir.go | 4 +-- managed/utils/pprof/pprof.go | 1 - managed/utils/pprof/pprof_test.go | 1 - qan-api2/db.go | 1 - qan-api2/db_test.go | 1 - qan-api2/exporters/slow_log.go | 1 - qan-api2/main.go | 1 - qan-api2/maincover_test.go | 1 - qan-api2/models/base.go | 1 - qan-api2/models/data_ingestion.go | 1 - qan-api2/models/metrics.go | 1 - qan-api2/models/reporter.go | 1 - qan-api2/services/analytics/base.go | 1 - qan-api2/services/analytics/filters.go | 1 - qan-api2/services/analytics/filters_test.go | 1 - qan-api2/services/analytics/metrics_names.go | 1 - .../services/analytics/metrics_names_test.go | 1 - qan-api2/services/analytics/object_details.go | 1 - .../services/analytics/object_details_test.go | 1 - qan-api2/services/analytics/profile.go | 1 - qan-api2/services/analytics/profile_test.go | 1 - qan-api2/services/receiver/receiver.go | 1 - qan-api2/utils/interceptors/interceptors.go | 1 - qan-api2/utils/logger/grpc.go | 1 - qan-api2/utils/logger/logger.go | 1 - update/pkg/yum/info.go | 2 +- utils/sqlmetrics/reform.go | 2 +- 63 files changed, 66 insertions(+), 96 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8d1df00743..6242d83ad0 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -29,6 +29,11 @@ linters-settings: godot: capital: true + period: false + scope: toplevel + exclude: + - go-sumtype:decl + - pmm-managed goimports: local-prefixes: github.com/percona/pmm @@ -84,6 +89,7 @@ linters: - gochecknoglobals # mostly useless - gochecknoinits # we use init functions - gocyclo # using cyclop with the max 30 instead + - godox # we sometimes leave TODOS right in the code - goerr113 # extra work & poor benefit - golint # unmaintained, replaced by revive - gomnd # we are using numbers in many cases @@ -102,8 +108,6 @@ linters: # or leave disabled and provide a reason why - tagliatelle - gocritic - - godot - - godox - revive - paralleltest - ireturn diff --git a/agent/agents/mysql/perfschema/perfschema.go b/agent/agents/mysql/perfschema/perfschema.go index bec2876b4d..ad300484c5 100644 --- a/agent/agents/mysql/perfschema/perfschema.go +++ b/agent/agents/mysql/perfschema/perfschema.go @@ -383,8 +383,7 @@ func inc(current, prev uint64) float32 { } // makeBuckets uses current state of events_statements_summary_by_digest table and accumulated previous state -// to make metrics buckets. -// +// to make metrics buckets; // makeBuckets is a pure function for easier testing. func makeBuckets(current, prev summaryMap, l *logrus.Entry, maxQueryLength int32) []*agentpb.MetricsBucket { res := make([]*agentpb.MetricsBucket, 0, len(current)) @@ -433,7 +432,7 @@ func makeBuckets(current, prev summaryMap, l *logrus.Entry, maxQueryLength int32 sum *float32 // MetricsBucket.XXXSum field to write value cnt *float32 // MetricsBucket.XXXCnt field to write count }{ - // in order of events_statements_summary_by_digest columns + // Ordered the same as events_statements_summary_by_digest columns // convert picoseconds to seconds {inc(currentESS.SumTimerWait, prevESS.SumTimerWait) / 1000000000000, &mb.Common.MQueryTimeSum, &mb.Common.MQueryTimeCnt}, diff --git a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go index b49f177bd2..ce5e314c2c 100644 --- a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go +++ b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go @@ -348,7 +348,7 @@ func (s *pgStatMonitor) View() reform.View { } var ( - // check interfaces + // Check interfaces _ reform.Struct = (*pgStatMonitor)(nil) _ fmt.Stringer = (*pgStatMonitor)(nil) ) diff --git a/agent/agents/postgres/pgstatstatements/pgstatstatements.go b/agent/agents/postgres/pgstatstatements/pgstatstatements.go index eb853c5727..3c1a8d6a08 100644 --- a/agent/agents/postgres/pgstatstatements/pgstatstatements.go +++ b/agent/agents/postgres/pgstatstatements/pgstatstatements.go @@ -313,9 +313,7 @@ func (m *PGStatStatementsQAN) getNewBuckets(ctx context.Context, periodStart tim } // makeBuckets uses current state of pg_stat_statements table and accumulated previous state -// to make metrics buckets. -// -// makeBuckets is a pure function for easier testing. +// to make metrics buckets. It's a pure function for easier testing. func makeBuckets(current, prev statementsMap, disableCommentsParsing bool, l *logrus.Entry) []*agentpb.MetricsBucket { res := make([]*agentpb.MetricsBucket, 0, len(current)) diff --git a/agent/cmd/pmm-agent-entrypoint/main.go b/agent/cmd/pmm-agent-entrypoint/main.go index 636bbf874e..6004cd126f 100644 --- a/agent/cmd/pmm-agent-entrypoint/main.go +++ b/agent/cmd/pmm-agent-entrypoint/main.go @@ -1,4 +1,3 @@ -// pmm-agent // Copyright 2019 Percona LLC // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/agent/commands/clients.go b/agent/commands/clients.go index 43c4ae949e..32641052aa 100644 --- a/agent/commands/clients.go +++ b/agent/commands/clients.go @@ -138,7 +138,7 @@ func setServerTransport(u *url.URL, insecureTLS bool, l *logrus.Entry) { // ParseCustomLabels parses --custom-labels flag value. // // Note that quotes around value are parsed and removed by shell before this function is called. -// E.g. the value of [[--custom-labels='region=us-east1, mylabel=mylab-22']] will be received by this function +// For example, the value of [[--custom-labels='region=us-east1, mylabel=mylab-22']] will be received by this function // as [[region=us-east1, mylabel=mylab-22]]. func ParseCustomLabels(labels string) (map[string]string, error) { result := make(map[string]string) diff --git a/agent/connectionuptime/service.go b/agent/connectionuptime/service.go index febf2420ea..49ec3bc0b0 100644 --- a/agent/connectionuptime/service.go +++ b/agent/connectionuptime/service.go @@ -1,4 +1,3 @@ -// pmm-agent // Copyright 2019 Percona LLC // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/agent/connectionuptime/service_test.go b/agent/connectionuptime/service_test.go index 50ebd59b22..e6ddcc1c41 100644 --- a/agent/connectionuptime/service_test.go +++ b/agent/connectionuptime/service_test.go @@ -1,4 +1,3 @@ -// pmm-agent // Copyright 2019 Percona LLC // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/agent/main_test.go b/agent/main_test.go index 23cb4f460c..4c6cd30161 100644 --- a/agent/main_test.go +++ b/agent/main_test.go @@ -73,23 +73,23 @@ func TestVersionPlain(t *testing.T) { // 2. Just building the agent does not guarantees that there is a version set. // go run main.go --version // panic: pmm-agent version is not set during build. -// -// goroutine 1 [running]: -// main.main() -// /home/user/go/src/github.com/percona/pmm-agent/main.go:34 +0x22a -// exit status 2 -// 3. Do we really need to test the output of a command? It is making local tests to always fail. -func TestVersionJson(t *testing.T) { - t.Parallel() - cmd := exec.Command("pmm-agent", "--version", "--json") - b, err := cmd.CombinedOutput() - require.NoError(t, err, "%s", b) - - var jsonStruct interface{} - err = json.Unmarshal(b, &jsonStruct) - require.NoError(t, err, `'pmm-agent --version --json' produces incorrect output format`) -} +goroutine 1 [running]: +main.main() + /home/user/go/src/github.com/percona/pmm-agent/main.go:34 +0x22a +exit status 2 +3. Do we really need to test the output of a command? It is making local tests to always fail. + + func TestVersionJson(t *testing.T) { + t.Parallel() + cmd := exec.Command("pmm-agent", "--version", "--json") + b, err := cmd.CombinedOutput() + require.NoError(t, err, "%s", b) + + var jsonStruct interface{} + err = json.Unmarshal(b, &jsonStruct) + require.NoError(t, err, `'pmm-agent --version --json' produces incorrect output format`) + } */ func TestImports(t *testing.T) { diff --git a/agent/queryparser/parser.go b/agent/queryparser/parser.go index 535af7320e..a8e4c3e2f3 100644 --- a/agent/queryparser/parser.go +++ b/agent/queryparser/parser.go @@ -59,7 +59,7 @@ func GetMySQLFingerprintPlaceholders(query, digestText string) (string, uint32) return strings.TrimSpace(result), count } -// GetMySQLFingerprintFromExplainFingerprint convert placeholders in fingerprint from our format (:1, :2 etc) into ? +// GetMySQLFingerprintFromExplainFingerprint converts placeholders in fingerprint from our format (:1, :2 etc) into '?' // to make it compatible with sql.Query functions. func GetMySQLFingerprintFromExplainFingerprint(explainFingerprint string) string { return decimalsPlaceholdersRegexp.ReplaceAllString(explainFingerprint, "?") diff --git a/agent/runner/actions/query_transform.go b/agent/runner/actions/query_transform.go index 5a91af7608..574f9e604f 100644 --- a/agent/runner/actions/query_transform.go +++ b/agent/runner/actions/query_transform.go @@ -48,6 +48,7 @@ are needed and the pmm user is a not privileged user. This function converts DML queries to the equivalent SELECT to make it able to explain DML queries on older MySQL versions and for unprivileged users. */ + // dmlToSelect returns query converted to select and boolean, if conversion were needed. func dmlToSelect(query string) (string, bool) { query = strings.ReplaceAll(query, "\n", " ") diff --git a/agent/tailog/store.go b/agent/tailog/store.go index f3ee18f96c..45ff99c8d9 100644 --- a/agent/tailog/store.go +++ b/agent/tailog/store.go @@ -1,4 +1,3 @@ -// pmm-agent // Copyright 2019 Percona LLC // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Package tailog help to store tail logs +// Package tailog helps store tail logs package tailog import ( @@ -22,7 +21,7 @@ import ( "sync" ) -// Store implement ring save logs. +// Store implements ring save logs. type Store struct { log *ring.Ring capacity uint @@ -37,7 +36,7 @@ func NewStore(capacity uint) *Store { } } -// Write writes log for store. +// Write writes log to the store. func (l *Store) Write(b []byte) (int, error) { //nolint:unparam l.m.Lock() defer l.m.Unlock() diff --git a/api-tests/helpers.go b/api-tests/helpers.go index cda4027a77..20d27307a6 100644 --- a/api-tests/helpers.go +++ b/api-tests/helpers.go @@ -89,8 +89,8 @@ func ExpectFailure(t *testing.T, link string) *expectedFailureTestingT { } // expectedFailureTestingT expects that test will fail. -// if test is failed we skip it -// if it doesn't we call Fail +// If the test fails - we skip it, +// if it doesn't - we call Fail. type expectedFailureTestingT struct { t *testing.T errors []string diff --git a/api/agentpb/agent.go b/api/agentpb/agent.go index e503dc118c..c3055b80f3 100644 --- a/api/agentpb/agent.go +++ b/api/agentpb/agent.go @@ -28,7 +28,7 @@ import "google.golang.org/protobuf/proto" //go-sumtype:decl isStartActionRequest_Params -// code below uses the same order as payload types at AgentMessage / ServerMessage +// Code below uses the same order as payload types at AgentMessage / ServerMessage. // AgentRequestPayload represents agent's request payload. type AgentRequestPayload interface { diff --git a/api/inventorypb/agents.go b/api/inventorypb/agents.go index fc3258194e..7d1f103dbb 100644 --- a/api/inventorypb/agents.go +++ b/api/inventorypb/agents.go @@ -22,7 +22,7 @@ type Agent interface { sealedAgent() } -// in order of AgentType enum +// Ordered the same as AgentType enum func (*PMMAgent) sealedAgent() {} func (*VMAgent) sealedAgent() {} diff --git a/api/inventorypb/nodes.go b/api/inventorypb/nodes.go index 25e1f67d56..e92d7876ac 100644 --- a/api/inventorypb/nodes.go +++ b/api/inventorypb/nodes.go @@ -22,7 +22,7 @@ type Node interface { sealedNode() } -// in order of NodeType enum +// Ordered the same as NodeType enum func (*GenericNode) sealedNode() {} func (*ContainerNode) sealedNode() {} diff --git a/api/inventorypb/services.go b/api/inventorypb/services.go index 8c88df4aae..2c2162b87c 100644 --- a/api/inventorypb/services.go +++ b/api/inventorypb/services.go @@ -22,7 +22,7 @@ type Service interface { sealedService() } -// in order of ServiceType enum +// Ordered the same as ServiceType enum func (*MySQLService) sealedService() {} func (*MongoDBService) sealedService() {} diff --git a/managed/cmd/pmm-managed-starlark/main.go b/managed/cmd/pmm-managed-starlark/main.go index 07c72fe9ed..5c23efab3e 100644 --- a/managed/cmd/pmm-managed-starlark/main.go +++ b/managed/cmd/pmm-managed-starlark/main.go @@ -41,10 +41,10 @@ const ( cpuLimit = 4 * time.Second memoryLimitBytes = 1024 * 1024 * 1024 - // only used for testing. + // Only used for testing. starlarkRecursionFlag = "PERCONA_TEST_STARLARK_ALLOW_RECURSION" - // warning messages. + // Warning messages. cpuUsageWarning = "Failed to limit CPU usage" memoryUsageWarning = "Failed to limit memory usage" ) diff --git a/managed/models/database.go b/managed/models/database.go index 6abb888eab..4897a7d3cb 100644 --- a/managed/models/database.go +++ b/managed/models/database.go @@ -37,20 +37,20 @@ import ( const ( // PMMServerPostgreSQLServiceName is a special Service Name representing PMM Server's PostgreSQL Service. PMMServerPostgreSQLServiceName = "pmm-server-postgresql" - // minPGVersion stands for minimal required PostgreSQL server version for PMM Server. + // - minPGVersion stands for minimal required PostgreSQL server version for PMM Server. minPGVersion float64 = 14 // DefaultPostgreSQLAddr represent default local PostgreSQL database server address. DefaultPostgreSQLAddr = "127.0.0.1:5432" // PMMServerPostgreSQLNodeName is a special Node Name representing PMM Server's External PostgreSQL Node. PMMServerPostgreSQLNodeName = "pmm-server-db" - // DisableSSLMode represent disable PostgreSQL ssl mode + // DisableSSLMode represent disable PostgreSQL ssl mode. DisableSSLMode string = "disable" - // RequireSSLMode represent require PostgreSQL ssl mode + // RequireSSLMode represent require PostgreSQL ssl mode. RequireSSLMode string = "require" - // VerifyCaSSLMode represent verify-ca PostgreSQL ssl mode + // VerifyCaSSLMode represent verify-ca PostgreSQL ssl mode. VerifyCaSSLMode string = "verify-ca" - // VerifyFullSSLMode represent verify-full PostgreSQL ssl mode + // VerifyFullSSLMode represent verify-full PostgreSQL ssl mode. VerifyFullSSLMode string = "verify-full" ) diff --git a/managed/models/database_test.go b/managed/models/database_test.go index 8a69ee598c..083ab679a6 100644 --- a/managed/models/database_test.go +++ b/managed/models/database_test.go @@ -32,7 +32,7 @@ import ( "github.com/percona/pmm/managed/utils/testdb" ) -// see https://www.postgresql.org/docs/10/errcodes-appendix.html for error codes +// See https://www.postgresql.org/docs/10/errcodes-appendix.html for error codes func assertUniqueViolation(t *testing.T, err error, constraint string) { t.Helper() diff --git a/managed/services/agents/state.go b/managed/services/agents/state.go index b2242190ff..c081af9d99 100644 --- a/managed/services/agents/state.go +++ b/managed/services/agents/state.go @@ -33,7 +33,7 @@ import ( ) const ( - // constants for delayed batch updates + // Constants for delayed batch updates. updateBatchDelay = time.Second stateChangeTimeout = 5 * time.Second ) @@ -171,7 +171,7 @@ func (u *StateUpdater) sendSetStateRequest(ctx context.Context, agent *pmmAgentI continue } - // in order of AgentType consts + // Ordered the same as AgentType consts switch row.AgentType { case models.PMMAgentType: continue diff --git a/managed/services/backup/pitr_timerange_service.go b/managed/services/backup/pitr_timerange_service.go index cc82678d6d..8f691a7777 100644 --- a/managed/services/backup/pitr_timerange_service.go +++ b/managed/services/backup/pitr_timerange_service.go @@ -31,7 +31,7 @@ import ( ) const ( - // pitrFSPrefix is the prefix (folder) for all PITR artifacts in the backup location. + // - pitrFSPrefix is the prefix (folder) for all PITR artifacts in the backup location. pitrFSPrefix = "pbmPitr" ) @@ -190,7 +190,7 @@ func trimTimelines(timelines []Timeline) { // current format is 20200715155939-0.20200715160029-1.oplog.snappy // (https://github.com/percona/percona-backup-mongodb/wiki/PITR:-storage-layout) // -// !!! should be agreed with pbm/pitr.chunkPath() +// !!! Should be agreed with pbm/pitr.chunkPath() func pitrMetaFromFileName(prefix, f string) *oplogChunk { ppath := strings.Split(f, "/") if len(ppath) < 2 { diff --git a/managed/services/dbaas/kubernetes/olm_operator_test.go b/managed/services/dbaas/kubernetes/olm_operator_test.go index 3bf11d0a06..b9cb55d414 100644 --- a/managed/services/dbaas/kubernetes/olm_operator_test.go +++ b/managed/services/dbaas/kubernetes/olm_operator_test.go @@ -1,4 +1,3 @@ -// dbaas-controller // Copyright (C) 2020 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/managed/services/management/alerting/service.go b/managed/services/management/alerting/service.go index 138374fb1f..131c359d7b 100644 --- a/managed/services/management/alerting/service.go +++ b/managed/services/management/alerting/service.go @@ -139,8 +139,8 @@ func (s *Service) GetTemplates() map[string]TemplateInfo { // CollectTemplates collects IA rule templates from various sources like: // builtin templates: read from the generated variable of type embed.FS // SaaS templates: templates downloaded from checks service. -// user file templates: read from yaml files created by the user in `/srv/alerting/templates` -// user API templates: in the DB created using the API. +// User file templates: read from yaml files created by the user in `/srv/alerting/templates`. +// User API templates: in the DB created using the API. func (s *Service) CollectTemplates(ctx context.Context) { builtInTemplates, err := s.loadTemplatesFromAssets(ctx) if err != nil { diff --git a/managed/services/management/dbaas/kubernetes_server.go b/managed/services/management/dbaas/kubernetes_server.go index aacd44b00f..20dd99aa7e 100644 --- a/managed/services/management/dbaas/kubernetes_server.go +++ b/managed/services/management/dbaas/kubernetes_server.go @@ -91,8 +91,8 @@ func (k *kubernetesServer) Enabled() bool { return settings.DBaaS.Enabled } -// getOperatorStatus exists mainly to assign appropriate status when installed operator is unsupported. -// dbaas-controller does not have a clue what's supported, so we have to do it here. +// convertToOperatorStatus exists mainly to provide an appropriate status when installed operator is unsupported. +// Dbaas-controller does not have a clue what's supported, so we have to do it here. func (k kubernetesServer) convertToOperatorStatus(versionsList []string, operatorVersion string) dbaasv1beta1.OperatorsStatus { if operatorVersion == "" { return dbaasv1beta1.OperatorsStatus_OPERATORS_STATUS_NOT_INSTALLED diff --git a/managed/services/management/ia/rules_service_test.go b/managed/services/management/ia/rules_service_test.go index e4178fc0a1..542e621cb2 100644 --- a/managed/services/management/ia/rules_service_test.go +++ b/managed/services/management/ia/rules_service_test.go @@ -22,6 +22,7 @@ import ( "github.com/stretchr/testify/require" ) +/* // func TestCreateAlertRule(t *testing.T) { // ctx := context.Background() // sqlDB := testdb.Open(t, models.SkipFixtures, nil) @@ -358,6 +359,7 @@ import ( // assert.EqualError(t, err, fmt.Sprintf("stat %s: no such file or directory", filename)) // }) // } +*/ func ruleFileName(testDir, ruleID string) string { return testDir + "/" + strings.TrimPrefix(ruleID, "/rule_id/") + ".yml" diff --git a/managed/services/management/rds.go b/managed/services/management/rds.go index 849be3070b..075ee05206 100644 --- a/managed/services/management/rds.go +++ b/managed/services/management/rds.go @@ -43,7 +43,7 @@ import ( ) const ( - // maximum time for AWS discover APIs calls + // Maximum time for AWS discover APIs calls awsDiscoverTimeout = 7 * time.Second ) diff --git a/managed/services/platform/platform.go b/managed/services/platform/platform.go index cf8eb09812..5af433c5db 100644 --- a/managed/services/platform/platform.go +++ b/managed/services/platform/platform.go @@ -188,7 +188,7 @@ func (s *Service) Disconnect(ctx context.Context, req *platformpb.DisconnectRequ } // forceDisconnect cleans up records of platform connection only from PMM side. -// this should only be used in case a user with admin credentials tries to disconnect. +// This should only be used in case a user with admin credentials tries to disconnect. // The SSO details should be removed from both the DB and grafana config. func (s *Service) forceDisconnect(ctx context.Context) error { err := models.DeletePerconaSSODetails(s.db.Querier) diff --git a/managed/services/qan/client.go b/managed/services/qan/client.go index f9cfd2ba5b..4b48c8e172 100644 --- a/managed/services/qan/client.go +++ b/managed/services/qan/client.go @@ -233,7 +233,7 @@ func (c *Client) Collect(ctx context.Context, metricsBuckets []*agentpb.MetricsB fillPostgreSQL(mb, m.Postgresql) } - // in order of fields in MetricsBucket + // Ordered the same as fields in MetricsBucket for labelName, field := range map[string]*string{ "machine_id": &mb.MachineId, "container_id": &mb.ContainerId, diff --git a/managed/services/supervisord/logs.go b/managed/services/supervisord/logs.go index ab558f3e34..f347b3b986 100644 --- a/managed/services/supervisord/logs.go +++ b/managed/services/supervisord/logs.go @@ -62,7 +62,7 @@ type Logs struct { } // NewLogs creates a new Logs service. -// n is a number of last lines of log to read. +// The number of last log lines to read is n. func NewLogs(pmmVersion string, pmmUpdateChecker *PMMUpdateChecker) *Logs { return &Logs{ pmmVersion: pmmVersion, diff --git a/managed/services/supervisord/pprof_config.go b/managed/services/supervisord/pprof_config.go index ce41cfc64f..f4cc63ed62 100644 --- a/managed/services/supervisord/pprof_config.go +++ b/managed/services/supervisord/pprof_config.go @@ -1,4 +1,3 @@ -// pmm-managed // Copyright (C) 2017 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/managed/services/telemetry/deps.go b/managed/services/telemetry/deps.go index 9e346046a2..057a507200 100644 --- a/managed/services/telemetry/deps.go +++ b/managed/services/telemetry/deps.go @@ -1,4 +1,3 @@ -// pmm-managed // Copyright (C) 2017 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/managed/services/telemetry/distribution_util.go b/managed/services/telemetry/distribution_util.go index 7ca1ca6b29..28213dfd3b 100644 --- a/managed/services/telemetry/distribution_util.go +++ b/managed/services/telemetry/distribution_util.go @@ -1,4 +1,3 @@ -// pmm-managed // Copyright (C) 2017 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/managed/services/telemetry/distribution_util_test.go b/managed/services/telemetry/distribution_util_test.go index b45d814fca..59c62bb5c9 100644 --- a/managed/services/telemetry/distribution_util_test.go +++ b/managed/services/telemetry/distribution_util_test.go @@ -1,4 +1,3 @@ -// pmm-managed // Copyright (C) 2017 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/managed/services/telemetry/telemetry_test.go b/managed/services/telemetry/telemetry_test.go index 640e374be6..477ff027d4 100644 --- a/managed/services/telemetry/telemetry_test.go +++ b/managed/services/telemetry/telemetry_test.go @@ -1,4 +1,3 @@ -// pmm-managed // Copyright (C) 2017 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/managed/utils/collectors/collectors.go b/managed/utils/collectors/collectors.go index 6e0fd50c32..f08905b150 100644 --- a/managed/utils/collectors/collectors.go +++ b/managed/utils/collectors/collectors.go @@ -24,8 +24,8 @@ import ( // FilterOutCollectors removes from exporter's flags disabled collectors. // DisableCollector values should match collector flag till end of string or till `=` sign. // Examples: -// 1. if we pass `meminfo` then only "--collector.meminfo" but not "--collector.meminfo_numa" -// 2. if we pass `netstat.field` then "--collector.netstat.fields=^(.*_(InErrors|InErrs|InCsumErrors)..." should be disabled. +// 1. If we pass `meminfo` then only "--collector.meminfo" but not "--collector.meminfo_numa". +// 2. If we pass `netstat.field` then "--collector.netstat.fields=^(.*_(InErrors|InErrs|InCsumErrors)..." should be disabled. // 3. To disable "--collect.custom_query.hr" with directory ""--collect.custom_query.lr.directory" user should pass both names. func FilterOutCollectors(prefix string, args, disabledCollectors []string) []string { disabledCollectorsMap := make(map[string]struct{}) diff --git a/managed/utils/dir/dir.go b/managed/utils/dir/dir.go index cf046a0398..bd5f7ceb59 100644 --- a/managed/utils/dir/dir.go +++ b/managed/utils/dir/dir.go @@ -45,8 +45,8 @@ func CreateDataDir(path, username, groupname string, perm os.FileMode) error { return storedErr } -// FindFilesWithExtensions read path directory and returns all files satisfying provided extensions. -// file name is joined with provided path. +// FindFilesWithExtensions reads path directory and returns all files satisfying provided extensions. +// File name is joined with provided path. func FindFilesWithExtensions(path string, extensions ...string) ([]string, error) { var paths []string match := func(ext string) bool { diff --git a/managed/utils/pprof/pprof.go b/managed/utils/pprof/pprof.go index 6ee6a92274..007a8b39f3 100644 --- a/managed/utils/pprof/pprof.go +++ b/managed/utils/pprof/pprof.go @@ -1,4 +1,3 @@ -// pmm-managed // Copyright (C) 2017 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/managed/utils/pprof/pprof_test.go b/managed/utils/pprof/pprof_test.go index 00358fa8c6..f80204a99a 100644 --- a/managed/utils/pprof/pprof_test.go +++ b/managed/utils/pprof/pprof_test.go @@ -1,4 +1,3 @@ -// pmm-managed // Copyright (C) 2017 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/db.go b/qan-api2/db.go index d1845de681..cf607899cd 100644 --- a/qan-api2/db.go +++ b/qan-api2/db.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/db_test.go b/qan-api2/db_test.go index 34947722fe..1eb145ea93 100644 --- a/qan-api2/db_test.go +++ b/qan-api2/db_test.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/exporters/slow_log.go b/qan-api2/exporters/slow_log.go index 52f4c8b764..725c330431 100644 --- a/qan-api2/exporters/slow_log.go +++ b/qan-api2/exporters/slow_log.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/main.go b/qan-api2/main.go index 738a43f73e..8df27f9b28 100644 --- a/qan-api2/main.go +++ b/qan-api2/main.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/maincover_test.go b/qan-api2/maincover_test.go index 60f49b7824..1828a08ed0 100644 --- a/qan-api2/maincover_test.go +++ b/qan-api2/maincover_test.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/models/base.go b/qan-api2/models/base.go index b9a334a7f5..4f0368d8aa 100644 --- a/qan-api2/models/base.go +++ b/qan-api2/models/base.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/models/data_ingestion.go b/qan-api2/models/data_ingestion.go index 8df0225aaf..126052c9b4 100644 --- a/qan-api2/models/data_ingestion.go +++ b/qan-api2/models/data_ingestion.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/models/metrics.go b/qan-api2/models/metrics.go index 169c281549..099465cc04 100644 --- a/qan-api2/models/metrics.go +++ b/qan-api2/models/metrics.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/models/reporter.go b/qan-api2/models/reporter.go index 9d00088f96..4ceebcd10f 100644 --- a/qan-api2/models/reporter.go +++ b/qan-api2/models/reporter.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/base.go b/qan-api2/services/analytics/base.go index 0cb412cc3a..b9e9bd54e0 100644 --- a/qan-api2/services/analytics/base.go +++ b/qan-api2/services/analytics/base.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/filters.go b/qan-api2/services/analytics/filters.go index cfe80dbef4..da6cdc9bfe 100644 --- a/qan-api2/services/analytics/filters.go +++ b/qan-api2/services/analytics/filters.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/filters_test.go b/qan-api2/services/analytics/filters_test.go index c32b16c5b3..c7afc95c5a 100644 --- a/qan-api2/services/analytics/filters_test.go +++ b/qan-api2/services/analytics/filters_test.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/metrics_names.go b/qan-api2/services/analytics/metrics_names.go index dad5428a51..5d5074e0a3 100644 --- a/qan-api2/services/analytics/metrics_names.go +++ b/qan-api2/services/analytics/metrics_names.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/metrics_names_test.go b/qan-api2/services/analytics/metrics_names_test.go index dafc96e0de..b9ca476b6f 100644 --- a/qan-api2/services/analytics/metrics_names_test.go +++ b/qan-api2/services/analytics/metrics_names_test.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/object_details.go b/qan-api2/services/analytics/object_details.go index 9aac614264..79ffa56ea2 100644 --- a/qan-api2/services/analytics/object_details.go +++ b/qan-api2/services/analytics/object_details.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/object_details_test.go b/qan-api2/services/analytics/object_details_test.go index d826295b8a..6a0173949c 100644 --- a/qan-api2/services/analytics/object_details_test.go +++ b/qan-api2/services/analytics/object_details_test.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/profile.go b/qan-api2/services/analytics/profile.go index 075056ebfa..de0e498254 100644 --- a/qan-api2/services/analytics/profile.go +++ b/qan-api2/services/analytics/profile.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/analytics/profile_test.go b/qan-api2/services/analytics/profile_test.go index 3e754056fd..429a7c1211 100644 --- a/qan-api2/services/analytics/profile_test.go +++ b/qan-api2/services/analytics/profile_test.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/services/receiver/receiver.go b/qan-api2/services/receiver/receiver.go index 617784504e..4d963dd2b7 100644 --- a/qan-api2/services/receiver/receiver.go +++ b/qan-api2/services/receiver/receiver.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/utils/interceptors/interceptors.go b/qan-api2/utils/interceptors/interceptors.go index d35b07f29c..c5aca053fb 100644 --- a/qan-api2/utils/interceptors/interceptors.go +++ b/qan-api2/utils/interceptors/interceptors.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/utils/logger/grpc.go b/qan-api2/utils/logger/grpc.go index c1758d91e6..d658750634 100644 --- a/qan-api2/utils/logger/grpc.go +++ b/qan-api2/utils/logger/grpc.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/qan-api2/utils/logger/logger.go b/qan-api2/utils/logger/logger.go index 27bf50438d..d51b3cc4f6 100644 --- a/qan-api2/utils/logger/logger.go +++ b/qan-api2/utils/logger/logger.go @@ -1,4 +1,3 @@ -// qan-api2 // Copyright (C) 2019 Percona LLC // // This program is free software: you can redistribute it and/or modify diff --git a/update/pkg/yum/info.go b/update/pkg/yum/info.go index cd37f46d2f..ea529884dd 100644 --- a/update/pkg/yum/info.go +++ b/update/pkg/yum/info.go @@ -25,7 +25,7 @@ import ( ) // parseInfo parses `yum info` stdout for a single version of a single package. -// also used to parse `yum repoinfo`. +// Also used to parse `yum repoinfo`. func parseInfo(lines []string, firstKey string) (map[string]string, error) { res := make(map[string]string) var prevKey string diff --git a/utils/sqlmetrics/reform.go b/utils/sqlmetrics/reform.go index ffbe99a2e1..843ffced74 100644 --- a/utils/sqlmetrics/reform.go +++ b/utils/sqlmetrics/reform.go @@ -114,7 +114,7 @@ func (r *Reform) Reset() { } var ( - // check interfaces + // Check interfaces. _ reform.Logger = (*Reform)(nil) _ prom.Collector = (*Reform)(nil) ) From b94f8217a50b1ed89e17a3616022fd5a926d5fc3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 22:10:27 +0300 Subject: [PATCH 043/123] Bump golang.org/x/sys from 0.8.0 to 0.9.0 (#2261) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.8.0 to 0.9.0. - [Commits](https://github.com/golang/sys/compare/v0.8.0...v0.9.0) --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3a9b9ef17d..7328de175d 100644 --- a/go.mod +++ b/go.mod @@ -76,7 +76,7 @@ require ( go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.9.0 golang.org/x/sync v0.2.0 - golang.org/x/sys v0.8.0 + golang.org/x/sys v0.9.0 golang.org/x/text v0.10.0 golang.org/x/tools v0.9.3 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc diff --git a/go.sum b/go.sum index 025e3713a7..30a5a00a89 100644 --- a/go.sum +++ b/go.sum @@ -1002,8 +1002,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 999aa8e334ff5a632c9ef748cd1491a3d7b19463 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Jun 2023 13:03:46 +0300 Subject: [PATCH 044/123] Bump github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph (#2270) Bumps [github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph](https://github.com/Azure/azure-sdk-for-go) from 0.7.1 to 0.8.0. - [Release notes](https://github.com/Azure/azure-sdk-for-go/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-go/blob/main/documentation/release.md) - [Commits](https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v0.7.1...sdk/azcore/v0.8.0) --- updated-dependencies: - dependency-name: github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 7328de175d..c3ad9014ef 100644 --- a/go.mod +++ b/go.mod @@ -159,10 +159,10 @@ require ( ) require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0-beta.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.7.1 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.0 github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect github.com/ClickHouse/ch-go v0.52.1 // indirect github.com/ClickHouse/clickhouse-go v1.5.4 // indirect diff --git a/go.sum b/go.sum index 30a5a00a89..071b95bdce 100644 --- a/go.sum +++ b/go.sum @@ -37,14 +37,14 @@ github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w= github.com/AlekSi/pointer v1.2.0/go.mod h1:gZGfd3dpW4vEc/UlyfKKi1roIqcCgwOIvb0tSNSBle0= github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 h1:8kDqDngH+DmVBiCtIjCFTGa7MBnsIOkF9IccInFEbjk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0-beta.2 h1:C3zKsGguxcLd8a2uEytB8+TFtBGd75bXRxEs0QBwsv0= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0-beta.2/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.7.1 h1:eoQrCw9DMThzbJ32fHXZtISnURk6r0TozXiWuTsay5s= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.7.1/go.mod h1:21rlzm+SuYrS9ARS92XEGxcHQeLVDcaY2YV30rHjSd4= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.0 h1:+fxpya1I3WJEvl+qzET7NO2MkjtYkiZJxIcEN690W64= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.8.0/go.mod h1:1wZ2sD5NUZGEk/RVNxjBFPqVHC39ekUDtmNnWhKhrGY= github.com/Azure/azure-storage-blob-go v0.13.0/go.mod h1:pA9kNqtjUeQF2zOSu4s//nUdBD+e64lEuc4sVnuOfNs= github.com/Azure/azure-storage-blob-go v0.14.0 h1:1BCg74AmVdYwO3dlKwtFU1V0wU2PZdREkXvAmZJRUlM= github.com/Azure/azure-storage-blob-go v0.14.0/go.mod h1:SMqIBi+SuiQH32bvyjngEewEeXoPfKMgWlBDaYf6fck= From 84948a77158331cd06d3a37115b3c87e93b61fad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Jun 2023 12:59:42 +0200 Subject: [PATCH 045/123] Bump github.com/operator-framework/operator-lifecycle-manager (#2271) Bumps [github.com/operator-framework/operator-lifecycle-manager](https://github.com/operator-framework/operator-lifecycle-manager) from 0.24.0 to 0.25.0. - [Release notes](https://github.com/operator-framework/operator-lifecycle-manager/releases) - [Changelog](https://github.com/operator-framework/operator-lifecycle-manager/blob/master/.goreleaser.yml) - [Commits](https://github.com/operator-framework/operator-lifecycle-manager/compare/v0.24.0...v0.25.0) --- updated-dependencies: - dependency-name: github.com/operator-framework/operator-lifecycle-manager dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index c3ad9014ef..e3ce3d6f36 100644 --- a/go.mod +++ b/go.mod @@ -50,10 +50,10 @@ require ( github.com/hashicorp/go-version v1.6.0 github.com/jmoiron/sqlx v1.3.5 github.com/jotaen/kong-completion v0.0.5 - github.com/lib/pq v1.10.6 + github.com/lib/pq v1.10.7 github.com/minio/minio-go/v7 v7.0.55 github.com/operator-framework/api v0.17.6 - github.com/operator-framework/operator-lifecycle-manager v0.24.0 + github.com/operator-framework/operator-lifecycle-manager v0.25.0 github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342 github.com/percona/dbaas-operator v0.1.6 @@ -230,7 +230,7 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect + github.com/opencontainers/image-spec v1.1.0-rc2 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/paulmach/orb v0.9.0 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect diff --git a/go.sum b/go.sum index 071b95bdce..305edeb7db 100644 --- a/go.sum +++ b/go.sum @@ -522,8 +522,8 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -625,15 +625,15 @@ github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= -github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/operator-framework/api v0.17.6 h1:E6+vlvYUKafvoXYtCuHlDZrXX4vl8AT+r93OxNlzjpU= github.com/operator-framework/api v0.17.6/go.mod h1:l/cuwtPxkVUY7fzYgdust2m9tlmb8I4pOvbsUufRb24= -github.com/operator-framework/operator-lifecycle-manager v0.24.0 h1:9LOfvyohGEkNHwcOGOgw+w3ZAnGeT6JVh3CvIbWpnus= -github.com/operator-framework/operator-lifecycle-manager v0.24.0/go.mod h1:2zDUxcpW2idTLjRw36WlMetHZ50Nlf1C3JxASPfYS20= +github.com/operator-framework/operator-lifecycle-manager v0.25.0 h1:Y/ocKKQXxmxxNMH3xIbB0kRjicYIN9cN8ka/DUgjTGQ= +github.com/operator-framework/operator-lifecycle-manager v0.25.0/go.mod h1:0DeNITwrneRQ7b5Qd6Dnp9+CpIBbv3F21RyncsK5ivU= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= From ae16c06b57fb9734c9eeddf3b92bc7b933103257 Mon Sep 17 00:00:00 2001 From: Michael Okoko <10512379+idoqo@users.noreply.github.com> Date: Wed, 14 Jun 2023 14:31:52 +0100 Subject: [PATCH 046/123] PMM-9544 add alerting template for agent down (#2245) * add alerting template for agent down * drop tiers * fix file name * improve messaging --- managed/data/iatemplates/agent_down.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 managed/data/iatemplates/agent_down.yml diff --git a/managed/data/iatemplates/agent_down.yml b/managed/data/iatemplates/agent_down.yml new file mode 100644 index 0000000000..60c83dc893 --- /dev/null +++ b/managed/data/iatemplates/agent_down.yml @@ -0,0 +1,12 @@ +--- +templates: + - name: pmm_agent_down + version: 1 + summary: PMM agent down + expr: 'pmm_managed_inventory_agents{agent_type="pmm-agent"} == bool 0 ' + for: 1m + severity: critical + annotations: + description: |- + PMM agent on node '{{ $labels.node_id }}' cannot be reached. Host may be down. + summary: PMM agent on node '{{ $labels.node_id }}' cannot be reached. Host may be down.x From 75ccd719727c6daeb4a44312f6108ca7c9da8990 Mon Sep 17 00:00:00 2001 From: Michael Okoko <10512379+idoqo@users.noreply.github.com> Date: Wed, 14 Jun 2023 15:25:03 +0100 Subject: [PATCH 047/123] remove stray x from summary (#2273) --- managed/data/iatemplates/agent_down.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/managed/data/iatemplates/agent_down.yml b/managed/data/iatemplates/agent_down.yml index 60c83dc893..e913696f6e 100644 --- a/managed/data/iatemplates/agent_down.yml +++ b/managed/data/iatemplates/agent_down.yml @@ -9,4 +9,5 @@ templates: annotations: description: |- PMM agent on node '{{ $labels.node_id }}' cannot be reached. Host may be down. - summary: PMM agent on node '{{ $labels.node_id }}' cannot be reached. Host may be down.x + summary: PMM agent on node '{{ $labels.node_id }}' cannot be reached. Host may be down. + From c2fcdbbee0da3ebaca931aaa5d326ad7fc2ca6f2 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Wed, 14 Jun 2023 20:07:55 +0300 Subject: [PATCH 048/123] PMM-7 enable `ireturn` linter rule (#2269) * PMM-7 enable `ireturn` linter rule * PMM-7 remove unused disables * PMM-7 adress more lint warnings --- .golangci.yml | 3 +- admin/commands/pmm/server/docker/base.go | 2 +- .../pgstatmonitor/pgstatmonitor_models.go | 6 +- agent/client/channel/channel.go | 2 +- agent/versioner/versioner.go | 2 +- api/agentpb/agent.go | 68 +++++++++---------- managed/services/agents/channel/channel.go | 2 +- managed/services/agents/grpc/agent_server.go | 2 +- managed/services/backup/storage.go | 2 +- managed/services/converters.go | 6 +- .../dbaas/kubernetes/client/client.go | 4 +- .../kubernetes/client/database/database.go | 4 +- .../dbaas/kubernetes/client/writer.go | 2 +- managed/services/inventory/agents.go | 8 +-- .../services/inventory/grpc/agents_server.go | 2 +- .../services/inventory/grpc/nodes_server.go | 2 +- .../inventory/grpc/services_server.go | 2 +- managed/services/inventory/nodes.go | 4 +- managed/services/inventory/services.go | 4 +- .../management/dbaas/db_cluster_service.go | 6 +- .../services/management/dbaas/kube_clients.go | 2 +- .../management/dbaas/kubernetes_server.go | 2 +- .../services/management/dbaas/logs_service.go | 2 +- .../management/dbaas/psmdb_cluster_service.go | 2 +- .../management/dbaas/pxc_cluster_service.go | 2 +- .../management/dbaas/template_service.go | 2 +- .../management/grpc/actions_server.go | 2 +- .../management/grpc/mongodb_server.go | 2 +- .../services/management/grpc/mysql_server.go | 2 +- .../services/management/grpc/node_server.go | 2 +- .../management/grpc/postgresql_server.go | 2 +- .../management/grpc/proxysql_server.go | 2 +- managed/services/scheduler/scheduler.go | 2 +- managed/services/scheduler/task.go | 4 +- .../telemetry/datasource_grafana_sqlitedb.go | 2 +- managed/services/telemetry/datasources.go | 2 +- managed/utils/irt/metrics.go | 2 +- 37 files changed, 84 insertions(+), 85 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 6242d83ad0..e79023035c 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -50,6 +50,7 @@ linters-settings: - stdlib - github.com/charmbracelet/bubbletea.Model - github.com/percona/pmm/admin/commands.Result + - github.com/percona/pmm/agent/runner/actions.Action lll: line-length: 170 @@ -110,7 +111,6 @@ linters: - gocritic - revive - paralleltest - - ireturn - gocognit - maintidx - interfacebloat @@ -144,6 +144,7 @@ issues: - funlen # tests may be long - gocognit # triggered by subtests - gomnd # tests are full of magic numbers + - ireturn # we have exceptions, so need to silence them in tests - lll # tests often require long lines - nonamedreturns # it's not critical for tests, albeit desirable - testpackage # senseless diff --git a/admin/commands/pmm/server/docker/base.go b/admin/commands/pmm/server/docker/base.go index 3bf27dad12..643fae3d71 100644 --- a/admin/commands/pmm/server/docker/base.go +++ b/admin/commands/pmm/server/docker/base.go @@ -35,7 +35,7 @@ type prepareOpts struct { install bool } -func prepareDocker(ctx context.Context, dockerFn Functions, opts prepareOpts) (Functions, error) { +func prepareDocker(ctx context.Context, dockerFn Functions, opts prepareOpts) (Functions, error) { //nolint:ireturn if dockerFn == nil { d, err := docker.New(nil) if err != nil { diff --git a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go index ce5e314c2c..a3f865d70f 100644 --- a/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go +++ b/agent/agents/postgres/pgstatmonitor/pgstatmonitor_models.go @@ -105,7 +105,7 @@ type field struct { pointer interface{} } -func newPgStatMonitorStructs(vPGSM pgStatMonitorVersion, vPG pgVersion) (*pgStatMonitor, reform.View) { +func newPgStatMonitorStructs(vPGSM pgStatMonitorVersion, vPG pgVersion) (*pgStatMonitor, reform.View) { //nolint:ireturn s := &pgStatMonitor{} fields := []field{ {info: parse.FieldInfo{Name: "Bucket", Type: "int64", Column: "bucket"}, pointer: &s.Bucket}, @@ -266,7 +266,7 @@ func (v *pgStatMonitorAllViewType) Columns() []string { } // NewStruct makes a new struct for that view or table. -func (v *pgStatMonitorAllViewType) NewStruct() reform.Struct { +func (v *pgStatMonitorAllViewType) NewStruct() reform.Struct { //nolint:ireturn str, _ := newPgStatMonitorStructs(v.vPGSM, v.vPG) return str } @@ -343,7 +343,7 @@ func (s *pgStatMonitor) Pointers() []interface{} { } // View returns View object for that struct. -func (s *pgStatMonitor) View() reform.View { +func (s *pgStatMonitor) View() reform.View { //nolint:ireturn return s.view } diff --git a/agent/client/channel/channel.go b/agent/client/channel/channel.go index 9dcb0620a1..a7313ea584 100644 --- a/agent/client/channel/channel.go +++ b/agent/client/channel/channel.go @@ -165,7 +165,7 @@ func (c *Channel) Send(resp *AgentResponse) { // If error occurred - subscription got canceled - returned payload is nil and error contains reason for cancelation. // Response and error will be both nil if channel is closed. // It is no-op once channel is closed (see Wait). -func (c *Channel) SendAndWaitResponse(payload agentpb.AgentRequestPayload) (agentpb.ServerResponsePayload, error) { +func (c *Channel) SendAndWaitResponse(payload agentpb.AgentRequestPayload) (agentpb.ServerResponsePayload, error) { //nolint:ireturn id := atomic.AddUint32(&c.lastSentRequestID, 1) ch := c.subscribe(id) diff --git a/agent/versioner/versioner.go b/agent/versioner/versioner.go index ec30e4e91a..9e737e230c 100644 --- a/agent/versioner/versioner.go +++ b/agent/versioner/versioner.go @@ -68,7 +68,7 @@ func (RealExecFunctions) LookPath(file string) (string, error) { } // CommandContext calls Go's implementation of the CommandContext() function. -func (RealExecFunctions) CommandContext(ctx context.Context, name string, arg ...string) CombinedOutputer { +func (RealExecFunctions) CommandContext(ctx context.Context, name string, arg ...string) CombinedOutputer { //nolint:ireturn return exec.CommandContext(ctx, name, arg...) } diff --git a/api/agentpb/agent.go b/api/agentpb/agent.go index c3055b80f3..b866f40fe9 100644 --- a/api/agentpb/agent.go +++ b/api/agentpb/agent.go @@ -56,145 +56,145 @@ type ServerRequestPayload interface { // A list of AgentMessage request payloads. -func (m *Ping) AgentMessageRequestPayload() isAgentMessage_Payload { +func (m *Ping) AgentMessageRequestPayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_Ping{Ping: m} } -func (m *StateChangedRequest) AgentMessageRequestPayload() isAgentMessage_Payload { +func (m *StateChangedRequest) AgentMessageRequestPayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_StateChanged{StateChanged: m} } -func (m *QANCollectRequest) AgentMessageRequestPayload() isAgentMessage_Payload { +func (m *QANCollectRequest) AgentMessageRequestPayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_QanCollect{QanCollect: m} } -func (m *ActionResultRequest) AgentMessageRequestPayload() isAgentMessage_Payload { +func (m *ActionResultRequest) AgentMessageRequestPayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_ActionResult{ActionResult: m} } -func (m *JobProgress) AgentMessageRequestPayload() isAgentMessage_Payload { +func (m *JobProgress) AgentMessageRequestPayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_JobProgress{JobProgress: m} } -func (m *JobResult) AgentMessageRequestPayload() isAgentMessage_Payload { +func (m *JobResult) AgentMessageRequestPayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_JobResult{JobResult: m} } // A list of AgentMessage response payloads. -func (m *Pong) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *Pong) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_Pong{Pong: m} } -func (m *SetStateResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *SetStateResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_SetState{SetState: m} } -func (m *StartActionResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *StartActionResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_StartAction{StartAction: m} } -func (m *StopActionResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *StopActionResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_StopAction{StopAction: m} } -func (m *CheckConnectionResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *CheckConnectionResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_CheckConnection{CheckConnection: m} } -func (m *JobStatusResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *JobStatusResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_JobStatus{JobStatus: m} } -func (m *StartJobResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *StartJobResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_StartJob{StartJob: m} } -func (m *StopJobResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *StopJobResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_StopJob{StopJob: m} } -func (m *JobProgress) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *JobProgress) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_JobProgress{JobProgress: m} } -func (m *JobResult) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *JobResult) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_JobResult{JobResult: m} } -func (m *GetVersionsResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *GetVersionsResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_GetVersions{GetVersions: m} } -func (m *PBMSwitchPITRResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *PBMSwitchPITRResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_PbmSwitchPitr{PbmSwitchPitr: m} } -func (m *AgentLogsResponse) AgentMessageResponsePayload() isAgentMessage_Payload { +func (m *AgentLogsResponse) AgentMessageResponsePayload() isAgentMessage_Payload { //nolint:ireturn return &AgentMessage_AgentLogs{AgentLogs: m} } // A list of ServerMessage response payloads. -func (m *Pong) ServerMessageResponsePayload() isServerMessage_Payload { +func (m *Pong) ServerMessageResponsePayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_Pong{Pong: m} } -func (m *StateChangedResponse) ServerMessageResponsePayload() isServerMessage_Payload { +func (m *StateChangedResponse) ServerMessageResponsePayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_StateChanged{StateChanged: m} } -func (m *QANCollectResponse) ServerMessageResponsePayload() isServerMessage_Payload { +func (m *QANCollectResponse) ServerMessageResponsePayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_QanCollect{QanCollect: m} } -func (m *ActionResultResponse) ServerMessageResponsePayload() isServerMessage_Payload { +func (m *ActionResultResponse) ServerMessageResponsePayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_ActionResult{ActionResult: m} } // A list of ServerMessage request payloads. -func (m *Ping) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *Ping) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_Ping{Ping: m} } -func (m *SetStateRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *SetStateRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_SetState{SetState: m} } -func (m *StartActionRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *StartActionRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_StartAction{StartAction: m} } -func (m *StopActionRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *StopActionRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_StopAction{StopAction: m} } -func (m *CheckConnectionRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *CheckConnectionRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_CheckConnection{CheckConnection: m} } -func (m *StartJobRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *StartJobRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_StartJob{StartJob: m} } -func (m *StopJobRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *StopJobRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_StopJob{StopJob: m} } -func (m *JobStatusRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *JobStatusRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_JobStatus{JobStatus: m} } -func (m *GetVersionsRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *GetVersionsRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_GetVersions{GetVersions: m} } -func (m *PBMSwitchPITRRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *PBMSwitchPITRRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_PbmSwitchPitr{PbmSwitchPitr: m} } -func (m *AgentLogsRequest) ServerMessageRequestPayload() isServerMessage_Payload { +func (m *AgentLogsRequest) ServerMessageRequestPayload() isServerMessage_Payload { //nolint:ireturn return &ServerMessage_AgentLogs{AgentLogs: m} } diff --git a/managed/services/agents/channel/channel.go b/managed/services/agents/channel/channel.go index 0c7ee09243..6fc8b8f9ed 100644 --- a/managed/services/agents/channel/channel.go +++ b/managed/services/agents/channel/channel.go @@ -156,7 +156,7 @@ func (c *Channel) Send(resp *ServerResponse) { // If error occurred - subscription got canceled - returned payload is nil and error contains reason for cancellation. // Response and error will be both nil if channel is closed. // It is no-op once channel is closed (see Wait). -func (c *Channel) SendAndWaitResponse(payload agentpb.ServerRequestPayload) (agentpb.AgentResponsePayload, error) { +func (c *Channel) SendAndWaitResponse(payload agentpb.ServerRequestPayload) (agentpb.AgentResponsePayload, error) { //nolint:ireturn id := atomic.AddUint32(&c.lastSentRequestID, 1) ch := c.subscribe(id) diff --git a/managed/services/agents/grpc/agent_server.go b/managed/services/agents/grpc/agent_server.go index a974524adc..42ef5b0d09 100644 --- a/managed/services/agents/grpc/agent_server.go +++ b/managed/services/agents/grpc/agent_server.go @@ -29,7 +29,7 @@ type agentServer struct { } // NewAgentServer creates new agent server. -func NewAgentServer(r *agents.Handler) agentpb.AgentServer { +func NewAgentServer(r *agents.Handler) agentpb.AgentServer { //nolint:ireturn return &agentServer{ handler: r, } diff --git a/managed/services/backup/storage.go b/managed/services/backup/storage.go index afae1fd4a4..27ab35acec 100644 --- a/managed/services/backup/storage.go +++ b/managed/services/backup/storage.go @@ -21,7 +21,7 @@ import ( ) // GetStorageForLocation returns storage client depending on location type. -func GetStorageForLocation(location *models.BackupLocation) Storage { +func GetStorageForLocation(location *models.BackupLocation) Storage { //nolint:ireturn switch location.Type { case models.S3BackupLocationType: return minio.New() diff --git a/managed/services/converters.go b/managed/services/converters.go index 65b574094c..14aca4414b 100644 --- a/managed/services/converters.go +++ b/managed/services/converters.go @@ -28,7 +28,7 @@ import ( ) // ToAPINode converts Node database model to API model. -func ToAPINode(node *models.Node) (inventorypb.Node, error) { +func ToAPINode(node *models.Node) (inventorypb.Node, error) { //nolint:ireturn labels, err := node.GetCustomLabels() if err != nil { return nil, err @@ -101,7 +101,7 @@ func ToAPINode(node *models.Node) (inventorypb.Node, error) { } // ToAPIService converts Service database model to API model. -func ToAPIService(service *models.Service) (inventorypb.Service, error) { +func ToAPIService(service *models.Service) (inventorypb.Service, error) { //nolint:ireturn labels, err := service.GetCustomLabels() if err != nil { return nil, err @@ -194,7 +194,7 @@ func ToAPIService(service *models.Service) (inventorypb.Service, error) { } // ToAPIAgent converts Agent database model to API model. -func ToAPIAgent(q *reform.Querier, agent *models.Agent) (inventorypb.Agent, error) { +func ToAPIAgent(q *reform.Querier, agent *models.Agent) (inventorypb.Agent, error) { //nolint:ireturn labels, err := agent.GetCustomLabels() if err != nil { return nil, err diff --git a/managed/services/dbaas/kubernetes/client/client.go b/managed/services/dbaas/kubernetes/client/client.go index 4256a92f61..5313ec32a7 100644 --- a/managed/services/dbaas/kubernetes/client/client.go +++ b/managed/services/dbaas/kubernetes/client/client.go @@ -432,7 +432,7 @@ func (c *Client) retrieveMetaFromObject(obj runtime.Object) (namespace, name str return } -func (c *Client) resourceClient(gv schema.GroupVersion) (rest.Interface, error) { +func (c *Client) resourceClient(gv schema.GroupVersion) (*rest.RESTClient, error) { cfg := c.restConfig cfg.ContentConfig = resource.UnstructuredPlusDefaultContentConfig() cfg.GroupVersion = &gv @@ -786,7 +786,7 @@ func (c Client) GetSubscriptionCSV(ctx context.Context, subKey types.NamespacedN return csvKey, wait.PollImmediateUntil(time.Second, subscriptionInstalledCSV, ctx.Done()) } -func (c *Client) getKubeclient() (client.Client, error) { +func (c *Client) getKubeclient() (client.Client, error) { //nolint:ireturn rm, err := apiutil.NewDynamicRESTMapper(c.restConfig) if err != nil { return nil, errors.Wrap(err, "failed to create dynamic rest mapper") diff --git a/managed/services/dbaas/kubernetes/client/database/database.go b/managed/services/dbaas/kubernetes/client/database/database.go index ee69257606..f803a10e72 100644 --- a/managed/services/dbaas/kubernetes/client/database/database.go +++ b/managed/services/dbaas/kubernetes/client/database/database.go @@ -62,7 +62,7 @@ func NewForConfig(c *rest.Config) (*DatabaseClusterClient, error) { return &DatabaseClusterClient{restClient: client}, nil } -func (c *DatabaseClusterClient) DBClusters(namespace string) DatabaseClusterInterface { +func (c *DatabaseClusterClient) DBClusters(namespace string) DatabaseClusterInterface { //nolint:ireturn return &dbClusterClient{ restClient: c.restClient, namespace: namespace, @@ -105,7 +105,7 @@ func (c *dbClusterClient) Get(ctx context.Context, name string, opts metav1.GetO return result, err } -func (c *dbClusterClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { +func (c *dbClusterClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { //nolint:ireturn opts.Watch = true return c.restClient. Get(). diff --git a/managed/services/dbaas/kubernetes/client/writer.go b/managed/services/dbaas/kubernetes/client/writer.go index 7f28ece66c..a058cc0531 100644 --- a/managed/services/dbaas/kubernetes/client/writer.go +++ b/managed/services/dbaas/kubernetes/client/writer.go @@ -38,7 +38,7 @@ type prefixWriter struct { var _ PrefixWriter = &prefixWriter{} // NewPrefixWriter creates a new PrefixWriter. -func NewPrefixWriter(out io.Writer) PrefixWriter { +func NewPrefixWriter(out io.Writer) PrefixWriter { //nolint:ireturn return &prefixWriter{out: out} } diff --git a/managed/services/inventory/agents.go b/managed/services/inventory/agents.go index 534706afb4..deae73a93b 100644 --- a/managed/services/inventory/agents.go +++ b/managed/services/inventory/agents.go @@ -52,7 +52,7 @@ func NewAgentsService(db *reform.DB, r agentsRegistry, state agentsStateUpdater, } } -func toInventoryAgent(q *reform.Querier, row *models.Agent, registry agentsRegistry) (inventorypb.Agent, error) { +func toInventoryAgent(q *reform.Querier, row *models.Agent, registry agentsRegistry) (inventorypb.Agent, error) { //nolint:ireturn agent, err := services.ToAPIAgent(q, row) if err != nil { return nil, err @@ -65,7 +65,7 @@ func toInventoryAgent(q *reform.Querier, row *models.Agent, registry agentsRegis } // changeAgent changes common parameters for given Agent. -func (as *AgentsService) changeAgent(agentID string, common *inventorypb.ChangeCommonAgentParams) (inventorypb.Agent, error) { +func (as *AgentsService) changeAgent(agentID string, common *inventorypb.ChangeCommonAgentParams) (inventorypb.Agent, error) { //nolint:ireturn var agent inventorypb.Agent e := as.db.InTransaction(func(tx *reform.TX) error { params := &models.ChangeCommonAgentParams{ @@ -147,9 +147,7 @@ func (as *AgentsService) List(ctx context.Context, filters models.AgentFilters) } // Get selects a single Agent by ID. -// -//nolint:unparam -func (as *AgentsService) Get(ctx context.Context, id string) (inventorypb.Agent, error) { +func (as *AgentsService) Get(ctx context.Context, id string) (inventorypb.Agent, error) { //nolint:ireturn,unparam var res inventorypb.Agent e := as.db.InTransaction(func(tx *reform.TX) error { row, err := models.FindAgentByID(tx.Querier, id) diff --git a/managed/services/inventory/grpc/agents_server.go b/managed/services/inventory/grpc/agents_server.go index 84a71782f4..b7d1a73eb5 100644 --- a/managed/services/inventory/grpc/agents_server.go +++ b/managed/services/inventory/grpc/agents_server.go @@ -32,7 +32,7 @@ type agentsServer struct { } // NewAgentsServer returns Inventory API handler for managing Agents. -func NewAgentsServer(s *inventory.AgentsService) inventorypb.AgentsServer { +func NewAgentsServer(s *inventory.AgentsService) inventorypb.AgentsServer { //nolint:ireturn return &agentsServer{s: s} } diff --git a/managed/services/inventory/grpc/nodes_server.go b/managed/services/inventory/grpc/nodes_server.go index 1e6b9b997a..ba08800ad8 100644 --- a/managed/services/inventory/grpc/nodes_server.go +++ b/managed/services/inventory/grpc/nodes_server.go @@ -31,7 +31,7 @@ type nodesServer struct { } // NewNodesServer returns Inventory API handler for managing Nodes. -func NewNodesServer(svc *inventory.NodesService) inventorypb.NodesServer { +func NewNodesServer(svc *inventory.NodesService) inventorypb.NodesServer { //nolint:ireturn return &nodesServer{svc: svc} } diff --git a/managed/services/inventory/grpc/services_server.go b/managed/services/inventory/grpc/services_server.go index 70b67efac5..72d0798124 100644 --- a/managed/services/inventory/grpc/services_server.go +++ b/managed/services/inventory/grpc/services_server.go @@ -33,7 +33,7 @@ type servicesServer struct { } // NewServicesServer returns Inventory API handler for managing Services. -func NewServicesServer(s *inventory.ServicesService) inventorypb.ServicesServer { +func NewServicesServer(s *inventory.ServicesService) inventorypb.ServicesServer { //nolint:ireturn return &servicesServer{s: s} } diff --git a/managed/services/inventory/nodes.go b/managed/services/inventory/nodes.go index c6a2f7eb69..10516dfd2d 100644 --- a/managed/services/inventory/nodes.go +++ b/managed/services/inventory/nodes.go @@ -70,9 +70,7 @@ func (s *NodesService) List(ctx context.Context, filters models.NodeFilters) ([] } // Get returns a single Node by ID. -// -//nolint:unparam -func (s *NodesService) Get(ctx context.Context, req *inventorypb.GetNodeRequest) (inventorypb.Node, error) { +func (s *NodesService) Get(ctx context.Context, req *inventorypb.GetNodeRequest) (inventorypb.Node, error) { //nolint:unparam,ireturn modelNode := &models.Node{} e := s.db.InTransaction(func(tx *reform.TX) error { var err error diff --git a/managed/services/inventory/services.go b/managed/services/inventory/services.go index d9d1c65aa4..a742b24c92 100644 --- a/managed/services/inventory/services.go +++ b/managed/services/inventory/services.go @@ -111,9 +111,7 @@ func (ss *ServicesService) ListActiveServiceTypes(ctx context.Context) ([]invent } // Get selects a single Service by ID. -// -//nolint:unparam -func (ss *ServicesService) Get(ctx context.Context, id string) (inventorypb.Service, error) { +func (ss *ServicesService) Get(ctx context.Context, id string) (inventorypb.Service, error) { //nolint:unparam,ireturn service := &models.Service{} e := ss.db.InTransaction(func(tx *reform.TX) error { var err error diff --git a/managed/services/management/dbaas/db_cluster_service.go b/managed/services/management/dbaas/db_cluster_service.go index 7d382e8552..3746727b5c 100644 --- a/managed/services/management/dbaas/db_cluster_service.go +++ b/managed/services/management/dbaas/db_cluster_service.go @@ -55,7 +55,11 @@ type DBClusterService struct { } // NewDBClusterService creates DB Clusters Service. -func NewDBClusterService(db *reform.DB, grafanaClient grafanaClient, versionServiceClient *VersionServiceClient) dbaasv1beta1.DBClustersServer { +func NewDBClusterService( //nolint:ireturn + db *reform.DB, + grafanaClient grafanaClient, + versionServiceClient *VersionServiceClient, +) dbaasv1beta1.DBClustersServer { l := logrus.WithField("component", "dbaas_db_cluster") return &DBClusterService{ db: db, diff --git a/managed/services/management/dbaas/kube_clients.go b/managed/services/management/dbaas/kube_clients.go index 07351958c4..c6328b4f06 100644 --- a/managed/services/management/dbaas/kube_clients.go +++ b/managed/services/management/dbaas/kube_clients.go @@ -43,7 +43,7 @@ func NewKubeStorage(db *reform.DB) *KubeStorage { } // GetOrSetClient gets client from map or sets a new client to the map -func (k *KubeStorage) GetOrSetClient(name string) (kubernetesClient, error) { +func (k *KubeStorage) GetOrSetClient(name string) (kubernetesClient, error) { //nolint:ireturn k.mu.Lock() defer k.mu.Unlock() kubeClient, ok := k.clients[name] diff --git a/managed/services/management/dbaas/kubernetes_server.go b/managed/services/management/dbaas/kubernetes_server.go index 20dd99aa7e..b8de890a9d 100644 --- a/managed/services/management/dbaas/kubernetes_server.go +++ b/managed/services/management/dbaas/kubernetes_server.go @@ -67,7 +67,7 @@ type kubernetesServer struct { } // NewKubernetesServer creates Kubernetes Server. -func NewKubernetesServer(db *reform.DB, dbaasClient dbaasClient, versionService versionService, +func NewKubernetesServer(db *reform.DB, dbaasClient dbaasClient, versionService versionService, //nolint:ireturn grafanaClient grafanaClient, ) dbaasv1beta1.KubernetesServer { l := logrus.WithField("component", "kubernetes_server") diff --git a/managed/services/management/dbaas/logs_service.go b/managed/services/management/dbaas/logs_service.go index 459cc83942..6cef57780c 100644 --- a/managed/services/management/dbaas/logs_service.go +++ b/managed/services/management/dbaas/logs_service.go @@ -46,7 +46,7 @@ type tuple struct { } // NewLogsService creates new LogsService. -func NewLogsService(db *reform.DB) dbaasv1beta1.LogsAPIServer { +func NewLogsService(db *reform.DB) dbaasv1beta1.LogsAPIServer { //nolint:ireturn l := logrus.WithField("component", "logs_api") return &LogsService{db: db, l: l} } diff --git a/managed/services/management/dbaas/psmdb_cluster_service.go b/managed/services/management/dbaas/psmdb_cluster_service.go index 083e296d8f..66365ae9b9 100644 --- a/managed/services/management/dbaas/psmdb_cluster_service.go +++ b/managed/services/management/dbaas/psmdb_cluster_service.go @@ -54,7 +54,7 @@ type PSMDBClusterService struct { } // NewPSMDBClusterService creates PSMDB Service. -func NewPSMDBClusterService(db *reform.DB, grafanaClient grafanaClient, +func NewPSMDBClusterService(db *reform.DB, grafanaClient grafanaClient, //nolint:ireturn componentsService componentsService, versionServiceURL string, ) dbaasv1beta1.PSMDBClustersServer { l := logrus.WithField("component", "psmdb_cluster") diff --git a/managed/services/management/dbaas/pxc_cluster_service.go b/managed/services/management/dbaas/pxc_cluster_service.go index d37447aea5..e9b007a197 100644 --- a/managed/services/management/dbaas/pxc_cluster_service.go +++ b/managed/services/management/dbaas/pxc_cluster_service.go @@ -58,7 +58,7 @@ type PXCClustersService struct { } // NewPXCClusterService creates PXC Service. -func NewPXCClusterService(db *reform.DB, grafanaClient grafanaClient, componentsService componentsService, +func NewPXCClusterService(db *reform.DB, grafanaClient grafanaClient, componentsService componentsService, //nolint:ireturn versionServiceURL string, ) dbaasv1beta1.PXCClustersServer { l := logrus.WithField("component", "pxc_cluster") diff --git a/managed/services/management/dbaas/template_service.go b/managed/services/management/dbaas/template_service.go index 237717fee3..527e667857 100644 --- a/managed/services/management/dbaas/template_service.go +++ b/managed/services/management/dbaas/template_service.go @@ -37,7 +37,7 @@ type TemplateService struct { } // NewTemplateService creates DB Clusters Service. -func NewTemplateService(db *reform.DB) dbaasv1beta1.TemplatesServer { +func NewTemplateService(db *reform.DB) dbaasv1beta1.TemplatesServer { //nolint:ireturn l := logrus.WithField("component", "dbaas_db_cluster") return &TemplateService{ db: db, diff --git a/managed/services/management/grpc/actions_server.go b/managed/services/management/grpc/actions_server.go index 9beb7316be..64b59b0b70 100644 --- a/managed/services/management/grpc/actions_server.go +++ b/managed/services/management/grpc/actions_server.go @@ -45,7 +45,7 @@ var ( ) // NewActionsServer creates Management Actions Server. -func NewActionsServer(a *agents.ActionsService, db *reform.DB) managementpb.ActionsServer { +func NewActionsServer(a *agents.ActionsService, db *reform.DB) managementpb.ActionsServer { //nolint:ireturn l := logrus.WithField("component", "actions.go") return &actionsServer{a: a, db: db, l: l} } diff --git a/managed/services/management/grpc/mongodb_server.go b/managed/services/management/grpc/mongodb_server.go index 3a9299ae5d..c6c3a41091 100644 --- a/managed/services/management/grpc/mongodb_server.go +++ b/managed/services/management/grpc/mongodb_server.go @@ -30,7 +30,7 @@ type mongoDBServer struct { } // NewManagementMongoDBServer creates Management MongoDB Server. -func NewManagementMongoDBServer(s *management.MongoDBService) managementpb.MongoDBServer { +func NewManagementMongoDBServer(s *management.MongoDBService) managementpb.MongoDBServer { //nolint:ireturn return &mongoDBServer{svc: s} } diff --git a/managed/services/management/grpc/mysql_server.go b/managed/services/management/grpc/mysql_server.go index 3091103d2b..754770bbbc 100644 --- a/managed/services/management/grpc/mysql_server.go +++ b/managed/services/management/grpc/mysql_server.go @@ -30,7 +30,7 @@ type mySQLServer struct { } // NewManagementMySQLServer creates Management MySQL Server. -func NewManagementMySQLServer(s *management.MySQLService) managementpb.MySQLServer { +func NewManagementMySQLServer(s *management.MySQLService) managementpb.MySQLServer { //nolint:ireturn return &mySQLServer{svc: s} } diff --git a/managed/services/management/grpc/node_server.go b/managed/services/management/grpc/node_server.go index e9a549176e..57e54e5a30 100644 --- a/managed/services/management/grpc/node_server.go +++ b/managed/services/management/grpc/node_server.go @@ -30,7 +30,7 @@ type nodeServer struct { } // NewManagementNodeServer creates Management Node Server. -func NewManagementNodeServer(s *management.NodeService) managementpb.NodeServer { +func NewManagementNodeServer(s *management.NodeService) managementpb.NodeServer { //nolint:ireturn return &nodeServer{svc: s} } diff --git a/managed/services/management/grpc/postgresql_server.go b/managed/services/management/grpc/postgresql_server.go index d812e0b65a..cad7f99a94 100644 --- a/managed/services/management/grpc/postgresql_server.go +++ b/managed/services/management/grpc/postgresql_server.go @@ -30,7 +30,7 @@ type postgreSQLServer struct { } // NewManagementPostgreSQLServer creates Management PostgreSQL Server. -func NewManagementPostgreSQLServer(s *management.PostgreSQLService) managementpb.PostgreSQLServer { +func NewManagementPostgreSQLServer(s *management.PostgreSQLService) managementpb.PostgreSQLServer { //nolint:ireturn return &postgreSQLServer{svc: s} } diff --git a/managed/services/management/grpc/proxysql_server.go b/managed/services/management/grpc/proxysql_server.go index fe51149f33..2394827148 100644 --- a/managed/services/management/grpc/proxysql_server.go +++ b/managed/services/management/grpc/proxysql_server.go @@ -30,7 +30,7 @@ type proxySQLServer struct { } // NewManagementProxySQLServer creates Management ProxySQL Server. -func NewManagementProxySQLServer(s *management.ProxySQLService) managementpb.ProxySQLServer { +func NewManagementProxySQLServer(s *management.ProxySQLService) managementpb.ProxySQLServer { //nolint:ireturn return &proxySQLServer{svc: s} } diff --git a/managed/services/scheduler/scheduler.go b/managed/services/scheduler/scheduler.go index 660b2f8ce9..40b3d854c3 100644 --- a/managed/services/scheduler/scheduler.go +++ b/managed/services/scheduler/scheduler.go @@ -303,7 +303,7 @@ func (s *Service) taskFinished(id string, taskErr error) { } } -func (s *Service) convertDBTask(dbTask *models.ScheduledTask) (Task, error) { +func (s *Service) convertDBTask(dbTask *models.ScheduledTask) (Task, error) { //nolint:ireturn var task Task switch dbTask.Type { case models.ScheduledMySQLBackupTask: diff --git a/managed/services/scheduler/task.go b/managed/services/scheduler/task.go index b0df978bdb..c277623822 100644 --- a/managed/services/scheduler/task.go +++ b/managed/services/scheduler/task.go @@ -84,7 +84,7 @@ type mySQLBackupTask struct { } // NewMySQLBackupTask create new task for mysql backup. -func NewMySQLBackupTask(params *BackupTaskParams) (Task, error) { +func NewMySQLBackupTask(params *BackupTaskParams) (Task, error) { //nolint:ireturn if err := params.Validate(); err != nil { return nil, err } @@ -147,7 +147,7 @@ type mongoDBBackupTask struct { } // NewMongoDBBackupTask create new task for mongo backup. -func NewMongoDBBackupTask(params *BackupTaskParams) (Task, error) { +func NewMongoDBBackupTask(params *BackupTaskParams) (Task, error) { //nolint:ireturn if err := params.Validate(); err != nil { return nil, err } diff --git a/managed/services/telemetry/datasource_grafana_sqlitedb.go b/managed/services/telemetry/datasource_grafana_sqlitedb.go index 7939813006..dfa6606a3b 100644 --- a/managed/services/telemetry/datasource_grafana_sqlitedb.go +++ b/managed/services/telemetry/datasource_grafana_sqlitedb.go @@ -47,7 +47,7 @@ func (d *dsGrafanaSelect) Enabled() bool { } // NewDataSourceGrafanaSqliteDB makes new data source for grafana sqlite database metrics. -func NewDataSourceGrafanaSqliteDB(config DSGrafanaSqliteDB, l *logrus.Entry) DataSource { +func NewDataSourceGrafanaSqliteDB(config DSGrafanaSqliteDB, l *logrus.Entry) DataSource { //nolint:ireturn return &dsGrafanaSelect{ l: l, config: config, diff --git a/managed/services/telemetry/datasources.go b/managed/services/telemetry/datasources.go index d3c4ec92ac..79276d8aac 100644 --- a/managed/services/telemetry/datasources.go +++ b/managed/services/telemetry/datasources.go @@ -36,7 +36,7 @@ type dataSourceRegistry struct { } // NewDataSourceRegistry makes new data source registry -func NewDataSourceRegistry(config ServiceConfig, l *logrus.Entry) (DataSourceLocator, error) { +func NewDataSourceRegistry(config ServiceConfig, l *logrus.Entry) (DataSourceLocator, error) { //nolint:ireturn pmmDB, err := NewDsPmmDBSelect(*config.DataSources.PmmDBSelect, l) if err != nil { return nil, err diff --git a/managed/utils/irt/metrics.go b/managed/utils/irt/metrics.go index 843a648449..19c9876ee0 100644 --- a/managed/utils/irt/metrics.go +++ b/managed/utils/irt/metrics.go @@ -24,7 +24,7 @@ import ( ) // WithMetrics returns http.RoundTripper instrumented with returned Prometheus metrics. -func WithMetrics(t http.RoundTripper, subsystem string) (http.RoundTripper, prom.Collector) { +func WithMetrics(t http.RoundTripper, subsystem string) (http.RoundTripper, prom.Collector) { //nolint:ireturn m := &metrics{ inflight: prom.NewGauge(prom.GaugeOpts{ Namespace: "promhttp", From a8463400271d8e0d4e5ae17c267f2fd72c110d98 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Jun 2023 10:52:41 +0300 Subject: [PATCH 049/123] Bump golang.org/x/sync from 0.2.0 to 0.3.0 (#2275) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.2.0 to 0.3.0. - [Commits](https://github.com/golang/sync/compare/v0.2.0...v0.3.0) --- updated-dependencies: - dependency-name: golang.org/x/sync dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e3ce3d6f36..eb7af6435d 100644 --- a/go.mod +++ b/go.mod @@ -75,7 +75,7 @@ require ( go.mongodb.org/mongo-driver v1.11.6 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.9.0 - golang.org/x/sync v0.2.0 + golang.org/x/sync v0.3.0 golang.org/x/sys v0.9.0 golang.org/x/text v0.10.0 golang.org/x/tools v0.9.3 diff --git a/go.sum b/go.sum index 305edeb7db..646f5c0a1f 100644 --- a/go.sum +++ b/go.sum @@ -940,8 +940,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 0084114e776060ec8c006fa1bb1e4ad79b488ca7 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 15 Jun 2023 11:13:59 +0300 Subject: [PATCH 050/123] Revert "Bump github.com/operator-framework/operator-lifecycle-manager (#2271)" (#2274) This reverts commit 84948a77158331cd06d3a37115b3c87e93b61fad. --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index eb7af6435d..5490680599 100644 --- a/go.mod +++ b/go.mod @@ -50,10 +50,10 @@ require ( github.com/hashicorp/go-version v1.6.0 github.com/jmoiron/sqlx v1.3.5 github.com/jotaen/kong-completion v0.0.5 - github.com/lib/pq v1.10.7 + github.com/lib/pq v1.10.6 github.com/minio/minio-go/v7 v7.0.55 github.com/operator-framework/api v0.17.6 - github.com/operator-framework/operator-lifecycle-manager v0.25.0 + github.com/operator-framework/operator-lifecycle-manager v0.24.0 github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342 github.com/percona/dbaas-operator v0.1.6 @@ -230,7 +230,7 @@ require ( github.com/oklog/run v1.1.0 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc2 // indirect + github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/paulmach/orb v0.9.0 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect diff --git a/go.sum b/go.sum index 646f5c0a1f..2d7f4bc699 100644 --- a/go.sum +++ b/go.sum @@ -522,8 +522,8 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -625,15 +625,15 @@ github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec= +github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/operator-framework/api v0.17.6 h1:E6+vlvYUKafvoXYtCuHlDZrXX4vl8AT+r93OxNlzjpU= github.com/operator-framework/api v0.17.6/go.mod h1:l/cuwtPxkVUY7fzYgdust2m9tlmb8I4pOvbsUufRb24= -github.com/operator-framework/operator-lifecycle-manager v0.25.0 h1:Y/ocKKQXxmxxNMH3xIbB0kRjicYIN9cN8ka/DUgjTGQ= -github.com/operator-framework/operator-lifecycle-manager v0.25.0/go.mod h1:0DeNITwrneRQ7b5Qd6Dnp9+CpIBbv3F21RyncsK5ivU= +github.com/operator-framework/operator-lifecycle-manager v0.24.0 h1:9LOfvyohGEkNHwcOGOgw+w3ZAnGeT6JVh3CvIbWpnus= +github.com/operator-framework/operator-lifecycle-manager v0.24.0/go.mod h1:2zDUxcpW2idTLjRw36WlMetHZ50Nlf1C3JxASPfYS20= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= From 00058d3a724292965a1a707b5aa96a70fe52d73b Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Thu, 15 Jun 2023 12:51:14 +0300 Subject: [PATCH 051/123] PMM-12175 revert pmm.ini (#2277) * PMM-12175 revert pmm.ini * PMM-12175 revert pmm.ini --- update/ansible/playbook/tasks/files/pmm.ini | 130 ++++++++++++++++++++ update/ansible/playbook/tasks/update.yml | 13 +- 2 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 update/ansible/playbook/tasks/files/pmm.ini diff --git a/update/ansible/playbook/tasks/files/pmm.ini b/update/ansible/playbook/tasks/files/pmm.ini new file mode 100644 index 0000000000..73e4cd9615 --- /dev/null +++ b/update/ansible/playbook/tasks/files/pmm.ini @@ -0,0 +1,130 @@ +[unix_http_server] +chmod = 0700 +username = dummy +password = dummy + +[supervisorctl] +username = dummy +password = dummy + +; we rewrite autostart to true during update or build. +[program:pmm-update-perform-init] +command = /usr/sbin/pmm-update -run-playbook -playbook=/usr/share/pmm-update/ansible/playbook/tasks/init.yml +directory = / +autorestart = unexpected +priority=-1 +exitcodes = 0 +autostart = false +startretries = 3 +startsecs = 1 +stopsignal = TERM +stopwaitsecs = 300 +stdout_logfile = /srv/logs/pmm-update-perform-init.log +stdout_logfile_maxbytes = 50MB +stdout_logfile_backups = 3 +redirect_stderr = true + +[program:postgresql] +priority = 1 +command = + /usr/pgsql-14/bin/postgres + -D /srv/postgres14 + -c shared_preload_libraries=pg_stat_statements + -c pg_stat_statements.max=10000 + -c pg_stat_statements.track=all + -c pg_stat_statements.save=off +user = postgres +autorestart = true +autostart = true +startretries = 10 +startsecs = 1 +stopsignal = INT ; Fast Shutdown mode +stopwaitsecs = 300 +; postgresql.conf contains settings to log to stdout, +; so we delegate logfile management to supervisord +stdout_logfile = /srv/logs/postgresql14.log +stdout_logfile_maxbytes = 30MB +stdout_logfile_backups = 2 +redirect_stderr = true + +[program:clickhouse] +priority = 2 +command = /usr/bin/clickhouse-server --config-file=/etc/clickhouse-server/config.xml +autorestart = true +autostart = true +startretries = 10 +startsecs = 1 +stopsignal = TERM +stopwaitsecs = 300 +; config.xml contains settings to log to stdout (console), +; so we delegate logfile managemenet to supervisord +stdout_logfile = /srv/logs/clickhouse-server.log +stdout_logfile_maxbytes = 50MB +stdout_logfile_backups = 2 +redirect_stderr = true + +[program:nginx] +priority = 4 +command = nginx +autorestart = true +autostart = true +startretries = 10 +startsecs = 1 +stopsignal = TERM +stopwaitsecs = 10 +; nginx.conf contains settings to log to /dev/sdtout and /dev/stderr, +; which allows supervisord to manage the logs further. +stdout_logfile = /srv/logs/nginx.log +stdout_logfile_maxbytes = 50MB +stdout_logfile_backups = 2 +redirect_stderr = true + +[program:pmm-managed] +priority = 14 +command = + /usr/sbin/pmm-managed + --victoriametrics-config=/etc/victoriametrics-promscrape.yml + --victoriametrics-url=http://127.0.0.1:9090/prometheus + --postgres-name=pmm-managed + --postgres-username=pmm-managed + --postgres-password=pmm-managed + --supervisord-config-dir=/etc/supervisord.d +autorestart = true +autostart = true +startretries = 1000 +startsecs = 1 +stopsignal = TERM +stopwaitsecs = 300 +stdout_logfile = /srv/logs/pmm-managed.log +stdout_logfile_maxbytes = 50MB +stdout_logfile_backups = 2 +redirect_stderr = true + +[program:pmm-agent] +priority = 15 +command = /usr/sbin/pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml +autorestart = true +autostart = true +startretries = 1000 +startsecs = 1 +stopsignal = TERM +stopwaitsecs = 10 +stdout_logfile = /srv/logs/pmm-agent.log +stdout_logfile_maxbytes = 50MB +stdout_logfile_backups = 2 +redirect_stderr = true + +[program:pmm-update-perform] +command = /usr/sbin/pmm-update -perform -playbook=/usr/share/pmm-update/ansible/playbook/tasks/update.yml +directory = / +autorestart = unexpected +exitcodes = 0 +autostart = false +startretries = 10 +startsecs = 1 +stopsignal = TERM +stopwaitsecs = 300 +stdout_logfile = /srv/logs/pmm-update-perform.log +stdout_logfile_maxbytes = 50MB +stdout_logfile_backups = 3 +redirect_stderr = true diff --git a/update/ansible/playbook/tasks/update.yml b/update/ansible/playbook/tasks/update.yml index b8fdadc7db..df4cd7b7c2 100644 --- a/update/ansible/playbook/tasks/update.yml +++ b/update/ansible/playbook/tasks/update.yml @@ -58,6 +58,11 @@ state: directory - name: Upgrade supervisor config + copy: + src: pmm.ini + dest: /etc/supervisord.d/pmm.ini + + - name: Generate new supervisor config command: pmm-managed-init register: managed_init_result changed_when: True @@ -225,7 +230,13 @@ name: "{{ pmm_packages }}" state: latest - # restart pmm-managed first as it may update supervisord configuration on start + + # restart pmm-managed-init and pmm-managed first as they may update supervisord configuration on start + - name: Generate new supervisor config + command: pmm-managed-init + register: managed_init_result + changed_when: True + - name: Restart pmm-managed EL7 when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' command: supervisorctl {{ item }} pmm-managed From 8493ee099f7992b177e99c85fb7f0c3a0b9efff6 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 15 Jun 2023 15:54:40 +0300 Subject: [PATCH 052/123] PMM-12175 Revert #2017 Migrate Grafana to Postgres (#2272) * PMM-12175 Revert #2017 Migrate Grafana to Postgres * PMM-12175 unformat the code --- .../ansible/roles/pmm2-images/tasks/main.yml | 13 +- .../rpm/server/SPECS/grafana-db-migrator.spec | 3 +- build/scripts/build-server-rpm-all | 2 - .../tasks/roles/grafana/files/grafana.ini | 12 -- .../tasks/roles/grafana/tasks/main.yml | 36 ------ .../tasks/roles/initialization/tasks/main.yml | 37 ------ .../roles/sqlite-to-postgres/tasks/main.yml | 122 ------------------ update/ansible/playbook/tasks/update.yml | 33 ----- 8 files changed, 8 insertions(+), 250 deletions(-) delete mode 100644 update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml diff --git a/build/ansible/roles/pmm2-images/tasks/main.yml b/build/ansible/roles/pmm2-images/tasks/main.yml index f7812a6328..9787ed845f 100644 --- a/build/ansible/roles/pmm2-images/tasks/main.yml +++ b/build/ansible/roles/pmm2-images/tasks/main.yml @@ -29,7 +29,7 @@ # local yum repo for building of pmm server docker image in autobuild jobs - name: PMM | Add local YUM repository - when: ansible_virtualization_type == "docker" + when: ansible_virtualization_type == "docker" yum_repository: name: local description: Local YUM repository - x86_64 @@ -104,11 +104,11 @@ group: "{{ item.group }}" non_unique: true loop: - - { name: pmm, uid: 1000, comment: "PMM Server", shell: "/bin/false", home: "/home/pmm", group: pmm, } - - { name: nginx, uid: 999, comment: "nginx user", shell: "/sbin/nologin", home: "/var/cache/nginx", group: nginx, } - - { name: grafana, uid: 998, comment: "Grafana Dashboard", shell: "/sbin/nologin", home: "/etc/grafana", group: grafana, } - - { name: clickhouse, uid: 997, comment: "Clickhouse server", shell: "/sbin/nologin", home: "/var/lib/clickhouse", group: clickhouse, } - - { name: pmm-agent, uid: 996, comment: "pmm-agent", shell: "/bin/false", home: "/usr/local/percona/", group: pmm-agent, } + - { name: pmm, uid: 1000, comment: "PMM Server", shell: "/bin/false", home: "/home/pmm", group: pmm } + - { name: nginx, uid: 999, comment: "nginx user", shell: "/sbin/nologin", home: "/var/cache/nginx", group: nginx } + - { name: grafana, uid: 998, comment: "Grafana Dashboard", shell: "/sbin/nologin", home: "/etc/grafana", group: grafana } + - { name: clickhouse, uid: 997, comment: "Clickhouse server", shell: "/sbin/nologin", home: "/var/lib/clickhouse", group: clickhouse } + - { name: pmm-agent, uid: 996, comment: "pmm-agent", shell: "/bin/false", home: "/usr/local/percona/", group: pmm-agent } when: ansible_virtualization_type == "docker" - name: Create directories | Create dirs @@ -149,7 +149,6 @@ - pmm-update - dbaas-controller - dbaas-tools - - grafana-db-migrator - pmm-dump - vmproxy state: installed diff --git a/build/packages/rpm/server/SPECS/grafana-db-migrator.spec b/build/packages/rpm/server/SPECS/grafana-db-migrator.spec index 70de6bd075..303924aba5 100644 --- a/build/packages/rpm/server/SPECS/grafana-db-migrator.spec +++ b/build/packages/rpm/server/SPECS/grafana-db-migrator.spec @@ -46,4 +46,5 @@ install -m 755 dist/grafana-db-migrator %{buildroot}%{_sbindir}/ - Add fixes for CHAR fields * Tue Nov 02 2021 Nikita Beletskii - 1.0.1-1 -- Creating package for grafana-db-migrator \ No newline at end of file +- Creating package for grafana-db-migrator + diff --git a/build/scripts/build-server-rpm-all b/build/scripts/build-server-rpm-all index d9cb1a59a2..113937db22 100755 --- a/build/scripts/build-server-rpm-all +++ b/build/scripts/build-server-rpm-all @@ -12,13 +12,11 @@ ${bin_dir}/build-server-rpm pmm-update pmm ${bin_dir}/build-server-rpm dbaas-controller ${bin_dir}/build-server-rpm dbaas-tools ${bin_dir}/build-server-rpm pmm-dump -${bin_dir}/build-server-rpm grafana-db-migrator ${bin_dir}/build-server-rpm vmproxy pmm # 3rd-party ${bin_dir}/build-server-rpm victoriametrics ${bin_dir}/build-server-rpm alertmanager ${bin_dir}/build-server-rpm grafana -# ${bin_dir}/build-server-rpm grafana-db-migrator # vim: expandtab shiftwidth=4 tabstop=4 diff --git a/update/ansible/playbook/tasks/roles/grafana/files/grafana.ini b/update/ansible/playbook/tasks/roles/grafana/files/grafana.ini index 49a8aab607..73a6ed90e7 100644 --- a/update/ansible/playbook/tasks/roles/grafana/files/grafana.ini +++ b/update/ansible/playbook/tasks/roles/grafana/files/grafana.ini @@ -1,18 +1,6 @@ ##################### Grafana Configuration ##################### # Only changed settings. You can find default settings in /usr/share/grafana/conf/defaults.ini -#################################### Database #################################### -[database] -# You can configure the database connection by specifying type, host, name, user and password -# as separate properties or as on string using the url properties. - -# Either "mysql", "postgres" or "sqlite3", it's your choice -type = postgres -host = localhost -user = grafana -# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;""" -password = grafana - [paths] # Directory where grafana will automatically scan and look for plugins plugins = /srv/grafana/plugins diff --git a/update/ansible/playbook/tasks/roles/grafana/tasks/main.yml b/update/ansible/playbook/tasks/roles/grafana/tasks/main.yml index 6c53e92edf..cce395aa28 100644 --- a/update/ansible/playbook/tasks/roles/grafana/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/grafana/tasks/main.yml @@ -23,42 +23,6 @@ group: grafana mode: '0444' -- name: Check that the SQLite grafana database exists - stat: - path: /srv/grafana/grafana.db - register: sqlite_grafana - -- name: Temporary change database to SQLite - block: - - name: Remove database options (SQLite is default) - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: type - value: absent - - - name: Remove database host - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: host - state: absent - - - name: Remove database user - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: user - state: absent - - - name: Remove database password - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: password - state: absent - when: sqlite_grafana.stat.exists - - name: Create provisioning directory file: path: "/usr/share/grafana/conf/provisioning/{{ item }}" diff --git a/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml b/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml index 888d71ef64..7957b96ee6 100644 --- a/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/initialization/tasks/main.yml @@ -1,10 +1,5 @@ --- # This role contains tasks executed during initialization of PMM Server -- name: Determine type of upgrade - set_fact: - ui_upgrade: False - when: ui_upgrade is undefined - # PMM-10858 - In certain environments, including AWS EC2, some of the # EPEL repository mirrors do not respond within the time limit defined @@ -70,35 +65,3 @@ include_role: name: postgres when: is_postgres_11.stat.exists - -- name: Create grafana database in postgres - postgresql_db: - name: grafana - state: present - -- name: Create grafana user in postgres - postgresql_user: - db: grafana - name: grafana - password: grafana - priv: 'ALL' - expires: infinity - state: present - when: not ansible_check_mode - -- name: Run SQLite -> Postgres only for docker upgrade - block: - - name: Check that the SQLite grafana database exists - stat: - path: /srv/grafana/grafana.db - register: is_database_sqlite - - - name: Migrate Grafana database from SQLite to Postgresql - include_role: - name: sqlite-to-postgres - when: is_database_sqlite.stat.exists - tags: - - skip_ansible_lint # '503 Tasks that run when changed should likely be handlers'. - # We use current_version_file['failed'] because we don't want to run this on creating container - when: not ui_upgrade and current_version_file['failed'] == false - diff --git a/update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml b/update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml deleted file mode 100644 index d8f6b90937..0000000000 --- a/update/ansible/playbook/tasks/roles/sqlite-to-postgres/tasks/main.yml +++ /dev/null @@ -1,122 +0,0 @@ ---- -- name: Create Grafana backup dir - file: - path: "/srv/backup/grafana" - state: directory - owner: grafana - group: grafana - mode: '0700' - -- name: Stop grafana before upgrade - supervisorctl: - name: 'grafana' - state: stopped - -- name: Create backup for SQLite Grafana database - copy: - src: /srv/grafana/grafana.db - dest: "/srv/backup/grafana/grafana.db" - owner: grafana - group: grafana - mode: '0700' - -- name: Remove all ` symbols in grafana dashboard description - command: sqlite3 /srv/grafana/grafana.db -cmd ".timeout 60000" "UPDATE dashboard SET data = REPLACE(data, '`', '');" - changed_when: True - -- name: Disable provisioning before change database - ini_file: - dest: /etc/grafana/grafana.ini - section: paths - option: provisioning - value: conf/provisioning_disable - -- name: Switch to postgres - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: type - value: postgres - -- name: Set database host - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: host - value: localhost - -- name: Set database user - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: user - value: grafana - -- name: Set database password - ini_file: - dest: /etc/grafana/grafana.ini - section: database - option: password - value: grafana - -- name: Start grafana again - supervisorctl: - name: grafana - state: restarted - ignore_errors: yes - -- name: Check if initial data were created - postgresql_query: - db: grafana - query: SELECT 1 FROM org WHERE id=1 - retries: 3 - delay: 3 - register: psql_result - until: psql_result.rowcount == 1 - when: not ansible_check_mode - -- name: Wait for grafana database initialization - pause: - seconds: 10 - -- name: Stop grafana before upgrade - supervisorctl: - name: grafana - state: stopped - -- name: Remove default admin user - postgresql_query: - db: grafana - query: DELETE FROM public.user WHERE login='admin' - when: not ansible_check_mode - -- name: Run grafana migrator - command: grafana-db-migrator --change-char-to-text /srv/grafana/grafana.db "postgres://grafana:grafana@localhost:5432/grafana?sslmode=disable" - register: migrator_output - changed_when: "'All done' in migrator_output.stdout" - -- name: Enable provisioning after change database - ini_file: - dest: /etc/grafana/grafana.ini - section: paths - option: provisioning - value: conf/provisioning - -- name: Start grafana again - supervisorctl: - name: grafana - state: restarted - -- name: Wait for grafana initialization - pause: - seconds: 5 - -- name: Fix database/folder relationship - command: grafana-db-migrator --fix-folders-id /srv/grafana/grafana.db "postgres://grafana:grafana@localhost:5432/grafana?sslmode=disable" - register: migrator_output - changed_when: "'All done' in migrator_output.stdout" - -- name: Remove SQLite Grafana database - file: - path: /srv/grafana/grafana.db - state: absent diff --git a/update/ansible/playbook/tasks/update.yml b/update/ansible/playbook/tasks/update.yml index df4cd7b7c2..48432dd482 100644 --- a/update/ansible/playbook/tasks/update.yml +++ b/update/ansible/playbook/tasks/update.yml @@ -20,7 +20,6 @@ - pmm2-client - pmm-dump - vmproxy - - grafana-db-migrator pre_tasks: - name: detect /srv/pmm-distribution stat: @@ -150,16 +149,9 @@ when: is_docker and not is_supervisor_running.stat.exists and (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' shell: /usr/local/bin/supervisord -c /etc/supervisord.conf & - - name: Wait until postgres port is present before continuing - wait_for: - host: localhost - port: 5432 - - name: Run initialization playbook include_role: name: initialization - vars: - ui_upgrade: True - name: Enable crond service when: not is_docker @@ -423,29 +415,6 @@ - name: Print other services's logs debug: var=update_result.stdout_lines - - name: Check that the SQLite grafana database exists - stat: - path: /srv/grafana/grafana.db - register: is_database_sqlite - - - name: Migrate Grafana database from SQLite to Postgresql - include_role: - name: sqlite-to-postgres - when: is_database_sqlite.stat.exists - tags: - - skip_ansible_lint # '503 Tasks that run when changed should likely be handlers'. - - - name: Fix grafana fields type - postgresql_query: - db: grafana - query: "{{ item }}" - loop: - - ALTER TABLE tag ALTER COLUMN key TYPE text; - - ALTER TABLE tag ALTER COLUMN value TYPE text; - - ALTER TABLE api_key ALTER COLUMN key TYPE text; - - ALTER TABLE api_key ALTER COLUMN name TYPE text; - when: not ansible_check_mode - # SIGUSR2 is sent to supervisord by pmm-managed right before the update for logging to work correctly. # We use that fact to show what was restarted during the update. - name: Get supervisord logs EL7 @@ -467,5 +436,3 @@ file: state: absent path: /var/cache/yum - - From 9a30776e2caa617a87daa957ad36e6cc3f340f81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Jun 2023 11:58:42 +0200 Subject: [PATCH 053/123] Bump golang.org/x/tools from 0.9.3 to 0.10.0 (#2280) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.9.3 to 0.10.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.9.3...v0.10.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 5490680599..df6d50fcfc 100644 --- a/go.mod +++ b/go.mod @@ -74,11 +74,11 @@ require ( github.com/stretchr/testify v1.8.4 go.mongodb.org/mongo-driver v1.11.6 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.9.0 + golang.org/x/crypto v0.10.0 golang.org/x/sync v0.3.0 golang.org/x/sys v0.9.0 golang.org/x/text v0.10.0 - golang.org/x/tools v0.9.3 + golang.org/x/tools v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/grpc v1.57.0-dev @@ -252,10 +252,10 @@ require ( github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect - golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.10.0 // indirect + golang.org/x/mod v0.11.0 // indirect + golang.org/x/net v0.11.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect + golang.org/x/term v0.9.0 // indirect google.golang.org/appengine v1.6.7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gotest.tools/v3 v3.3.0 // indirect diff --git a/go.sum b/go.sum index 2d7f4bc699..8de212bc33 100644 --- a/go.sum +++ b/go.sum @@ -875,8 +875,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -917,8 +917,8 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1007,8 +1007,8 @@ golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1081,8 +1081,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 839791b0dd7f9e2d063d6869fc02378a8ba5254f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Jun 2023 14:06:14 +0300 Subject: [PATCH 054/123] Bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 (#2278) Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.15.1 to 1.16.0. - [Release notes](https://github.com/prometheus/client_golang/releases) - [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md) - [Commits](https://github.com/prometheus/client_golang/compare/v1.15.1...v1.16.0) --- updated-dependencies: - dependency-name: github.com/prometheus/client_golang dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index df6d50fcfc..2f0819bbfd 100644 --- a/go.mod +++ b/go.mod @@ -65,7 +65,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/pmezard/go-difflib v1.0.0 github.com/prometheus/alertmanager v0.25.0 - github.com/prometheus/client_golang v1.15.1 + github.com/prometheus/client_golang v1.16.0 github.com/prometheus/common v0.44.0 github.com/ramr/go-reaper v0.2.1 github.com/robfig/cron/v3 v3.0.1 @@ -238,7 +238,7 @@ require ( github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common/sigv4 v0.1.0 // indirect github.com/prometheus/exporter-toolkit v0.8.2 // indirect - github.com/prometheus/procfs v0.9.0 // indirect + github.com/prometheus/procfs v0.10.1 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/rs/xid v1.5.0 // indirect github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect diff --git a/go.sum b/go.sum index 8de212bc33..95e7a603f5 100644 --- a/go.sum +++ b/go.sum @@ -686,8 +686,8 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= -github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -711,8 +711,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= +github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/ramr/go-reaper v0.2.1 h1:zww+wlQOvTjBZuk1920R/e0GFEb6O7+B0WQLV6dM924= github.com/ramr/go-reaper v0.2.1/go.mod h1:AVypdzrcCXjSc/JYnlXl8TsB+z84WyFzxWE8Jh0MOJc= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= From 7a7431afdc35098f665dbd8d33ccf914fad8b0b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Jun 2023 11:23:07 +0000 Subject: [PATCH 055/123] Bump golang.org/x/tools from 0.9.3 to 0.10.0 in /tools (#2279) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.9.3 to 0.10.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.9.3...v0.10.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 16 ++++++++-------- tools/go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 05308cd2fb..1b226f903a 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -22,7 +22,7 @@ require ( github.com/vburenin/ifacemaker v1.2.1 github.com/vektra/mockery v1.1.2 golang.org/x/perf v0.0.0-20211012211434-03971e389cd3 - golang.org/x/tools v0.9.3 + golang.org/x/tools v0.10.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 google.golang.org/protobuf v1.30.0 gopkg.in/reform.v1 v1.5.1 @@ -179,15 +179,15 @@ require ( go.uber.org/zap v1.24.0 // indirect golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 // indirect golang.org/x/build v0.0.0-20200616162219-07bebbe343e9 // indirect - golang.org/x/crypto v0.9.0 // indirect + golang.org/x/crypto v0.10.0 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.10.0 // indirect + golang.org/x/mod v0.11.0 // indirect + golang.org/x/net v0.11.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sync v0.2.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/term v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect + golang.org/x/sync v0.3.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/term v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.114.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 5701647f1b..f269f28f45 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -766,8 +766,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -805,8 +805,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -849,8 +849,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220517181318-183a9ca12b87/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/oauth2 v0.0.0-20170207211851-4464e7848382/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -880,8 +880,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -945,13 +945,13 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -961,8 +961,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1031,8 +1031,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From d79dae54641fde658dd5a38c3b67e616b2815050 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jun 2023 10:01:27 +0200 Subject: [PATCH 056/123] Bump dotenv from 16.1.4 to 16.3.1 in /cli-tests (#2283) Bumps [dotenv](https://github.com/motdotla/dotenv) from 16.1.4 to 16.3.1. - [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md) - [Commits](https://github.com/motdotla/dotenv/compare/v16.1.4...v16.3.1) --- updated-dependencies: - dependency-name: dotenv dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 8 ++++---- cli-tests/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index fb00f4c375..8bf599fb17 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@playwright/test": "^1.34.2", "@types/luxon": "^3.3.0", - "dotenv": "^16.1.4", + "dotenv": "^16.3.1", "luxon": "^3.3.0", "playwright": "^1.33.0", "promise-retry": "^2.0.1", @@ -741,9 +741,9 @@ } }, "node_modules/dotenv": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", - "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "engines": { "node": ">=12" }, diff --git a/cli-tests/package.json b/cli-tests/package.json index b33c9f051b..aad3bd1ada 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -14,7 +14,7 @@ "dependencies": { "@playwright/test": "^1.34.2", "@types/luxon": "^3.3.0", - "dotenv": "^16.1.4", + "dotenv": "^16.3.1", "luxon": "^3.3.0", "playwright": "^1.33.0", "promise-retry": "^2.0.1", From 98d2e74b4d9e27dd0fb0348cd1982ec328988d7e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jun 2023 08:18:48 +0000 Subject: [PATCH 057/123] Bump eslint-plugin-playwright from 0.12.0 to 0.14.0 in /cli-tests (#2285) Bumps [eslint-plugin-playwright](https://github.com/playwright-community/eslint-plugin-playwright) from 0.12.0 to 0.14.0. - [Release notes](https://github.com/playwright-community/eslint-plugin-playwright/releases) - [Commits](https://github.com/playwright-community/eslint-plugin-playwright/compare/v0.12.0...v0.14.0) --- updated-dependencies: - dependency-name: eslint-plugin-playwright dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 8 ++++---- cli-tests/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 8bf599fb17..d822a235a0 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -26,7 +26,7 @@ "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-playwright": "^0.12.0" + "eslint-plugin-playwright": "^0.14.0" } }, "node_modules/@eslint-community/eslint-utils": { @@ -1037,9 +1037,9 @@ } }, "node_modules/eslint-plugin-playwright": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.12.0.tgz", - "integrity": "sha512-KXuzQjVzca5irMT/7rvzJKsVDGbQr43oQPc8i+SLEBqmfrTxlwMwRqfv9vtZqh4hpU0jmrnA/EOfwtls+5QC1w==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.14.0.tgz", + "integrity": "sha512-LEin7QeBdnyTINJ4ZTpn5EzJUIqEkLr8o041Ed69wStkW7KvB4UcL3eTJBO3Jgh3PH1FlExdVXnMao1mKrUX1g==", "dev": true, "peerDependencies": { "eslint": ">=7", diff --git a/cli-tests/package.json b/cli-tests/package.json index aad3bd1ada..6d82bc1cdf 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -30,6 +30,6 @@ "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-playwright": "^0.12.0" + "eslint-plugin-playwright": "^0.14.0" } } From 41014377a7969fb0b5ba80a2feaabdb63c1d724e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jun 2023 08:30:57 +0000 Subject: [PATCH 058/123] Bump eslint from 8.42.0 to 8.43.0 in /cli-tests (#2284) Bumps [eslint](https://github.com/eslint/eslint) from 8.42.0 to 8.43.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.42.0...v8.43.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 16 ++++++++-------- cli-tests/package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index d822a235a0..6145ecf04e 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -22,7 +22,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", - "eslint": "8.42", + "eslint": "8.43", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", @@ -77,9 +77,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", - "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", + "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -833,15 +833,15 @@ } }, "node_modules/eslint": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", - "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "version": "8.43.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", + "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", + "@eslint/js": "8.43.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", diff --git a/cli-tests/package.json b/cli-tests/package.json index 6d82bc1cdf..239847fa98 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -26,7 +26,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", - "eslint": "8.42", + "eslint": "8.43", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", From 667ac67ebe54e199bbdfc51c863cb6ff252106a6 Mon Sep 17 00:00:00 2001 From: rishat-ishbulatov <111364991+rishat-ishbulatov@users.noreply.github.com> Date: Tue, 20 Jun 2023 00:36:10 +0300 Subject: [PATCH 059/123] PMM-10391 fix dsn typo, ordinary to atomic on init (#1811) Co-authored-by: Alex Tymchuk --- qan-api2/db.go | 2 +- qan-api2/main.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qan-api2/db.go b/qan-api2/db.go index cf607899cd..de3ed9d776 100644 --- a/qan-api2/db.go +++ b/qan-api2/db.go @@ -90,7 +90,7 @@ func createDB(dsn string) error { } defer defaultDB.Close() - result, err := defaultDB.Exec(fmt.Sprintf(`CREATE DATABASE %s ENGINE = Ordinary`, databaseName)) + result, err := defaultDB.Exec(fmt.Sprintf(`CREATE DATABASE %s ENGINE = Atomic`, databaseName)) if err != nil { log.Printf("Result: %v", result) return err diff --git a/qan-api2/main.go b/qan-api2/main.go index 8df27f9b28..9d94f52758 100644 --- a/qan-api2/main.go +++ b/qan-api2/main.go @@ -320,7 +320,7 @@ func main() { dsn = *dsnF } - l.Info("DNS: ", dsn) + l.Info("DSN: ", dsn) db := NewDB(dsn, maxIdleConns, maxOpenConns) prom.MustRegister(sqlmetrics.NewCollector("clickhouse", "qan-api2", db.DB)) From 53b4aaa54afe0034c9e70f4a9d86a3445613177b Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Wed, 21 Jun 2023 14:18:47 +0300 Subject: [PATCH 060/123] PMM-12237 fix the upgrade check failure (#2289) * PMM-12237 fix the upgrade check failure * PMM-12237 disable the test * PMM-12237 leave a TODO for the test * PMM-12237 change wording for clarity --- update/pkg/yum/info.go | 10 ++++++++++ update/pkg/yum/info_test.go | 11 +++++++++++ update/pkg/yum/yum.go | 17 +++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/update/pkg/yum/info.go b/update/pkg/yum/info.go index ea529884dd..cfe2977478 100644 --- a/update/pkg/yum/info.go +++ b/update/pkg/yum/info.go @@ -17,6 +17,7 @@ package yum import ( + "os/exec" "regexp" "strings" "time" @@ -100,3 +101,12 @@ func niceVersion(info map[string]string) string { } return info["Version"] } + +func getRHELVersion() (string, error) { + raw, err := exec.Command("rpm", "--eval", "%{rhel}").Output() + if err != nil { + return "", errors.Wrap(err, "couldn't get RHEL version") + } + + return strings.TrimSpace(string(raw)), nil +} diff --git a/update/pkg/yum/info_test.go b/update/pkg/yum/info_test.go index c0488cb18d..a402d15692 100644 --- a/update/pkg/yum/info_test.go +++ b/update/pkg/yum/info_test.go @@ -337,3 +337,14 @@ func TestParseInfo(t *testing.T) { assert.Equal(t, time.Date(2021, 6, 1, 15, 30, 45, 0, time.UTC), releasetime) }) } + +func TestGetRHELVersion(t *testing.T) { + t.Run("getRHELVersion", func(t *testing.T) { + // TODO enable once we pass to RHEL 9 for good + t.Skip("This test will fail on RHEL 7 and non-RHEL systems") + expected := "9" + actual, err := getRHELVersion() + require.NoError(t, err) + assert.Equal(t, expected, actual) + }) +} diff --git a/update/pkg/yum/yum.go b/update/pkg/yum/yum.go index a4b46e78d6..100a287aa6 100644 --- a/update/pkg/yum/yum.go +++ b/update/pkg/yum/yum.go @@ -84,6 +84,8 @@ func getReleaseTime(ctx context.Context, repo string) (string, error) { // Check returns up-to-date versions information for a package with given name. // It runs slowly. func Check(ctx context.Context, name string) (*version.UpdateCheckResult, error) { + repoPropName := "Repository" // default value for RHEL9 + installed, err := Installed(ctx, name) if err != nil { return nil, err @@ -108,14 +110,25 @@ func Check(ctx context.Context, name string) (*version.UpdateCheckResult, error) if err != nil { return nil, err } + + v, err := getRHELVersion() + if err == nil && v == "7" { + // change the prop name for RHEL7, otherwise leave as is + repoPropName = "Repo" + } + repo, ok := info[repoPropName] + if !ok { + return nil, errors.New("Repository field is not found in yum info") + } + res.Latest = version.PackageInfo{ Version: niceVersion(info), FullVersion: fullVersion(info), - Repo: info["Repo"], + Repo: repo, } // replace Buildtime with repo release time to show time of release. - repoUpdated, err := getReleaseTime(ctx, info["Repo"]) + repoUpdated, err := getReleaseTime(ctx, repo) if err != nil { return nil, err } From e136f493722dea25bd569b64e31b155ab540ae68 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 22 Jun 2023 00:28:41 +0300 Subject: [PATCH 061/123] PMM-7 enable `gocritic` linter rule (#2281) * PMM-7 enaable the rule, fix warnings * PMM-7 remove tmp disables --- .golangci.yml | 1 - agent/agents/mysql/slowlog/parser/parser.go | 3 ++- .../postgres/pgstatstatements/pgstatstatements.go | 3 +-- agent/agents/process/process_logger.go | 8 ++++---- agent/client/client.go | 2 +- agent/queryparser/helpers.go | 10 +++++----- managed/services/backup/pitr_timerange_service_test.go | 8 ++++---- managed/services/checks/checks_test.go | 4 ++-- managed/services/dbaas/kubernetes/client/client.go | 7 ++++--- managed/services/dbaas/kubernetes/kubernetes.go | 2 +- managed/services/management/alerting/service.go | 3 +-- managed/services/management/backup/backups_service.go | 7 ++++--- managed/services/management/dbaas/dbaas_initializer.go | 8 ++++---- managed/services/management/dbaas/kubernetes_server.go | 8 ++++---- .../management/dbaas/version_service_client_test.go | 10 ++++++---- managed/services/management/ia/common.go | 3 +-- managed/services/supervisord/logs_test.go | 2 +- managed/services/telemetry/uievents/uievents.go | 4 ++-- 18 files changed, 47 insertions(+), 46 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index e79023035c..10c8d9f0b2 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -108,7 +108,6 @@ linters: # TODO: carefully review all the rules below and either fix the code # or leave disabled and provide a reason why - tagliatelle - - gocritic - revive - paralleltest - gocognit diff --git a/agent/agents/mysql/slowlog/parser/parser.go b/agent/agents/mysql/slowlog/parser/parser.go index d15bb4ea9f..e7cae9ca1e 100644 --- a/agent/agents/mysql/slowlog/parser/parser.go +++ b/agent/agents/mysql/slowlog/parser/parser.go @@ -246,7 +246,8 @@ func (p *SlowLogParser) parseMetrics(line string) { return } - line = strings.Replace(line, ": ", ":", -1) // we need skip redundant space for correcting split process + // we need to skip redundant space to correct the split process + line = strings.Replace(line, ": ", ":", -1) //nolint:gocritic for _, kv := range strings.Split(line, " ") { if len(kv) == 0 { continue diff --git a/agent/agents/postgres/pgstatstatements/pgstatstatements.go b/agent/agents/postgres/pgstatstatements/pgstatstatements.go index 3c1a8d6a08..2a86d4e8a4 100644 --- a/agent/agents/postgres/pgstatstatements/pgstatstatements.go +++ b/agent/agents/postgres/pgstatstatements/pgstatstatements.go @@ -134,8 +134,7 @@ func rowsByVersion(q *reform.Querier, tail string) (*sql.Rows, error) { } columns := strings.Join(q.QualifiedColumns(pgStatStatementsView), ", ") - switch { - case pgStatVersion.GE(pgStatVer18): + if pgStatVersion.GE(pgStatVer18) { columns = strings.Replace(columns, `"total_time"`, `"total_exec_time"`, 1) } diff --git a/agent/agents/process/process_logger.go b/agent/agents/process/process_logger.go index 5c986612de..319bdf2ad5 100644 --- a/agent/agents/process/process_logger.go +++ b/agent/agents/process/process_logger.go @@ -80,17 +80,17 @@ func (pl *processLogger) Write(p []byte) (n int, err error) { //nolint:nonamedre if pl.l != nil { level, found, err := extractLogLevel(line) - if err != nil { + switch { + case err != nil: pl.l.Warnf("Extract log level error: %v.", err) - pl.l.Infoln(line) - } else if found { + case found: if level < logrus.ErrorLevel { level = logrus.ErrorLevel } pl.l.Logln(level, line) - } else { + default: pl.l.Infoln(line) } } diff --git a/agent/client/client.go b/agent/client/client.go index 259447e5d8..e4e3b6c5ed 100644 --- a/agent/client/client.go +++ b/agent/client/client.go @@ -671,7 +671,7 @@ func (c *Client) handleStartJobRequest(p *agentpb.StartJobRequest) error { } func (c *Client) getMongoDSN(dsn string, files *agentpb.TextFiles, jobID string) (string, error) { - tempDir := filepath.Join(c.cfg.Get().Paths.TempDir, "mongodb-backup-restore", strings.Replace(jobID, "/", "_", -1)) + tempDir := filepath.Join(c.cfg.Get().Paths.TempDir, "mongodb-backup-restore", strings.Replace(jobID, "/", "_", -1)) //nolint:gocritic res, err := templates.RenderDSN(dsn, files, tempDir) if err != nil { return "", errors.WithStack(err) diff --git a/agent/queryparser/helpers.go b/agent/queryparser/helpers.go index 1a1932cbcd..2862a2f3b0 100644 --- a/agent/queryparser/helpers.go +++ b/agent/queryparser/helpers.go @@ -201,7 +201,7 @@ func parseKeyValueFromComment(s string) (map[string]bool, error) { func prepareMultilineRegexp() error { // to compile regexp only once multilineOnce.Do(func() { - multilineRegexp, errMultiline = regexp.Compile(`(?s)\/\*(.*?)\*\/`) + multilineRegexp, errMultiline = regexp.Compile(`(?s)\/\*(.*?)\*\/`) //nolint:gocritic }) if errMultiline != nil { return errMultiline @@ -213,7 +213,7 @@ func prepareMultilineRegexp() error { func prepareSpaceRegexp() error { // to compile regexp only once spaceOnce.Do(func() { - spaceRegexp, errSpace = regexp.Compile(`\s+`) + spaceRegexp, errSpace = regexp.Compile(`\s+`) //nolint:gocritic }) if errSpace != nil { return errSpace @@ -225,7 +225,7 @@ func prepareSpaceRegexp() error { func prepareDashRegexp() error { // to compile regexp only once dashOnce.Do(func() { - dashRegexp, errDash = regexp.Compile(`--.*`) + dashRegexp, errDash = regexp.Compile(`--.*`) //nolint:gocritic }) if errDash != nil { return errDash @@ -237,7 +237,7 @@ func prepareDashRegexp() error { func prepareSharpRegexp() error { // to compile regexp only once sharpOnce.Do(func() { - sharpRegexp, errSharp = regexp.Compile(`#.*`) + sharpRegexp, errSharp = regexp.Compile(`#.*`) //nolint:gocritic }) if errSharp != nil { return errSharp @@ -249,7 +249,7 @@ func prepareSharpRegexp() error { func prepareKeyValueRegexp() error { // to compile regexp only once keyValueOnce.Do(func() { - keyValueRegexp, errKeyValue = regexp.Compile(`(?s)([a-zA-Z-\d]+='.+?')`) + keyValueRegexp, errKeyValue = regexp.Compile(`(?s)([a-zA-Z-\d]+='.+?')`) //nolint:gocritic }) if errKeyValue != nil { return errKeyValue diff --git a/managed/services/backup/pitr_timerange_service_test.go b/managed/services/backup/pitr_timerange_service_test.go index 192b93d3e3..ed9765293b 100644 --- a/managed/services/backup/pitr_timerange_service_test.go +++ b/managed/services/backup/pitr_timerange_service_test.go @@ -104,10 +104,10 @@ func TestGetPITROplogs(t *testing.T) { }, } - //statFile := minio.FileInfo{ - // Name: pitrFSPrefix + "rs0/20220829/20220829115611-1.20220829120544-10.oplog.s2", - // Size: 1024, - //} + // statFile := minio.FileInfo{ + // Name: pitrFSPrefix + "rs0/20220829/20220829115611-1.20220829120544-10.oplog.s2", + // Size: 1024, + // } mockedStorage.On("List", ctx, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(listedFiles, nil).Once() service := NewPBMPITRService() diff --git a/managed/services/checks/checks_test.go b/managed/services/checks/checks_test.go index c43b8271ff..4803f47e37 100644 --- a/managed/services/checks/checks_test.go +++ b/managed/services/checks/checks_test.go @@ -534,11 +534,11 @@ func TestFilterChecks(t *testing.T) { }, } - checks := append(valid, invalid...) + checks := append(valid, invalid...) //nolint:gocritic partiallyValidAdvisor := invalid[1] partiallyValidAdvisor.Checks = partiallyValidAdvisor.Checks[0:1] // remove invalid check - expected := append(valid, partiallyValidAdvisor) + expected := append(valid, partiallyValidAdvisor) //nolint:gocritic s := New(nil, nil, nil, nil, vmClient, clickhouseDB) actual := s.filterSupportedChecks(checks) diff --git a/managed/services/dbaas/kubernetes/client/client.go b/managed/services/dbaas/kubernetes/client/client.go index 5313ec32a7..376b2ea9e4 100644 --- a/managed/services/dbaas/kubernetes/client/client.go +++ b/managed/services/dbaas/kubernetes/client/client.go @@ -589,11 +589,12 @@ func DescribeEvents(el *corev1.EventList, w PrefixWriter) { firstTimestampSince = translateTimestampSince(e.FirstTimestamp) } - if e.Series != nil { + switch { + case e.Series != nil: interval = fmt.Sprintf("%s (x%d over %s)", translateMicroTimestampSince(e.Series.LastObservedTime), e.Series.Count, firstTimestampSince) - } else if e.Count > 1 { + case e.Count > 1: interval = fmt.Sprintf("%s (x%d over %s)", translateTimestampSince(e.LastTimestamp), e.Count, firstTimestampSince) - } else { + default: interval = firstTimestampSince } diff --git a/managed/services/dbaas/kubernetes/kubernetes.go b/managed/services/dbaas/kubernetes/kubernetes.go index 1578508404..5fe45368a7 100644 --- a/managed/services/dbaas/kubernetes/kubernetes.go +++ b/managed/services/dbaas/kubernetes/kubernetes.go @@ -742,7 +742,7 @@ func (k *Kubernetes) InstallOLMOperator(ctx context.Context) error { return errors.Wrap(err, "cannot decode olm resources") } - resources := append(crdResources, olmResources...) + resources := append(crdResources, olmResources...) //nolint:gocritic subscriptions := filterResources(resources, func(r unstructured.Unstructured) bool { return r.GroupVersionKind() == schema.GroupVersionKind{ diff --git a/managed/services/management/alerting/service.go b/managed/services/management/alerting/service.go index 131c359d7b..040e5188bf 100644 --- a/managed/services/management/alerting/service.go +++ b/managed/services/management/alerting/service.go @@ -334,8 +334,7 @@ func (s *Service) loadTemplatesFromDB() ([]TemplateInfo, error) { Type: alert.Type(param.Type), } - switch alert.Type(param.Type) { //nolint:exhaustive - case alert.Float: + if alert.Type(param.Type) == alert.Float { f := param.FloatParam if f.Default != nil { diff --git a/managed/services/management/backup/backups_service.go b/managed/services/management/backup/backups_service.go index 5242962155..d8fc1ea025 100644 --- a/managed/services/management/backup/backups_service.go +++ b/managed/services/management/backup/backups_service.go @@ -459,11 +459,12 @@ func (s *BackupsService) GetLogs(ctx context.Context, req *backuppb.GetLogsReque return nil, status.Error(codes.InvalidArgument, "Only one of artifact ID or restore ID is required") } - if req.ArtifactId != "" { + switch { + case req.ArtifactId != "": jobsFilter.ArtifactID = req.ArtifactId - } else if req.RestoreId != "" { + case req.RestoreId != "": jobsFilter.RestoreID = req.RestoreId - } else { + default: return nil, status.Error(codes.InvalidArgument, "One of artifact ID or restore ID is required") } diff --git a/managed/services/management/dbaas/dbaas_initializer.go b/managed/services/management/dbaas/dbaas_initializer.go index 677acb6a71..f8b10b6529 100644 --- a/managed/services/management/dbaas/dbaas_initializer.go +++ b/managed/services/management/dbaas/dbaas_initializer.go @@ -101,8 +101,8 @@ func (in *Initializer) Enable(ctx context.Context) error { // registerIncluster automatically adds k8s cluster to dbaas when PMM is running inside k8s cluster func (in *Initializer) registerInCluster(ctx context.Context) error { kubeConfig, err := in.dbaasClient.GetKubeConfig(ctx, &dbaascontrollerv1beta1.GetKubeconfigRequest{}) - //nolint:nestif - if err == nil { + switch { + case err == nil: // If err is not equal to nil, dont' register cluster and fail silently err := in.db.InTransaction(func(t *reform.TX) error { cluster, err := models.FindKubernetesClusterByName(t.Querier, defaultClusterName) @@ -134,9 +134,9 @@ func (in *Initializer) registerInCluster(ctx context.Context) error { } in.l.Info("Cluster is successfully initialized") } - } else if errors.Is(err, rest.ErrNotInCluster) { + case errors.Is(err, rest.ErrNotInCluster): in.l.Info("PMM is running outside a kubernetes cluster") - } else { + default: in.l.Errorf("failed getting kubeconfig inside cluster: %v", err) } return nil diff --git a/managed/services/management/dbaas/kubernetes_server.go b/managed/services/management/dbaas/kubernetes_server.go index b8de890a9d..fcb9ed9aa6 100644 --- a/managed/services/management/dbaas/kubernetes_server.go +++ b/managed/services/management/dbaas/kubernetes_server.go @@ -172,10 +172,10 @@ func (k kubernetesServer) ListKubernetesClusters(ctx context.Context, _ *dbaasv1 // if err != nil { // return // } - //version, err := kubeClient.GetDBaaSOperatorVersion(ctx) - //if err != nil { - // return - //} + // version, err := kubeClient.GetDBaaSOperatorVersion(ctx) + // if err != nil { + // return + // } // clusters[i].Operators.Dbaas.Version = version // clusters[i].Operators.Dbaas.Status = dbaasv1beta1.OperatorsStatus_OPERATORS_STATUS_OK }(cluster) diff --git a/managed/services/management/dbaas/version_service_client_test.go b/managed/services/management/dbaas/version_service_client_test.go index 8595848e36..3eb41bff61 100644 --- a/managed/services/management/dbaas/version_service_client_test.go +++ b/managed/services/management/dbaas/version_service_client_test.go @@ -78,8 +78,9 @@ func (f fakeLatestVersionServer) ServeHTTP(w http.ResponseWriter, r *http.Reques break } } - //nolint:nestif - if certainVersionRequested { + + switch { + case certainVersionRequested: segments := strings.Split(r.URL.Path, "/") version := segments[len(segments)-2] var dbVersion string @@ -112,16 +113,17 @@ func (f fakeLatestVersionServer) ServeHTTP(w http.ResponseWriter, r *http.Reques break } } - } else if component != "" { + case component != "": response = &VersionServiceResponse{} for _, v := range f.response.Versions { if v.Product == component { response.Versions = append(response.Versions, v) } } - } else { + default: panic("path " + r.URL.Path + " not expected") } + err := encoder.Encode(response) if err != nil { log.Fatal(err) diff --git a/managed/services/management/ia/common.go b/managed/services/management/ia/common.go index 1ded6b8cbe..4f219fa67c 100644 --- a/managed/services/management/ia/common.go +++ b/managed/services/management/ia/common.go @@ -170,8 +170,7 @@ func validateParameters(definitions models.AlertExprParamsDefinitions, values mo return status.Errorf(codes.InvalidArgument, "Parameter %s has type %s instead of %s.", d.Name, value.Type, d.Type) } - switch d.Type { //nolint:exhaustive - case models.Float: + if d.Type == models.Float { v := d.FloatParam fv := value.FloatValue if v.Min != nil && pointer.GetFloat64(v.Min) > fv { diff --git a/managed/services/supervisord/logs_test.go b/managed/services/supervisord/logs_test.go index d0b18530c4..18742b8cee 100644 --- a/managed/services/supervisord/logs_test.go +++ b/managed/services/supervisord/logs_test.go @@ -209,7 +209,7 @@ func TestZip(t *testing.T) { additionalFiles = append(additionalFiles, "dbaas-controller.log") } // zip file includes client files - expected := append(commonExpectedFiles, additionalFiles...) + expected := append(commonExpectedFiles, additionalFiles...) //nolint:gocritic actual := make([]string, 0, len(r.File)) for _, f := range r.File { diff --git a/managed/services/telemetry/uievents/uievents.go b/managed/services/telemetry/uievents/uievents.go index 795965f7b4..e66be330ba 100644 --- a/managed/services/telemetry/uievents/uievents.go +++ b/managed/services/telemetry/uievents/uievents.go @@ -254,7 +254,7 @@ func (s *Service) Store(_ context.Context, request *uievents.StoreRequest) (*uie } s.dashboardUsage[event.Uid] = stat } - stat.useCount = stat.useCount + 1 + stat.useCount++ err := stat.loadTime.RecordValue(int64(event.LoadTime)) if err != nil { s.l.Error("failed to record value", err) @@ -270,7 +270,7 @@ func (s *Service) Store(_ context.Context, request *uievents.StoreRequest) (*uie } s.componentsUsage[event.Component] = stat } - stat.useCount = stat.useCount + 1 + stat.useCount++ err := stat.loadTime.RecordValue(int64(event.LoadTime)) if err != nil { s.l.Error("failed to record value", err) From 9cc7b67a840b69667d6f82c5b1ab2e550262bcfe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Jun 2023 11:34:00 +0200 Subject: [PATCH 062/123] Bump go.mongodb.org/mongo-driver from 1.11.6 to 1.12.0 (#2295) Bumps [go.mongodb.org/mongo-driver](https://github.com/mongodb/mongo-go-driver) from 1.11.6 to 1.12.0. - [Release notes](https://github.com/mongodb/mongo-go-driver/releases) - [Commits](https://github.com/mongodb/mongo-go-driver/compare/v1.11.6...v1.12.0) --- updated-dependencies: - dependency-name: go.mongodb.org/mongo-driver dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 7 +++---- go.sum | 14 ++++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 2f0819bbfd..30e44bd129 100644 --- a/go.mod +++ b/go.mod @@ -72,7 +72,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/stretchr/objx v0.5.0 github.com/stretchr/testify v1.8.4 - go.mongodb.org/mongo-driver v1.11.6 + go.mongodb.org/mongo-driver v1.12.0 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.10.0 golang.org/x/sync v0.3.0 @@ -131,7 +131,6 @@ require ( github.com/riywo/loginshell v0.0.0-20200815045211-7d26008be1ab // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/tidwall/pretty v1.2.0 // indirect github.com/xlab/treeprint v1.1.0 // indirect go.uber.org/atomic v1.10.0 // indirect golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 // indirect @@ -247,8 +246,8 @@ require ( github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546 // indirect github.com/xdg-go/pbkdf2 v1.0.0 // indirect - github.com/xdg-go/scram v1.1.1 // indirect - github.com/xdg-go/stringprep v1.0.3 // indirect + github.com/xdg-go/scram v1.1.2 // indirect + github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect diff --git a/go.sum b/go.sum index 95e7a603f5..9b893e681c 100644 --- a/go.sum +++ b/go.sum @@ -782,17 +782,17 @@ github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= +github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= +github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= @@ -813,8 +813,8 @@ go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R7 go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= go.mongodb.org/mongo-driver v1.11.1/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= -go.mongodb.org/mongo-driver v1.11.6 h1:XM7G6PjiGAO5betLF13BIa5TlLUUE3uJ/2Ox3Lz1K+o= -go.mongodb.org/mongo-driver v1.11.6/go.mod h1:G9TgswdsWjX4tmDA5zfs2+6AEPpYJwqblyjsfuh8oXY= +go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE= +go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1018,7 +1018,9 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 18b9bb1fdf03bfde50947a56448608af0a2d8a2f Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 22 Jun 2023 17:27:10 +0300 Subject: [PATCH 063/123] PMM-12237 fix upgrade check failure (#2299) * PMM-12237 fix the upgrade check failure * PMM-12237 disable the test * PMM-12237 leave a TODO for the test * PMM-12237 change wording for clarity --- update/pkg/yum/info.go | 10 ++++++++++ update/pkg/yum/info_test.go | 11 +++++++++++ update/pkg/yum/yum.go | 17 +++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/update/pkg/yum/info.go b/update/pkg/yum/info.go index ea529884dd..cfe2977478 100644 --- a/update/pkg/yum/info.go +++ b/update/pkg/yum/info.go @@ -17,6 +17,7 @@ package yum import ( + "os/exec" "regexp" "strings" "time" @@ -100,3 +101,12 @@ func niceVersion(info map[string]string) string { } return info["Version"] } + +func getRHELVersion() (string, error) { + raw, err := exec.Command("rpm", "--eval", "%{rhel}").Output() + if err != nil { + return "", errors.Wrap(err, "couldn't get RHEL version") + } + + return strings.TrimSpace(string(raw)), nil +} diff --git a/update/pkg/yum/info_test.go b/update/pkg/yum/info_test.go index c0488cb18d..a402d15692 100644 --- a/update/pkg/yum/info_test.go +++ b/update/pkg/yum/info_test.go @@ -337,3 +337,14 @@ func TestParseInfo(t *testing.T) { assert.Equal(t, time.Date(2021, 6, 1, 15, 30, 45, 0, time.UTC), releasetime) }) } + +func TestGetRHELVersion(t *testing.T) { + t.Run("getRHELVersion", func(t *testing.T) { + // TODO enable once we pass to RHEL 9 for good + t.Skip("This test will fail on RHEL 7 and non-RHEL systems") + expected := "9" + actual, err := getRHELVersion() + require.NoError(t, err) + assert.Equal(t, expected, actual) + }) +} diff --git a/update/pkg/yum/yum.go b/update/pkg/yum/yum.go index a4b46e78d6..100a287aa6 100644 --- a/update/pkg/yum/yum.go +++ b/update/pkg/yum/yum.go @@ -84,6 +84,8 @@ func getReleaseTime(ctx context.Context, repo string) (string, error) { // Check returns up-to-date versions information for a package with given name. // It runs slowly. func Check(ctx context.Context, name string) (*version.UpdateCheckResult, error) { + repoPropName := "Repository" // default value for RHEL9 + installed, err := Installed(ctx, name) if err != nil { return nil, err @@ -108,14 +110,25 @@ func Check(ctx context.Context, name string) (*version.UpdateCheckResult, error) if err != nil { return nil, err } + + v, err := getRHELVersion() + if err == nil && v == "7" { + // change the prop name for RHEL7, otherwise leave as is + repoPropName = "Repo" + } + repo, ok := info[repoPropName] + if !ok { + return nil, errors.New("Repository field is not found in yum info") + } + res.Latest = version.PackageInfo{ Version: niceVersion(info), FullVersion: fullVersion(info), - Repo: info["Repo"], + Repo: repo, } // replace Buildtime with repo release time to show time of release. - repoUpdated, err := getReleaseTime(ctx, info["Repo"]) + repoUpdated, err := getReleaseTime(ctx, repo) if err != nil { return nil, err } From d451246058fe3f894afc17853783abd5c7d8c3a6 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 22 Jun 2023 18:05:21 +0300 Subject: [PATCH 064/123] PMM-12235 remove old ClickJouse plugin (#2290) --- .../playbook/tasks/roles/dashboards_upgrade/tasks/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml index c7349ab6c2..022621b028 100644 --- a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml @@ -45,7 +45,7 @@ state: absent loop: "{{ plugin_list['files'] }}" -- name: Synchronization plugin +- name: Copy plugins to the plugin directory synchronize: src: /usr/share/percona-dashboards/panels/ dest: /srv/grafana/plugins/ @@ -96,6 +96,9 @@ changed_when: true when: sqlite_grafana.stat.exists +- name: Remove the old clickhouse plugin + shell: grafana cli --pluginsDir /srv/grafana/plugins plugins remove vertamedia-clickhouse-datasource || true + - name: Restart grafana with new plugins EL7 supervisorctl: name: grafana From a8d63c81093f27d89f048b18a141eccf831c661d Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 22 Jun 2023 19:10:25 +0300 Subject: [PATCH 065/123] PMM-12235 remove old ClickJouse plugin (#2300) --- .../playbook/tasks/roles/dashboards_upgrade/tasks/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml index c7349ab6c2..022621b028 100644 --- a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml @@ -45,7 +45,7 @@ state: absent loop: "{{ plugin_list['files'] }}" -- name: Synchronization plugin +- name: Copy plugins to the plugin directory synchronize: src: /usr/share/percona-dashboards/panels/ dest: /srv/grafana/plugins/ @@ -96,6 +96,9 @@ changed_when: true when: sqlite_grafana.stat.exists +- name: Remove the old clickhouse plugin + shell: grafana cli --pluginsDir /srv/grafana/plugins plugins remove vertamedia-clickhouse-datasource || true + - name: Restart grafana with new plugins EL7 supervisorctl: name: grafana From 5212538160f38d87647c9bdf439680fe71ce876c Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Fri, 23 Jun 2023 15:21:24 +0500 Subject: [PATCH 066/123] PMM-12248 Fix supervisorctl path on EL-9. (#2301) --- build/ansible/roles/ami-ovf/tasks/main.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/build/ansible/roles/ami-ovf/tasks/main.yml b/build/ansible/roles/ami-ovf/tasks/main.yml index 2446fc09dc..6fdec5edd7 100644 --- a/build/ansible/roles/ami-ovf/tasks/main.yml +++ b/build/ansible/roles/ami-ovf/tasks/main.yml @@ -48,6 +48,17 @@ dest: /var/lib/cloud/scripts/per-boot/show-pmm-url mode: 0755 +# PMM-12248 - Add /usr/local/bin to secure_path in /etc/sudoers so +# that we can use supervisorctl command without the absolute path +- name: PMM | Update secure_path in /etc/sudoers EL9 + replace: + dest: /etc/sudoers + regexp: "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin" + replace: "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" + when: + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' + - name: PMM | Delete centos EL7 shell: cd /tmp; nohup sh -c "trap 'userdel -r centos' EXIT; sleep 600" /dev/null 2>&1 & when: From 0a204d2a71336f88971726e2e858b6b78edc72dd Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Fri, 23 Jun 2023 17:07:48 +0300 Subject: [PATCH 067/123] PMM-7 enable `maintidx` linter rule (#2292) * PMM-7 enable `maintidx` linter rule * PMM-7 remove temp disables --- .golangci.yml | 7 +++++-- admin/commands/list.go | 2 +- agent/agents/mysql/slowlog/slowlog.go | 2 +- managed/cmd/pmm-managed/main.go | 2 +- managed/models/agent_model.go | 2 +- managed/models/settings_helpers.go | 2 +- managed/services/agents/handler.go | 3 +-- managed/services/backup/compatibility_service_test.go | 2 +- managed/services/converters.go | 2 +- managed/services/management/rds.go | 2 +- managed/services/server/server.go | 2 +- 11 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 10c8d9f0b2..f2dca62af6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -56,6 +56,9 @@ linters-settings: line-length: 170 tab-width: 4 + maintidx: + under: 20 + nestif: min-complexity: 7 @@ -111,7 +114,6 @@ linters: - revive - paralleltest - gocognit - - maintidx - interfacebloat - forbidigo - errcheck @@ -145,6 +147,7 @@ issues: - gomnd # tests are full of magic numbers - ireturn # we have exceptions, so need to silence them in tests - lll # tests often require long lines - - nonamedreturns # it's not critical for tests, albeit desirable + - maintidx # not critical for tests + - nonamedreturns # not critical for tests, albeit desirable - testpackage # senseless - unused # very annoying false positive: https://github.com/golangci/golangci-lint/issues/791 diff --git a/admin/commands/list.go b/admin/commands/list.go index 6843d4729d..d508e9de02 100644 --- a/admin/commands/list.go +++ b/admin/commands/list.go @@ -123,7 +123,7 @@ type ListCommand struct { NodeID string `help:"Node ID (default is autodetected)"` } -func (cmd *ListCommand) RunCmd() (Result, error) { //nolint:cyclop +func (cmd *ListCommand) RunCmd() (Result, error) { //nolint:cyclop,maintidx if cmd.NodeID == "" { status, err := agentlocal.GetStatus(agentlocal.DoNotRequestNetworkInfo) if err != nil { diff --git a/agent/agents/mysql/slowlog/slowlog.go b/agent/agents/mysql/slowlog/slowlog.go index 373883acf6..2c7f359031 100644 --- a/agent/agents/mysql/slowlog/slowlog.go +++ b/agent/agents/mysql/slowlog/slowlog.go @@ -393,7 +393,7 @@ func (s *SlowLog) processFile(ctx context.Context, file string, outlierTime floa // makeBuckets is a pure function for easier testing. // -//nolint:cyclop +//nolint:cyclop,maintidx func makeBuckets( agentID string, res event.Result, diff --git a/managed/cmd/pmm-managed/main.go b/managed/cmd/pmm-managed/main.go index d3b0a1e7d1..962cd55166 100644 --- a/managed/cmd/pmm-managed/main.go +++ b/managed/cmd/pmm-managed/main.go @@ -656,7 +656,7 @@ func newClickhouseDB(dsn string, maxIdleConns, maxOpenConns int) (*sql.DB, error return db, nil } -func main() { //nolint:cyclop +func main() { //nolint:cyclop,maintidx // empty version breaks much of pmm-managed logic if version.Version == "" { panic("pmm-managed version is not set during build.") diff --git a/managed/models/agent_model.go b/managed/models/agent_model.go index f146abffb9..1ae1cb2d22 100644 --- a/managed/models/agent_model.go +++ b/managed/models/agent_model.go @@ -298,7 +298,7 @@ func (s *Agent) DBConfig(service *Service) *DBConfig { } // DSN returns DSN string for accessing given Service with this Agent (and implicit driver). -func (s *Agent) DSN(service *Service, dialTimeout time.Duration, database string, tdp *DelimiterPair) string { //nolint:cyclop +func (s *Agent) DSN(service *Service, dialTimeout time.Duration, database string, tdp *DelimiterPair) string { //nolint:cyclop,maintidx host := pointer.GetString(service.Address) port := pointer.GetUint16(service.Port) socket := pointer.GetString(service.Socket) diff --git a/managed/models/settings_helpers.go b/managed/models/settings_helpers.go index 146c66bae4..8e73d73601 100644 --- a/managed/models/settings_helpers.go +++ b/managed/models/settings_helpers.go @@ -143,7 +143,7 @@ func SetPMMServerID(q reform.DBTX) error { } // UpdateSettings updates only non-zero, non-empty values. -func UpdateSettings(q reform.DBTX, params *ChangeSettingsParams) (*Settings, error) { //nolint:cyclop +func UpdateSettings(q reform.DBTX, params *ChangeSettingsParams) (*Settings, error) { //nolint:cyclop,maintidx err := ValidateSettings(params) if err != nil { return nil, NewInvalidArgumentError(err.Error()) diff --git a/managed/services/agents/handler.go b/managed/services/agents/handler.go index f88a944910..ff45391e11 100644 --- a/managed/services/agents/handler.go +++ b/managed/services/agents/handler.go @@ -204,8 +204,7 @@ func (h *Handler) stateChanged(ctx context.Context, req *agentpb.StateChangedReq req.Status, req.ListenPort, pointer.ToStringOrNil(req.ProcessExecPath), - pointer.ToStringOrNil(req.Version), - ) + pointer.ToStringOrNil(req.Version)) if err != nil { return err } diff --git a/managed/services/backup/compatibility_service_test.go b/managed/services/backup/compatibility_service_test.go index 856a299605..eb3724dba8 100644 --- a/managed/services/backup/compatibility_service_test.go +++ b/managed/services/backup/compatibility_service_test.go @@ -309,7 +309,7 @@ func TestFindCompatibleServiceIDs(t *testing.T) { }) } -func TestFindArtifactCompatibleServices(t *testing.T) { //nolint:maintidx +func TestFindArtifactCompatibleServices(t *testing.T) { sqlDB := testdb.Open(t, models.SkipFixtures, nil) db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) cSvc := NewCompatibilityService(db, nil) diff --git a/managed/services/converters.go b/managed/services/converters.go index 14aca4414b..edfcf3f4e9 100644 --- a/managed/services/converters.go +++ b/managed/services/converters.go @@ -194,7 +194,7 @@ func ToAPIService(service *models.Service) (inventorypb.Service, error) { //noli } // ToAPIAgent converts Agent database model to API model. -func ToAPIAgent(q *reform.Querier, agent *models.Agent) (inventorypb.Agent, error) { //nolint:ireturn +func ToAPIAgent(q *reform.Querier, agent *models.Agent) (inventorypb.Agent, error) { //nolint:ireturn,maintidx labels, err := agent.GetCustomLabels() if err != nil { return nil, err diff --git a/managed/services/management/rds.go b/managed/services/management/rds.go index 075ee05206..ce79abf322 100644 --- a/managed/services/management/rds.go +++ b/managed/services/management/rds.go @@ -240,7 +240,7 @@ func (s *RDSService) DiscoverRDS(ctx context.Context, req *managementpb.Discover } // AddRDS adds RDS instance. -func (s *RDSService) AddRDS(ctx context.Context, req *managementpb.AddRDSRequest) (*managementpb.AddRDSResponse, error) { //nolint:cyclop +func (s *RDSService) AddRDS(ctx context.Context, req *managementpb.AddRDSRequest) (*managementpb.AddRDSResponse, error) { //nolint:cyclop,maintidx res := &managementpb.AddRDSResponse{} if e := s.db.InTransaction(func(tx *reform.TX) error { diff --git a/managed/services/server/server.go b/managed/services/server/server.go index 36db793abf..258fb7647f 100644 --- a/managed/services/server/server.go +++ b/managed/services/server/server.go @@ -571,7 +571,7 @@ func (s *Server) validateChangeSettingsRequest(ctx context.Context, req *serverp } // ChangeSettings changes PMM Server settings. -func (s *Server) ChangeSettings(ctx context.Context, req *serverpb.ChangeSettingsRequest) (*serverpb.ChangeSettingsResponse, error) { //nolint:cyclop +func (s *Server) ChangeSettings(ctx context.Context, req *serverpb.ChangeSettingsRequest) (*serverpb.ChangeSettingsResponse, error) { //nolint:cyclop,maintidx s.envRW.RLock() defer s.envRW.RUnlock() From 4ab5d9ab87353626002d28b8fd36439031197ea8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:41:28 +0200 Subject: [PATCH 068/123] Bump github.com/bufbuild/buf from 1.21.0 to 1.22.0 in /tools (#2303) Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.21.0 to 1.22.0. - [Release notes](https://github.com/bufbuild/buf/releases) - [Changelog](https://github.com/bufbuild/buf/blob/main/CHANGELOG.md) - [Commits](https://github.com/bufbuild/buf/compare/v1.21.0...v1.22.0) --- updated-dependencies: - dependency-name: github.com/bufbuild/buf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 7 ++++--- tools/go.sum | 15 +++++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 1b226f903a..3c5fa8dff6 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -8,7 +8,7 @@ require ( github.com/BurntSushi/go-sumtype v0.0.0-20190304192233-fcb4a6205bdc github.com/Percona-Lab/swagger-order v0.0.0-20191002141859-166b3973d026 github.com/apache/skywalking-eyes v0.4.0 - github.com/bufbuild/buf v1.21.0 + github.com/bufbuild/buf v1.22.0 github.com/daixiang0/gci v0.10.1 github.com/envoyproxy/protoc-gen-validate v1.0.1 github.com/go-delve/delve v1.20.2 @@ -45,6 +45,7 @@ require ( github.com/bmatcuk/doublestar/v2 v2.0.4 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 // indirect github.com/bufbuild/connect-go v1.8.0 // indirect + github.com/bufbuild/connect-opentelemetry-go v0.3.0 // indirect github.com/bufbuild/protocompile v0.5.1 // indirect github.com/cilium/ebpf v0.7.0 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect @@ -118,7 +119,7 @@ require ( github.com/jessevdk/go-flags v1.5.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/kisielk/gotool v1.0.0 // indirect - github.com/klauspost/compress v1.16.5 // indirect + github.com/klauspost/compress v1.16.6 // indirect github.com/klauspost/pgzip v1.2.6 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect @@ -162,7 +163,7 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.12.0 // indirect github.com/subosito/gotenv v1.4.0 // indirect - github.com/tetratelabs/wazero v1.2.0 // indirect + github.com/tetratelabs/wazero v1.2.1 // indirect github.com/toqueteos/webbrowser v1.2.0 // indirect github.com/vbatts/tar-split v0.11.3 // indirect github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc // indirect diff --git a/tools/go.sum b/tools/go.sum index f269f28f45..4ea18f4bf7 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -103,10 +103,12 @@ github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 h1:tXKVfhE7FcSkhkv0UwkLvPDeZ4k github.com/bradleyfalzon/ghinstallation/v2 v2.0.4/go.mod h1:B40qPqJxWE0jDZgOR1JmaMy+4AY1eBP+IByOvqyAKp0= github.com/brianvoe/gofakeit v3.18.0+incompatible h1:wDOmHc9DLG4nRjUVVaxA+CEglKOW72Y5+4WNxUIkjM8= github.com/brianvoe/gofakeit v3.18.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= -github.com/bufbuild/buf v1.21.0 h1:fgmvmA5xDFbKYd9wtpExH6YtCcTUo4GDt+7yizSNqUE= -github.com/bufbuild/buf v1.21.0/go.mod h1:o7qgHprFF7rrwY9OEE3Jv+zVMqEjtYjETR+klgPcPoE= +github.com/bufbuild/buf v1.22.0 h1:dCWUIx1gm3nm5U+FKdkVjaL+Rk9Ev3hh4XYMa2Cbn/o= +github.com/bufbuild/buf v1.22.0/go.mod h1:ERFRzJiIjAOzUSJ3vz1zoI7XfxlBnCwZEyL+NJm4pko= github.com/bufbuild/connect-go v1.8.0 h1:srluNkFkZBfSfg9Qb6DrO+5nMaxix//h2ctrHZhMGKc= github.com/bufbuild/connect-go v1.8.0/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/connect-opentelemetry-go v0.3.0 h1:AuZi3asTDKmjGtd2aqpyP4p5QvBFG/YEaHopViLatnk= +github.com/bufbuild/connect-opentelemetry-go v0.3.0/go.mod h1:r1ppyTtu1EWeRodk4Q/JbyQhIWtO7eR3GoRDzjeEcNU= github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -484,8 +486,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= -github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= +github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -682,8 +684,8 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69 github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/tetratelabs/wazero v1.2.0 h1:I/8LMf4YkCZ3r2XaL9whhA0VMyAvF6QE+O7rco0DCeQ= -github.com/tetratelabs/wazero v1.2.0/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= +github.com/tetratelabs/wazero v1.2.1 h1:J4X2hrGzJvt+wqltuvcSjHQ7ujQxA9gb6PeMs4qlUWs= +github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -730,6 +732,7 @@ go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26 go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= +go.opentelemetry.io/otel/sdk/metric v0.39.0 h1:Kun8i1eYf48kHH83RucG93ffz0zGV1sh46FAScOTuDI= go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.starlark.net v0.0.0-20220816155156-cfacd8902214 h1:MqijAN3S61c7KWasOk+zIqIjHQPN6WUra/X3+YAkQxQ= From 877a7e131c3b891b5f548006b5e5e8d687c83a51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 12:11:29 +0300 Subject: [PATCH 069/123] Bump github.com/go-co-op/gocron from 1.28.2 to 1.30.0 (#2304) Bumps [github.com/go-co-op/gocron](https://github.com/go-co-op/gocron) from 1.28.2 to 1.30.0. - [Release notes](https://github.com/go-co-op/gocron/releases) - [Commits](https://github.com/go-co-op/gocron/compare/v1.28.2...v1.30.0) --- updated-dependencies: - dependency-name: github.com/go-co-op/gocron dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 30e44bd129..33f7302d09 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/docker/docker v23.0.4+incompatible github.com/docker/go-connections v0.4.0 github.com/envoyproxy/protoc-gen-validate v1.0.1 - github.com/go-co-op/gocron v1.28.2 + github.com/go-co-op/gocron v1.30.0 github.com/go-openapi/errors v0.20.3 github.com/go-openapi/runtime v0.26.0 github.com/go-openapi/strfmt v0.21.7 diff --git a/go.sum b/go.sum index 9b893e681c..c25647b261 100644 --- a/go.sum +++ b/go.sum @@ -223,8 +223,8 @@ github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoD github.com/frankban/quicktest v1.5.0/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-co-op/gocron v1.28.2 h1:H9oHUGH+9HZ5mAorbnzRjzXLf4poP+ctZdbtaKRYagc= -github.com/go-co-op/gocron v1.28.2/go.mod h1:39f6KNSGVOU1LO/ZOoZfcSxwlsJDQOKSu8erN0SH48Y= +github.com/go-co-op/gocron v1.30.0 h1:7nDCO++3HqQb+gSyd0NWRjsNbyPcK9cKVepBQWWaP6E= +github.com/go-co-op/gocron v1.30.0/go.mod h1:39f6KNSGVOU1LO/ZOoZfcSxwlsJDQOKSu8erN0SH48Y= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-faster/city v1.0.1 h1:4WAxSZ3V2Ws4QRDrscLEDcibJY8uf41H6AhXDrNDcGw= From c9460186cae553a46566e14de42364dbd4fcfe9b Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Mon, 26 Jun 2023 16:40:10 +0300 Subject: [PATCH 070/123] PMM-7 Upgrade aws-iam-authenticator. (#2297) --- build/packages/rpm/server/SPECS/dbaas-tools.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build/packages/rpm/server/SPECS/dbaas-tools.spec b/build/packages/rpm/server/SPECS/dbaas-tools.spec index 1f211f708b..a7c19d67f6 100644 --- a/build/packages/rpm/server/SPECS/dbaas-tools.spec +++ b/build/packages/rpm/server/SPECS/dbaas-tools.spec @@ -1,7 +1,7 @@ %undefine _missing_build_ids_terminate_build %define debug_package %{nil} -%global commit_aws d72e1b46444d0efcb995a28c3846223b39bc4964 +%global commit_aws ea9bcaeb5e62c110fe326d1db58b03a782d4bdd6 %global shortcommit_aws %(c=%{commit_aws}; echo ${c:0:7}) %global commit_k8s ef70d260f3d036fc22b30538576bbf6b36329995 @@ -16,7 +16,7 @@ %define rpm_release %{release}.%{build_timestamp}%{?dist} Name: dbaas-tools -Version: 0.6.2 +Version: 0.6.10 Release: %{rpm_release} Summary: A set of tools for Percona DBaaS License: ASL 2.0 @@ -72,6 +72,9 @@ install -D -p -m 0775 _output/local/go/bin/kubectl %{buildroot}/opt/dbaas-tools/ %changelog +* Mon Jun 12 2023 Nurlan Moldomurov - 0.6.10-1 +- Update versions of aws-iam-authenticator + * Mon Jun 05 2023 Andrew Minkin - 0.6.2-1 - Update versions of kubectl and aws-iam-authenticator From 8ea59faae1aecf4de81e48ff10a02dd66f48fae0 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Mon, 26 Jun 2023 16:51:14 +0300 Subject: [PATCH 071/123] PMM-7 Upgrade aws-iam-authenticator. (#2297) (#2307) --- build/packages/rpm/server/SPECS/dbaas-tools.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/build/packages/rpm/server/SPECS/dbaas-tools.spec b/build/packages/rpm/server/SPECS/dbaas-tools.spec index 1f211f708b..a7c19d67f6 100644 --- a/build/packages/rpm/server/SPECS/dbaas-tools.spec +++ b/build/packages/rpm/server/SPECS/dbaas-tools.spec @@ -1,7 +1,7 @@ %undefine _missing_build_ids_terminate_build %define debug_package %{nil} -%global commit_aws d72e1b46444d0efcb995a28c3846223b39bc4964 +%global commit_aws ea9bcaeb5e62c110fe326d1db58b03a782d4bdd6 %global shortcommit_aws %(c=%{commit_aws}; echo ${c:0:7}) %global commit_k8s ef70d260f3d036fc22b30538576bbf6b36329995 @@ -16,7 +16,7 @@ %define rpm_release %{release}.%{build_timestamp}%{?dist} Name: dbaas-tools -Version: 0.6.2 +Version: 0.6.10 Release: %{rpm_release} Summary: A set of tools for Percona DBaaS License: ASL 2.0 @@ -72,6 +72,9 @@ install -D -p -m 0775 _output/local/go/bin/kubectl %{buildroot}/opt/dbaas-tools/ %changelog +* Mon Jun 12 2023 Nurlan Moldomurov - 0.6.10-1 +- Update versions of aws-iam-authenticator + * Mon Jun 05 2023 Andrew Minkin - 0.6.2-1 - Update versions of kubectl and aws-iam-authenticator From 37a246a5f54df2ec9556cefa22fa32e89478c2ff Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Mon, 26 Jun 2023 20:11:55 +0500 Subject: [PATCH 072/123] PMM-12239 set missing locale (#2308) * PMM-12239 Set missing locale and ENVs. --- build/ansible/pmm2/post-build-actions.yml | 17 +++++++++++++++++ build/docker/server/Dockerfile.el9 | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/build/ansible/pmm2/post-build-actions.yml b/build/ansible/pmm2/post-build-actions.yml index 7268cb6f59..0f5fafdc10 100644 --- a/build/ansible/pmm2/post-build-actions.yml +++ b/build/ansible/pmm2/post-build-actions.yml @@ -44,6 +44,23 @@ - name: Enable repo | Enable release repo for pmm2-client command: percona-release enable {{ pmm_client_repos_final }} + - name: Install glibc-langpack-en | EL9 + dnf: + name: glibc-langpack-en + state: present + update_cache: yes + when: + - ansible_virtualization_type != "docker" + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' + + - name: Set locale to en_US.utf8 | EL9 + command: localectl set-locale LANG=en_US.utf8 + when: + - ansible_virtualization_type != "docker" + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' + - name: pmm-agent | Setup pmm-agent command: > pmm-agent setup diff --git a/build/docker/server/Dockerfile.el9 b/build/docker/server/Dockerfile.el9 index 45db578d46..603a341565 100644 --- a/build/docker/server/Dockerfile.el9 +++ b/build/docker/server/Dockerfile.el9 @@ -3,6 +3,10 @@ FROM oraclelinux:9-slim ARG VERSION ARG BUILD_DATE +ENV LANG=en_US.utf8 +ENV LC_ALL=en_US.utf8 +ENV GF_PLUGIN_DIR=/srv/grafana/plugins + LABEL org.opencontainers.image.created ${BUILD_DATE} LABEL org.opencontainers.image.licenses AGPL-3.0 LABEL org.opencontainers.image.title Percona Monitoring and Management @@ -24,6 +28,7 @@ WORKDIR /opt RUN microdnf -y install yum && yum -y install python3-pip && \ yum -y install oracle-epel-release-el9 ansible-core && \ yum -y install epel-release && \ + yum -y install glibc-langpack-en && \ yum -y install ansible vi COPY RPMS /tmp/RPMS From ea7ce63d377ba89a5ca79ecca045016b8136bbc4 Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Fri, 23 Jun 2023 17:33:09 +0500 Subject: [PATCH 073/123] PMM-12239 Set missing locale and ENVs. --- build/docker/server/Dockerfile.el9 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build/docker/server/Dockerfile.el9 b/build/docker/server/Dockerfile.el9 index 45db578d46..603a341565 100644 --- a/build/docker/server/Dockerfile.el9 +++ b/build/docker/server/Dockerfile.el9 @@ -3,6 +3,10 @@ FROM oraclelinux:9-slim ARG VERSION ARG BUILD_DATE +ENV LANG=en_US.utf8 +ENV LC_ALL=en_US.utf8 +ENV GF_PLUGIN_DIR=/srv/grafana/plugins + LABEL org.opencontainers.image.created ${BUILD_DATE} LABEL org.opencontainers.image.licenses AGPL-3.0 LABEL org.opencontainers.image.title Percona Monitoring and Management @@ -24,6 +28,7 @@ WORKDIR /opt RUN microdnf -y install yum && yum -y install python3-pip && \ yum -y install oracle-epel-release-el9 ansible-core && \ yum -y install epel-release && \ + yum -y install glibc-langpack-en && \ yum -y install ansible vi COPY RPMS /tmp/RPMS From 54dd7fac0d9451ff9af866a35258ceeefafa8165 Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Mon, 26 Jun 2023 17:43:21 +0500 Subject: [PATCH 074/123] PMM-12239 Set missing locale and ENVs. --- build/ansible/pmm2/post-build-actions.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/build/ansible/pmm2/post-build-actions.yml b/build/ansible/pmm2/post-build-actions.yml index 7268cb6f59..cdc3769a11 100644 --- a/build/ansible/pmm2/post-build-actions.yml +++ b/build/ansible/pmm2/post-build-actions.yml @@ -44,6 +44,28 @@ - name: Enable repo | Enable release repo for pmm2-client command: percona-release enable {{ pmm_client_repos_final }} + - name: Detect Docker + set_fact: + is_docker: '{{ lookup("file", "/srv/pmm-distribution") == "docker" }}' + no_log: yes + + - name: Install glibc-langpack-en | EL9 + dnf: + name: glibc-langpack-en + state: present + update_cache: yes + when: + - not is_docker + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' + + - name: Set locale to en_US.utf8 | EL9 + command: localectl set-locale LANG=en_US.utf8 + when: + - not is_docker + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' + - name: pmm-agent | Setup pmm-agent command: > pmm-agent setup From b3ff14f773da655c091f1edf9e0dfeeae4a60856 Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Mon, 26 Jun 2023 19:04:57 +0500 Subject: [PATCH 075/123] PMM-12239 Set missing locale and ENVs. --- build/ansible/pmm2/post-build-actions.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/build/ansible/pmm2/post-build-actions.yml b/build/ansible/pmm2/post-build-actions.yml index cdc3769a11..0f5fafdc10 100644 --- a/build/ansible/pmm2/post-build-actions.yml +++ b/build/ansible/pmm2/post-build-actions.yml @@ -44,25 +44,20 @@ - name: Enable repo | Enable release repo for pmm2-client command: percona-release enable {{ pmm_client_repos_final }} - - name: Detect Docker - set_fact: - is_docker: '{{ lookup("file", "/srv/pmm-distribution") == "docker" }}' - no_log: yes - - name: Install glibc-langpack-en | EL9 dnf: name: glibc-langpack-en state: present update_cache: yes when: - - not is_docker + - ansible_virtualization_type != "docker" - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' - ansible_distribution_major_version == '9' - name: Set locale to en_US.utf8 | EL9 command: localectl set-locale LANG=en_US.utf8 when: - - not is_docker + - ansible_virtualization_type != "docker" - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' - ansible_distribution_major_version == '9' From 68b0fe9b658edc03629a144da8c1f1d86e88185c Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Tue, 27 Jun 2023 13:38:58 +0300 Subject: [PATCH 076/123] PMM-12248 Fix supervisorctl path on EL-9. (#2301) (#2314) Co-authored-by: Talha Bin Rizwan --- build/ansible/roles/ami-ovf/tasks/main.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/build/ansible/roles/ami-ovf/tasks/main.yml b/build/ansible/roles/ami-ovf/tasks/main.yml index 2446fc09dc..6fdec5edd7 100644 --- a/build/ansible/roles/ami-ovf/tasks/main.yml +++ b/build/ansible/roles/ami-ovf/tasks/main.yml @@ -48,6 +48,17 @@ dest: /var/lib/cloud/scripts/per-boot/show-pmm-url mode: 0755 +# PMM-12248 - Add /usr/local/bin to secure_path in /etc/sudoers so +# that we can use supervisorctl command without the absolute path +- name: PMM | Update secure_path in /etc/sudoers EL9 + replace: + dest: /etc/sudoers + regexp: "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin" + replace: "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" + when: + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' + - name: PMM | Delete centos EL7 shell: cd /tmp; nohup sh -c "trap 'userdel -r centos' EXIT; sleep 600" /dev/null 2>&1 & when: From f22c922c16b4c192ac821b0f3249141e0ec524d9 Mon Sep 17 00:00:00 2001 From: EvgeniyPatlan Date: Tue, 27 Jun 2023 12:57:03 +0200 Subject: [PATCH 077/123] ENG-7 update alma to ol (#2306) Co-authored-by: Talha Bin Rizwan --- build/ansible/roles/lvm-init/tasks/main.yml | 4 +++- build/packer/pmm2.el9.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build/ansible/roles/lvm-init/tasks/main.yml b/build/ansible/roles/lvm-init/tasks/main.yml index 269e0b5f9d..d1b2c37572 100644 --- a/build/ansible/roles/lvm-init/tasks/main.yml +++ b/build/ansible/roles/lvm-init/tasks/main.yml @@ -1,7 +1,9 @@ --- - name: Packages | Install OS tools yum: - name: lvm2 + name: + - lvm2 + - cronie state: installed - block: diff --git a/build/packer/pmm2.el9.json b/build/packer/pmm2.el9.json index 29d985022b..51488569db 100644 --- a/build/packer/pmm2.el9.json +++ b/build/packer/pmm2.el9.json @@ -26,7 +26,7 @@ ], "region": "us-east-1", "security_group_id": "sg-688c2b1c", - "source_ami": "ami-0845395779540e3cb", + "source_ami": "ami-0da806cbfc9e67dbb", "ssh_pty": "true", "ena_support": "true", "ssh_username": "ec2-user", From d2a94d6b613ab8201910fa6566a714b7687b594b Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Tue, 27 Jun 2023 15:11:40 +0300 Subject: [PATCH 078/123] PMM-7 enable `forbidigo` linter rule (#2302) * PMM-7 enable `forbidigo` linter rule * PMM-7 restore cli.go back to original * PMM-7 remove redundant lint silences * PMM-7 remove a couple extra suppressions * PMM-7 disable the rule for the whole file --- .golangci.yml | 1 - admin/commands/pmm/server/docker/upgrade.go | 3 ++- agent/agents/process/process_child.go | 3 ++- agent/commands/setup.go | 13 +++++++------ managed/services/dbaas/kubernetes/client/client.go | 2 +- qan-api2/exporters/slow_log.go | 4 ++-- 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index f2dca62af6..9705dbb7d6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -115,7 +115,6 @@ linters: - paralleltest - gocognit - interfacebloat - - forbidigo - errcheck # ENDTODO diff --git a/admin/commands/pmm/server/docker/upgrade.go b/admin/commands/pmm/server/docker/upgrade.go index 62aa18b865..31e7ebeff9 100644 --- a/admin/commands/pmm/server/docker/upgrade.go +++ b/admin/commands/pmm/server/docker/upgrade.go @@ -137,6 +137,7 @@ func (c *UpgradeCommand) isInstalledViaCli(container types.ContainerJSON) bool { } func (c *UpgradeCommand) confirmToContinue(containerID string) bool { + //nolint:forbidigo fmt.Printf(` PMM Server in the container %[1]q was not installed via pmm cli. We will attempt to upgrade the container and perform the following actions: @@ -154,7 +155,7 @@ The container %[1]q will NOT be removed. You can remove it manually later, if ne return true } - fmt.Print("Are you sure you want to continue? [y/N] ") + fmt.Print("Are you sure you want to continue? [y/N] ") //nolint:forbidigo s := bufio.NewScanner(os.Stdin) s.Scan() diff --git a/agent/agents/process/process_child.go b/agent/agents/process/process_child.go index 261c3d988f..d1ed2b3c19 100644 --- a/agent/agents/process/process_child.go +++ b/agent/agents/process/process_child.go @@ -52,6 +52,7 @@ func main() { panic("process isn't moved to running state.") } - fmt.Println(process.GetPID(p)) // Printing PID of the child process to let test check if the child process is dead or not. + // Printing PID of the child process to let test check if the child process is dead or not. + fmt.Println(process.GetPID(p)) //nolint:forbidigo time.Sleep(30 * time.Second) // Waiting until test kills this process. } diff --git a/agent/commands/setup.go b/agent/commands/setup.go index df79e2076d..8489a5dbf9 100644 --- a/agent/commands/setup.go +++ b/agent/commands/setup.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//nolint:forbidigo package commands import ( @@ -50,7 +51,7 @@ func Setup() { var e config.ConfigFileDoesNotExistError if err != nil && !errors.As(err, &e) { - fmt.Printf("Failed to load configuration: %s.\n", err) //nolint:forbidigo + fmt.Printf("Failed to load configuration: %s.\n", err) os.Exit(1) } @@ -60,12 +61,12 @@ func Setup() { configFilepath, running := checkStatus(configFilepath, l) if cfg.ID == "" && cfg.Setup.SkipRegistration { - fmt.Printf("Can't skip registration: pmm-agent ID is empty.\n") //nolint:forbidigo + fmt.Printf("Can't skip registration: pmm-agent ID is empty.\n") os.Exit(1) } if err := config.IsWritable(configFilepath); err != nil { - fmt.Printf("Config file %s is not writable: %v.\n", configFilepath, err) //nolint:forbidigo + fmt.Printf("Config file %s is not writable: %v.\n", configFilepath, err) os.Exit(1) } @@ -74,13 +75,13 @@ func Setup() { } if err = config.SaveToFile(configFilepath, cfg, "Updated by `pmm-agent setup`."); err != nil { - fmt.Printf("Failed to write configuration file %s: %s.\n", configFilepath, err) //nolint:forbidigo + fmt.Printf("Failed to write configuration file %s: %s.\n", configFilepath, err) os.Exit(1) } - fmt.Printf("Configuration file %s updated.\n", configFilepath) //nolint:forbidigo + fmt.Printf("Configuration file %s updated.\n", configFilepath) if !running { - fmt.Printf("Please start pmm-agent: `pmm-agent --config-file=%s`.\n", configFilepath) //nolint:forbidigo + fmt.Printf("Please start pmm-agent: `pmm-agent --config-file=%s`.\n", configFilepath) return } diff --git a/managed/services/dbaas/kubernetes/client/client.go b/managed/services/dbaas/kubernetes/client/client.go index 376b2ea9e4..309887ee9f 100644 --- a/managed/services/dbaas/kubernetes/client/client.go +++ b/managed/services/dbaas/kubernetes/client/client.go @@ -539,7 +539,7 @@ func (c *Client) GetEvents(ctx context.Context, name string) (string, error) { var events *corev1.EventList if ref, err := reference.GetReference(scheme.Scheme, pod); err != nil { - fmt.Printf("Unable to construct reference to '%#v': %v", pod, err) + fmt.Printf("Unable to construct reference to '%#v': %v", pod, err) //nolint:forbidigo } else { ref.Kind = "" if _, isMirrorPod := pod.Annotations[corev1.MirrorPodAnnotationKey]; isMirrorPod { diff --git a/qan-api2/exporters/slow_log.go b/qan-api2/exporters/slow_log.go index 725c330431..e13c81e03f 100644 --- a/qan-api2/exporters/slow_log.go +++ b/qan-api2/exporters/slow_log.go @@ -77,7 +77,7 @@ func main() { ctx := context.TODO() events = parseSlowLog(*slowLogPath, logOpt) - fmt.Println("Parsing slowlog: ", *slowLogPath, "...") + fmt.Println("Parsing slowlog: ", *slowLogPath, "...") //nolint:forbidigo logStart, _ := time.Parse("2006-01-02 15:04:05", *logTimeStart) periodNumber := 0 @@ -412,7 +412,7 @@ func bulkSend(ctx context.Context, client qanpb.CollectorClient, fn func(*qanpb. if err != nil { return fmt.Errorf("sent error: %v", err) } - fmt.Printf("Send to QAN API %v Metrics Buckets.\n Response: %v\n", lenMB, resp) + fmt.Printf("Send to QAN API %v Metrics Buckets.\n Response: %v\n", lenMB, resp) //nolint:forbidigo } return nil } From b6d58b65cfa9afcfc0c8d2932ea96ce485d99759 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Jun 2023 14:46:47 +0200 Subject: [PATCH 079/123] Bump github.com/alecthomas/kong from 0.7.1 to 0.8.0 (#2294) Bumps [github.com/alecthomas/kong](https://github.com/alecthomas/kong) from 0.7.1 to 0.8.0. - [Commits](https://github.com/alecthomas/kong/compare/v0.7.1...v0.8.0) --- updated-dependencies: - dependency-name: github.com/alecthomas/kong dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 33f7302d09..81b78cdd38 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/ClickHouse/clickhouse-go/151 v0.0.0-00010101000000-000000000000 github.com/ClickHouse/clickhouse-go/v2 v2.10.0 github.com/DATA-DOG/go-sqlmock v1.5.0 - github.com/alecthomas/kong v0.7.1 + github.com/alecthomas/kong v0.8.0 github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/aws/aws-sdk-go v1.44.273 diff --git a/go.sum b/go.sum index c25647b261..362f421e9b 100644 --- a/go.sum +++ b/go.sum @@ -93,8 +93,8 @@ github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBK github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/assert/v2 v2.1.0 h1:tbredtNcQnoSd3QBhQWI7QZ3XHOVkw1Moklp2ojoH/0= github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE= -github.com/alecthomas/kong v0.7.1 h1:azoTh0IOfwlAX3qN9sHWTxACE2oV8Bg2gAwBsMwDQY4= -github.com/alecthomas/kong v0.7.1/go.mod h1:n1iCIO2xS46oE8ZfYCNDqdR0b0wZNrXAIAqro/2132U= +github.com/alecthomas/kong v0.8.0 h1:ryDCzutfIqJPnNn0omnrgHLbAggDQM2VWHikE1xqK7s= +github.com/alecthomas/kong v0.8.0/go.mod h1:n1iCIO2xS46oE8ZfYCNDqdR0b0wZNrXAIAqro/2132U= github.com/alecthomas/repr v0.1.0 h1:ENn2e1+J3k09gyj2shc0dHr/yjaWSHRlrJ4DPMevDqE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= From c6a33db4ea0706d16db7827bfaf94cbdd6998a08 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Wed, 28 Jun 2023 00:19:12 +0300 Subject: [PATCH 080/123] PMM-7 Fix user for OL9 AMI (#2319) --- build/ansible/roles/cloud-node/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/ansible/roles/cloud-node/tasks/main.yml b/build/ansible/roles/cloud-node/tasks/main.yml index 2a0305fc36..fb3035bd6e 100644 --- a/build/ansible/roles/cloud-node/tasks/main.yml +++ b/build/ansible/roles/cloud-node/tasks/main.yml @@ -132,7 +132,7 @@ - name: change cloud user EL9 | Change cloud user when: create_admin == "true" and (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' replace: - dest: /etc/cloud/cloud.cfg + dest: /etc/cloud/cloud.cfg.d/00_ol-default-user.cfg regexp: "name: ec2-user" replace: "name: admin" From 70f37483a7a2439e531cf55438886f2d26d7f554 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 11:09:30 +0200 Subject: [PATCH 081/123] Bump github.com/go-delve/delve from 1.20.2 to 1.21.0 in /tools (#2321) Bumps [github.com/go-delve/delve](https://github.com/go-delve/delve) from 1.20.2 to 1.21.0. - [Release notes](https://github.com/go-delve/delve/releases) - [Changelog](https://github.com/go-delve/delve/blob/master/CHANGELOG.md) - [Commits](https://github.com/go-delve/delve/compare/v1.20.2...v1.21.0) --- updated-dependencies: - dependency-name: github.com/go-delve/delve dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 4 ++-- tools/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 3c5fa8dff6..f12b907249 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -11,7 +11,7 @@ require ( github.com/bufbuild/buf v1.22.0 github.com/daixiang0/gci v0.10.1 github.com/envoyproxy/protoc-gen-validate v1.0.1 - github.com/go-delve/delve v1.20.2 + github.com/go-delve/delve v1.21.0 github.com/go-openapi/runtime v0.25.0 github.com/go-openapi/spec v0.20.4 github.com/go-swagger/go-swagger v0.29.0 @@ -92,7 +92,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/go-containerregistry v0.15.2 // indirect - github.com/google/go-dap v0.7.0 // indirect + github.com/google/go-dap v0.9.1 // indirect github.com/google/go-github/v33 v33.0.0 // indirect github.com/google/go-github/v39 v39.2.0 // indirect github.com/google/go-github/v41 v41.0.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 4ea18f4bf7..b85127f518 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -188,8 +188,8 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-delve/delve v1.20.2 h1:rgPK7Iqb1oQk+i2Ilg0fpH6p5LqyixYiAt4N3Lhx4/Y= -github.com/go-delve/delve v1.20.2/go.mod h1:KQtnLRy2M+cNHCRnDzURxljVNbRTdvVDD5Mb10KGP18= +github.com/go-delve/delve v1.21.0 h1:npcc8TZhdVxaMSJon+zqcE3bXM/ck8SSOOWw/id13jI= +github.com/go-delve/delve v1.21.0/go.mod h1:U+OAdfhewudkHsVs/AwhfpSBu7t/NgIXH3+my4T5q78= github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d h1:pxjSLshkZJGLVm0wv20f/H0oTWiq/egkoJQ2ja6LEvo= github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d/go.mod h1:biJCRbqp51wS+I92HMqn5H8/A0PAhxn2vyOT+JqhiGI= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -353,8 +353,8 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE= github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q= -github.com/google/go-dap v0.7.0 h1:088PdKBUkxAxrXrnY8FREUJXpS6Y6jhAyZIuJv3OGOM= -github.com/google/go-dap v0.7.0/go.mod h1:5q8aYQFnHOAZEMP+6vmq25HKYAEwE+LF5yh7JKrrhSQ= +github.com/google/go-dap v0.9.1 h1:d8dETjgHMR9/xs+Xza+NrZmB7jxIS5OtM2uRsyJVA/c= +github.com/google/go-dap v0.9.1/go.mod h1:HAeyoSd2WIfTfg+0GRXcFrb+RnojAtGNh+k+XTIxJDE= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-github/v33 v33.0.0 h1:qAf9yP0qc54ufQxzwv+u9H0tiVOnPJxo0lI/JXqw3ZM= github.com/google/go-github/v33 v33.0.0/go.mod h1:GMdDnVZY/2TsWgp/lkYnpSAh6TrzhANBBwm6k6TTEXg= From fe8e9478160aab8c5a2cedb3e8b0404d6c05a1c2 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Wed, 28 Jun 2023 12:11:19 +0300 Subject: [PATCH 082/123] PMM-7 enable `interfacebloat` linter rule (#2316) * PMM-7 enable `interfacebloat` linter rule * PMM-7 remove temp disables --------- Co-authored-by: Artem Gavrilov --- .golangci.yml | 1 - admin/commands/pmm/server/docker/deps.go | 2 +- managed/services/management/dbaas/deps.go | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 9705dbb7d6..645ad885e3 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -114,7 +114,6 @@ linters: - revive - paralleltest - gocognit - - interfacebloat - errcheck # ENDTODO diff --git a/admin/commands/pmm/server/docker/deps.go b/admin/commands/pmm/server/docker/deps.go index 1c5eed963e..b50e1d3ae2 100644 --- a/admin/commands/pmm/server/docker/deps.go +++ b/admin/commands/pmm/server/docker/deps.go @@ -30,7 +30,7 @@ import ( //go:generate ../../../../../bin/mockery -name=Functions -case=snake -inpkg -testonly // Functions contain methods required to interact with Docker. -type Functions interface { +type Functions interface { //nolint:interfacebloat Imager Installer diff --git a/managed/services/management/dbaas/deps.go b/managed/services/management/dbaas/deps.go index 6779827751..eee5bdffd5 100644 --- a/managed/services/management/dbaas/deps.go +++ b/managed/services/management/dbaas/deps.go @@ -97,7 +97,7 @@ type componentsService interface { InstallOperator(context.Context, *dbaasv1beta1.InstallOperatorRequest) (*dbaasv1beta1.InstallOperatorResponse, error) } -type kubernetesClient interface { +type kubernetesClient interface { //nolint:interfacebloat SetKubeconfig(string) error ListDatabaseClusters(context.Context) (*dbaasv1.DatabaseClusterList, error) GetDatabaseCluster(context.Context, string) (*dbaasv1.DatabaseCluster, error) From d1fd1e373c01316d5af8c5df6326818af9e1fa4b Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Wed, 28 Jun 2023 14:20:06 +0200 Subject: [PATCH 083/123] PMM-7 Update mockery to v2 (#2323) * Bump github.com/vektra/mockery in /tools Bumps [github.com/vektra/mockery](https://github.com/vektra/mockery) from 1.1.2 to 2.30.8+incompatible. - [Release notes](https://github.com/vektra/mockery/releases) - [Changelog](https://github.com/vektra/mockery/blob/master/docs/changelog.md) - [Commits](https://github.com/vektra/mockery/compare/v1.1.2...v2.30.8) --- updated-dependencies: - dependency-name: github.com/vektra/mockery dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Update mockery to V2 --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- admin/commands/pmm/server/docker/deps.go | 2 +- .../pmm/server/docker/mock_functions_test.go | 72 +++++++-- agent/agentlocal/deps.go | 4 +- agent/agentlocal/mock_client_test.go | 24 ++- agent/agentlocal/mock_supervisor_test.go | 17 ++- agent/client/deps.go | 4 +- agent/client/mock_connection_checker_test.go | 17 ++- agent/client/mock_supervisor_test.go | 22 ++- agent/versioner/mock_exec_functions_test.go | 22 ++- agent/versioner/versioner.go | 2 +- managed/services/backup/deps.go | 14 +- .../backup/mock_agent_service_test.go | 17 ++- .../backup/mock_compatibility_service_test.go | 22 ++- .../services/backup/mock_jobs_service_test.go | 17 ++- .../backup/mock_pbm_pitr_service_test.go | 27 +++- .../backup/mock_removal_service_test.go | 17 ++- managed/services/backup/mock_storage_test.go | 27 +++- .../services/backup/mock_versioner_test.go | 22 ++- managed/services/checks/deps.go | 4 +- .../checks/mock_agents_registry_test.go | 17 ++- .../checks/mock_alertmanager_service_test.go | 22 ++- .../services/dbaas/kubernetes/client/gen.go | 2 +- .../client/mock_kube_client_connector.go | 137 ++++++++++++++---- managed/services/grafana/deps.go | 2 +- .../grafana/mock_aws_instance_checker_test.go | 17 ++- managed/services/inventory/deps.go | 14 +- .../inventory/mock_agent_service_test.go | 24 ++- .../inventory/mock_agents_registry_test.go | 17 ++- .../mock_agents_state_updater_test.go | 17 ++- .../inventory/mock_connection_checker_test.go | 17 ++- .../inventory/mock_inventory_metrics_test.go | 32 +++- .../inventory/mock_prometheus_service_test.go | 17 ++- .../inventory/mock_version_cache_test.go | 17 ++- managed/services/management/alerting/deps.go | 2 +- .../alerting/mock_grafana_client_test.go | 27 +++- managed/services/management/backup/deps.go | 10 +- .../management/backup/mock_aws_s3_test.go | 27 +++- .../backup/mock_backup_service_test.go | 35 ++++- .../backup/mock_pbm_pitr_service_test.go | 34 ++++- .../backup/mock_removal_service_test.go | 23 ++- .../backup/mock_schedule_service_test.go | 22 ++- managed/services/management/dbaas/deps.go | 12 +- .../dbaas/mock_components_service_test.go | 47 +++++- .../dbaas/mock_dbaas_client_test.go | 52 ++++++- .../dbaas/mock_grafana_client_test.go | 24 ++- .../dbaas/mock_kube_storage_manager_test.go | 22 ++- .../dbaas/mock_kubernetes_client_test.go | 103 ++++++++++--- .../dbaas/mock_version_service_test.go | 49 ++++++- managed/services/management/deps.go | 18 +-- managed/services/management/ia/deps.go | 6 +- .../management/ia/mock_alert_manager_test.go | 27 +++- .../ia/mock_templates_service_test.go | 17 ++- .../management/ia/mock_vm_alert_test.go | 17 ++- .../management/mock_agents_registry_test.go | 17 ++- .../mock_agents_state_updater_test.go | 17 ++- .../management/mock_api_key_provider_test.go | 24 ++- .../management/mock_checks_service_test.go | 42 +++++- .../mock_connection_checker_test.go | 17 ++- .../management/mock_grafana_client_test.go | 22 ++- .../management/mock_jobs_service_test.go | 17 ++- .../mock_prometheus_service_test.go | 17 ++- .../management/mock_version_cache_test.go | 17 ++- .../mock_victoria_metrics_client_test.go | 24 ++- managed/services/management/node.go | 2 +- managed/services/qan/deps.go | 2 +- .../qan/mock_qan_collector_client_test.go | 22 ++- managed/services/scheduler/deps.go | 2 +- .../scheduler/mock_backup_service_test.go | 22 ++- managed/services/server/deps.go | 22 +-- .../server/mock_agents_state_updater_test.go | 17 ++- .../server/mock_alertmanager_service_test.go | 17 ++- .../server/mock_checks_service_test.go | 17 ++- managed/services/server/mock_emailer_test.go | 17 ++- .../server/mock_grafana_client_test.go | 17 ++- .../server/mock_prometheus_service_test.go | 17 ++- .../server/mock_rules_service_test.go | 17 ++- .../server/mock_supervisord_service_test.go | 34 ++++- .../server/mock_telemetry_service_test.go | 17 ++- .../server/mock_templates_service_test.go | 17 ++- .../mock_vm_alert_external_rules_test.go | 22 ++- managed/services/telemetry/deps.go | 8 +- .../mock_data_source_locator_test.go | 22 ++- .../telemetry/mock_data_source_test.go | 22 ++- .../mock_distribution_util_service_test.go | 24 ++- .../services/telemetry/mock_sender_test.go | 17 ++- .../versioncache/mock_versioner_test.go | 22 ++- managed/services/versioncache/versioncache.go | 2 +- tools/go.mod | 26 ++-- tools/go.sum | 57 ++++---- tools/tools.go | 4 +- 90 files changed, 1664 insertions(+), 314 deletions(-) diff --git a/admin/commands/pmm/server/docker/deps.go b/admin/commands/pmm/server/docker/deps.go index b50e1d3ae2..45664aa57b 100644 --- a/admin/commands/pmm/server/docker/deps.go +++ b/admin/commands/pmm/server/docker/deps.go @@ -27,7 +27,7 @@ import ( "github.com/percona/pmm/admin/pkg/docker" ) -//go:generate ../../../../../bin/mockery -name=Functions -case=snake -inpkg -testonly +//go:generate ../../../../../bin/mockery --name=Functions --case=snake --inpackage --testonly // Functions contain methods required to interact with Docker. type Functions interface { //nolint:interfacebloat diff --git a/admin/commands/pmm/server/docker/mock_functions_test.go b/admin/commands/pmm/server/docker/mock_functions_test.go index bdb8413c80..8841c6a2d8 100644 --- a/admin/commands/pmm/server/docker/mock_functions_test.go +++ b/admin/commands/pmm/server/docker/mock_functions_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package docker @@ -13,7 +13,7 @@ import ( client "github.com/docker/docker/client" mock "github.com/stretchr/testify/mock" - "github.com/percona/pmm/admin/pkg/docker" + pkgdocker "github.com/percona/pmm/admin/pkg/docker" ) // MockFunctions is an autogenerated mock type for the Functions type @@ -40,13 +40,16 @@ func (_m *MockFunctions) ContainerInspect(ctx context.Context, containerID strin ret := _m.Called(ctx, containerID) var r0 types.ContainerJSON + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (types.ContainerJSON, error)); ok { + return rf(ctx, containerID) + } if rf, ok := ret.Get(0).(func(context.Context, string) types.ContainerJSON); ok { r0 = rf(ctx, containerID) } else { r0 = ret.Get(0).(types.ContainerJSON) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, containerID) } else { @@ -75,13 +78,16 @@ func (_m *MockFunctions) ContainerUpdate(ctx context.Context, containerID string ret := _m.Called(ctx, containerID, updateConfig) var r0 container.ContainerUpdateOKBody + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, container.UpdateConfig) (container.ContainerUpdateOKBody, error)); ok { + return rf(ctx, containerID, updateConfig) + } if rf, ok := ret.Get(0).(func(context.Context, string, container.UpdateConfig) container.ContainerUpdateOKBody); ok { r0 = rf(ctx, containerID, updateConfig) } else { r0 = ret.Get(0).(container.ContainerUpdateOKBody) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, container.UpdateConfig) error); ok { r1 = rf(ctx, containerID, updateConfig) } else { @@ -96,6 +102,10 @@ func (_m *MockFunctions) ContainerWait(ctx context.Context, containerID string, ret := _m.Called(ctx, containerID, condition) var r0 <-chan container.WaitResponse + var r1 <-chan error + if rf, ok := ret.Get(0).(func(context.Context, string, container.WaitCondition) (<-chan container.WaitResponse, <-chan error)); ok { + return rf(ctx, containerID, condition) + } if rf, ok := ret.Get(0).(func(context.Context, string, container.WaitCondition) <-chan container.WaitResponse); ok { r0 = rf(ctx, containerID, condition) } else { @@ -104,7 +114,6 @@ func (_m *MockFunctions) ContainerWait(ctx context.Context, containerID string, } } - var r1 <-chan error if rf, ok := ret.Get(1).(func(context.Context, string, container.WaitCondition) <-chan error); ok { r1 = rf(ctx, containerID, condition) } else { @@ -121,6 +130,10 @@ func (_m *MockFunctions) CreateVolume(ctx context.Context, volumeName string, la ret := _m.Called(ctx, volumeName, labels) var r0 *volume.Volume + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) (*volume.Volume, error)); ok { + return rf(ctx, volumeName, labels) + } if rf, ok := ret.Get(0).(func(context.Context, string, map[string]string) *volume.Volume); ok { r0 = rf(ctx, volumeName, labels) } else { @@ -129,7 +142,6 @@ func (_m *MockFunctions) CreateVolume(ctx context.Context, volumeName string, la } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, map[string]string) error); ok { r1 = rf(ctx, volumeName, labels) } else { @@ -144,6 +156,10 @@ func (_m *MockFunctions) FindServerContainers(ctx context.Context) ([]types.Cont ret := _m.Called(ctx) var r0 []types.Container + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) ([]types.Container, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) []types.Container); ok { r0 = rf(ctx) } else { @@ -152,7 +168,6 @@ func (_m *MockFunctions) FindServerContainers(ctx context.Context) ([]types.Cont } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -211,13 +226,16 @@ func (_m *MockFunctions) IsDockerInstalled() (bool, error) { ret := _m.Called() var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func() (bool, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() bool); ok { r0 = rf() } else { r0 = ret.Get(0).(bool) } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -232,6 +250,10 @@ func (_m *MockFunctions) ParsePullImageProgress(r io.Reader, p *tea.Program) (<- ret := _m.Called(r, p) var r0 <-chan struct{} + var r1 <-chan error + if rf, ok := ret.Get(0).(func(io.Reader, *tea.Program) (<-chan struct{}, <-chan error)); ok { + return rf(r, p) + } if rf, ok := ret.Get(0).(func(io.Reader, *tea.Program) <-chan struct{}); ok { r0 = rf(r, p) } else { @@ -240,7 +262,6 @@ func (_m *MockFunctions) ParsePullImageProgress(r io.Reader, p *tea.Program) (<- } } - var r1 <-chan error if rf, ok := ret.Get(1).(func(io.Reader, *tea.Program) <-chan error); ok { r1 = rf(r, p) } else { @@ -257,6 +278,10 @@ func (_m *MockFunctions) PullImage(ctx context.Context, dockerImage string, opts ret := _m.Called(ctx, dockerImage, opts) var r0 io.Reader + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, types.ImagePullOptions) (io.Reader, error)); ok { + return rf(ctx, dockerImage, opts) + } if rf, ok := ret.Get(0).(func(context.Context, string, types.ImagePullOptions) io.Reader); ok { r0 = rf(ctx, dockerImage, opts) } else { @@ -265,7 +290,6 @@ func (_m *MockFunctions) PullImage(ctx context.Context, dockerImage string, opts } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, types.ImagePullOptions) error); ok { r1 = rf(ctx, dockerImage, opts) } else { @@ -280,13 +304,16 @@ func (_m *MockFunctions) RunContainer(ctx context.Context, config *container.Con ret := _m.Called(ctx, config, hostConfig, containerName) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *container.Config, *container.HostConfig, string) (string, error)); ok { + return rf(ctx, config, hostConfig, containerName) + } if rf, ok := ret.Get(0).(func(context.Context, *container.Config, *container.HostConfig, string) string); ok { r0 = rf(ctx, config, hostConfig, containerName) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *container.Config, *container.HostConfig, string) error); ok { r1 = rf(ctx, config, hostConfig, containerName) } else { @@ -297,17 +324,32 @@ func (_m *MockFunctions) RunContainer(ctx context.Context, config *container.Con } // WaitForHealthyContainer provides a mock function with given fields: ctx, containerID -func (_m *MockFunctions) WaitForHealthyContainer(ctx context.Context, containerID string) <-chan docker.WaitHealthyResponse { +func (_m *MockFunctions) WaitForHealthyContainer(ctx context.Context, containerID string) <-chan pkgdocker.WaitHealthyResponse { ret := _m.Called(ctx, containerID) - var r0 <-chan docker.WaitHealthyResponse - if rf, ok := ret.Get(0).(func(context.Context, string) <-chan docker.WaitHealthyResponse); ok { + var r0 <-chan pkgdocker.WaitHealthyResponse + if rf, ok := ret.Get(0).(func(context.Context, string) <-chan pkgdocker.WaitHealthyResponse); ok { r0 = rf(ctx, containerID) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(<-chan docker.WaitHealthyResponse) + r0 = ret.Get(0).(<-chan pkgdocker.WaitHealthyResponse) } } return r0 } + +// NewMockFunctions creates a new instance of MockFunctions. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockFunctions(t interface { + mock.TestingT + Cleanup(func()) +}, +) *MockFunctions { + mock := &MockFunctions{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/agent/agentlocal/deps.go b/agent/agentlocal/deps.go index 8ff7b79c3b..b948131412 100644 --- a/agent/agentlocal/deps.go +++ b/agent/agentlocal/deps.go @@ -23,8 +23,8 @@ import ( "github.com/percona/pmm/api/agentpb" ) -//go:generate ../../bin/mockery -name=client -case=snake -inpkg -testonly -//go:generate ../../bin/mockery -name=supervisor -case=snake -inpkg -testonly +//go:generate ../../bin/mockery --name=client --case=snake --inpackage --testonly +//go:generate ../../bin/mockery --name=supervisor --case=snake --inpackage --testonly // client is a subset of methods of client.Client used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/agent/agentlocal/mock_client_test.go b/agent/agentlocal/mock_client_test.go index 4714bf1a41..bbb4506d1c 100644 --- a/agent/agentlocal/mock_client_test.go +++ b/agent/agentlocal/mock_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package agentlocal @@ -45,20 +45,23 @@ func (_m *mockClient) GetNetworkInformation() (time.Duration, time.Duration, err ret := _m.Called() var r0 time.Duration + var r1 time.Duration + var r2 error + if rf, ok := ret.Get(0).(func() (time.Duration, time.Duration, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() time.Duration); ok { r0 = rf() } else { r0 = ret.Get(0).(time.Duration) } - var r1 time.Duration if rf, ok := ret.Get(1).(func() time.Duration); ok { r1 = rf() } else { r1 = ret.Get(1).(time.Duration) } - var r2 error if rf, ok := ret.Get(2).(func() error); ok { r2 = rf() } else { @@ -83,3 +86,18 @@ func (_m *mockClient) GetServerConnectMetadata() *agentpb.ServerConnectMetadata return r0 } + +// newMockClient creates a new instance of mockClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockClient { + mock := &mockClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/agent/agentlocal/mock_supervisor_test.go b/agent/agentlocal/mock_supervisor_test.go index 1fbcbc0cc0..442d1b4994 100644 --- a/agent/agentlocal/mock_supervisor_test.go +++ b/agent/agentlocal/mock_supervisor_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package agentlocal @@ -44,3 +44,18 @@ func (_m *mockSupervisor) AgentsLogs() map[string][]string { return r0 } + +// newMockSupervisor creates a new instance of mockSupervisor. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockSupervisor(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockSupervisor { + mock := &mockSupervisor{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/agent/client/deps.go b/agent/client/deps.go index 830ff9dfac..4310931445 100644 --- a/agent/client/deps.go +++ b/agent/client/deps.go @@ -23,8 +23,8 @@ import ( "github.com/percona/pmm/api/agentpb" ) -//go:generate ../../bin/mockery -name=connectionChecker -case=snake -inpkg -testonly -//go:generate ../../bin/mockery -name=supervisor -case=snake -inpkg -testonly +//go:generate ../../bin/mockery --name=connectionChecker --case=snake --inpackage --testonly +//go:generate ../../bin/mockery --name=supervisor --case=snake --inpackage --testonly // connectionChecker is a subset of methods of connectionchecker.ConnectionChecker used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/agent/client/mock_connection_checker_test.go b/agent/client/mock_connection_checker_test.go index 77e0a17cb9..c1369d5718 100644 --- a/agent/client/mock_connection_checker_test.go +++ b/agent/client/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package client @@ -30,3 +30,18 @@ func (_m *mockConnectionChecker) Check(ctx context.Context, req *agentpb.CheckCo return r0 } + +// newMockConnectionChecker creates a new instance of mockConnectionChecker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockConnectionChecker(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockConnectionChecker { + mock := &mockConnectionChecker{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/agent/client/mock_supervisor_test.go b/agent/client/mock_supervisor_test.go index 9e96ef2a92..84c02b68a1 100644 --- a/agent/client/mock_supervisor_test.go +++ b/agent/client/mock_supervisor_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package client @@ -20,6 +20,10 @@ func (_m *mockSupervisor) AgentLogByID(_a0 string) ([]string, uint) { ret := _m.Called(_a0) var r0 []string + var r1 uint + if rf, ok := ret.Get(0).(func(string) ([]string, uint)); ok { + return rf(_a0) + } if rf, ok := ret.Get(0).(func(string) []string); ok { r0 = rf(_a0) } else { @@ -28,7 +32,6 @@ func (_m *mockSupervisor) AgentLogByID(_a0 string) ([]string, uint) { } } - var r1 uint if rf, ok := ret.Get(1).(func(string) uint); ok { r1 = rf(_a0) } else { @@ -110,3 +113,18 @@ func (_m *mockSupervisor) RestartAgents() { func (_m *mockSupervisor) SetState(_a0 *agentpb.SetStateRequest) { _m.Called(_a0) } + +// newMockSupervisor creates a new instance of mockSupervisor. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockSupervisor(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockSupervisor { + mock := &mockSupervisor{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/agent/versioner/mock_exec_functions_test.go b/agent/versioner/mock_exec_functions_test.go index 7d664f0390..cef0d3136a 100644 --- a/agent/versioner/mock_exec_functions_test.go +++ b/agent/versioner/mock_exec_functions_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package versioner @@ -41,13 +41,16 @@ func (_m *MockExecFunctions) LookPath(file string) (string, error) { ret := _m.Called(file) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(string) (string, error)); ok { + return rf(file) + } if rf, ok := ret.Get(0).(func(string) string); ok { r0 = rf(file) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(string) error); ok { r1 = rf(file) } else { @@ -56,3 +59,18 @@ func (_m *MockExecFunctions) LookPath(file string) (string, error) { return r0, r1 } + +// NewMockExecFunctions creates a new instance of MockExecFunctions. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockExecFunctions(t interface { + mock.TestingT + Cleanup(func()) +}, +) *MockExecFunctions { + mock := &MockExecFunctions{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/agent/versioner/versioner.go b/agent/versioner/versioner.go index 9e737e230c..8cb4a12191 100644 --- a/agent/versioner/versioner.go +++ b/agent/versioner/versioner.go @@ -51,7 +51,7 @@ type CombinedOutputer interface { CombinedOutput() ([]byte, error) } -//go:generate ../../bin/mockery -name=ExecFunctions -case=snake -inpkg -testonly +//go:generate ../../bin/mockery --name=ExecFunctions --case=snake --inpackage --testonly // ExecFunctions is an interface for the LookPath() and CommandContext() functions. type ExecFunctions interface { diff --git a/managed/services/backup/deps.go b/managed/services/backup/deps.go index 07c73cfe0d..86c0caf8a4 100644 --- a/managed/services/backup/deps.go +++ b/managed/services/backup/deps.go @@ -24,13 +24,13 @@ import ( "github.com/percona/pmm/managed/services/minio" ) -//go:generate ../../../bin/mockery -name=jobsService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=agentService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=versioner -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=compatibilityService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=pbmPITRService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=Storage -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=removalService -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=jobsService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=agentService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=versioner --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=compatibilityService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=pbmPITRService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=Storage --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=removalService --case=snake --inpackage --testonly // jobsService is a subset of methods of agents.JobsService used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/managed/services/backup/mock_agent_service_test.go b/managed/services/backup/mock_agent_service_test.go index 9c5b5f0505..3be56de1ac 100644 --- a/managed/services/backup/mock_agent_service_test.go +++ b/managed/services/backup/mock_agent_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -26,3 +26,18 @@ func (_m *mockAgentService) PBMSwitchPITR(pmmAgentID string, dsn string, files m return r0 } + +// newMockAgentService creates a new instance of mockAgentService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentService { + mock := &mockAgentService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/backup/mock_compatibility_service_test.go b/managed/services/backup/mock_compatibility_service_test.go index c974271e2b..e0cf6b26df 100644 --- a/managed/services/backup/mock_compatibility_service_test.go +++ b/managed/services/backup/mock_compatibility_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -32,13 +32,16 @@ func (_m *mockCompatibilityService) CheckSoftwareCompatibilityForService(ctx con ret := _m.Called(ctx, serviceID) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (string, error)); ok { + return rf(ctx, serviceID) + } if rf, ok := ret.Get(0).(func(context.Context, string) string); ok { r0 = rf(ctx, serviceID) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, serviceID) } else { @@ -47,3 +50,18 @@ func (_m *mockCompatibilityService) CheckSoftwareCompatibilityForService(ctx con return r0, r1 } + +// newMockCompatibilityService creates a new instance of mockCompatibilityService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockCompatibilityService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockCompatibilityService { + mock := &mockCompatibilityService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/backup/mock_jobs_service_test.go b/managed/services/backup/mock_jobs_service_test.go index 34b0028815..b85845eb81 100644 --- a/managed/services/backup/mock_jobs_service_test.go +++ b/managed/services/backup/mock_jobs_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -84,3 +84,18 @@ func (_m *mockJobsService) StopJob(jobID string) error { return r0 } + +// newMockJobsService creates a new instance of mockJobsService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockJobsService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockJobsService { + mock := &mockJobsService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/backup/mock_pbm_pitr_service_test.go b/managed/services/backup/mock_pbm_pitr_service_test.go index 104259ebe8..b9a9bd71dd 100644 --- a/managed/services/backup/mock_pbm_pitr_service_test.go +++ b/managed/services/backup/mock_pbm_pitr_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -21,6 +21,10 @@ func (_m *mockPbmPITRService) GetPITRFiles(ctx context.Context, locationClient S ret := _m.Called(ctx, locationClient, location, artifact, until) var r0 []*oplogChunk + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, Storage, *models.BackupLocation, *models.Artifact, *time.Time) ([]*oplogChunk, error)); ok { + return rf(ctx, locationClient, location, artifact, until) + } if rf, ok := ret.Get(0).(func(context.Context, Storage, *models.BackupLocation, *models.Artifact, *time.Time) []*oplogChunk); ok { r0 = rf(ctx, locationClient, location, artifact, until) } else { @@ -29,7 +33,6 @@ func (_m *mockPbmPITRService) GetPITRFiles(ctx context.Context, locationClient S } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, Storage, *models.BackupLocation, *models.Artifact, *time.Time) error); ok { r1 = rf(ctx, locationClient, location, artifact, until) } else { @@ -44,6 +47,10 @@ func (_m *mockPbmPITRService) ListPITRTimeranges(ctx context.Context, locationCl ret := _m.Called(ctx, locationClient, location, artifact) var r0 []Timeline + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, Storage, *models.BackupLocation, *models.Artifact) ([]Timeline, error)); ok { + return rf(ctx, locationClient, location, artifact) + } if rf, ok := ret.Get(0).(func(context.Context, Storage, *models.BackupLocation, *models.Artifact) []Timeline); ok { r0 = rf(ctx, locationClient, location, artifact) } else { @@ -52,7 +59,6 @@ func (_m *mockPbmPITRService) ListPITRTimeranges(ctx context.Context, locationCl } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, Storage, *models.BackupLocation, *models.Artifact) error); ok { r1 = rf(ctx, locationClient, location, artifact) } else { @@ -61,3 +67,18 @@ func (_m *mockPbmPITRService) ListPITRTimeranges(ctx context.Context, locationCl return r0, r1 } + +// newMockPbmPITRService creates a new instance of mockPbmPITRService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockPbmPITRService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockPbmPITRService { + mock := &mockPbmPITRService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/backup/mock_removal_service_test.go b/managed/services/backup/mock_removal_service_test.go index b7b7675a35..8fcd7e6ef4 100644 --- a/managed/services/backup/mock_removal_service_test.go +++ b/managed/services/backup/mock_removal_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -36,3 +36,18 @@ func (_m *mockRemovalService) TrimPITRArtifact(storage Storage, artifactID strin return r0 } + +// newMockRemovalService creates a new instance of mockRemovalService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockRemovalService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockRemovalService { + mock := &mockRemovalService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/backup/mock_storage_test.go b/managed/services/backup/mock_storage_test.go index 5de2ba4101..699052bd20 100644 --- a/managed/services/backup/mock_storage_test.go +++ b/managed/services/backup/mock_storage_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -20,13 +20,16 @@ func (_m *MockStorage) FileStat(ctx context.Context, endpoint string, accessKey ret := _m.Called(ctx, endpoint, accessKey, secretKey, bucketName, name) var r0 minio.FileInfo + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string, string) (minio.FileInfo, error)); ok { + return rf(ctx, endpoint, accessKey, secretKey, bucketName, name) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string, string) minio.FileInfo); ok { r0 = rf(ctx, endpoint, accessKey, secretKey, bucketName, name) } else { r0 = ret.Get(0).(minio.FileInfo) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, string, string, string) error); ok { r1 = rf(ctx, endpoint, accessKey, secretKey, bucketName, name) } else { @@ -41,6 +44,10 @@ func (_m *MockStorage) List(ctx context.Context, endpoint string, accessKey stri ret := _m.Called(ctx, endpoint, accessKey, secretKey, bucketName, prefix, suffix) var r0 []minio.FileInfo + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string, string, string) ([]minio.FileInfo, error)); ok { + return rf(ctx, endpoint, accessKey, secretKey, bucketName, prefix, suffix) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string, string, string) []minio.FileInfo); ok { r0 = rf(ctx, endpoint, accessKey, secretKey, bucketName, prefix, suffix) } else { @@ -49,7 +56,6 @@ func (_m *MockStorage) List(ctx context.Context, endpoint string, accessKey stri } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, string, string, string, string) error); ok { r1 = rf(ctx, endpoint, accessKey, secretKey, bucketName, prefix, suffix) } else { @@ -86,3 +92,18 @@ func (_m *MockStorage) RemoveRecursive(ctx context.Context, endpoint string, acc return r0 } + +// NewMockStorage creates a new instance of MockStorage. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockStorage(t interface { + mock.TestingT + Cleanup(func()) +}, +) *MockStorage { + mock := &MockStorage{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/backup/mock_versioner_test.go b/managed/services/backup/mock_versioner_test.go index b577a352fb..10830471f6 100644 --- a/managed/services/backup/mock_versioner_test.go +++ b/managed/services/backup/mock_versioner_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -18,6 +18,10 @@ func (_m *mockVersioner) GetVersions(pmmAgentID string, softwares []agents.Softw ret := _m.Called(pmmAgentID, softwares) var r0 []agents.Version + var r1 error + if rf, ok := ret.Get(0).(func(string, []agents.Software) ([]agents.Version, error)); ok { + return rf(pmmAgentID, softwares) + } if rf, ok := ret.Get(0).(func(string, []agents.Software) []agents.Version); ok { r0 = rf(pmmAgentID, softwares) } else { @@ -26,7 +30,6 @@ func (_m *mockVersioner) GetVersions(pmmAgentID string, softwares []agents.Softw } } - var r1 error if rf, ok := ret.Get(1).(func(string, []agents.Software) error); ok { r1 = rf(pmmAgentID, softwares) } else { @@ -35,3 +38,18 @@ func (_m *mockVersioner) GetVersions(pmmAgentID string, softwares []agents.Softw return r0, r1 } + +// newMockVersioner creates a new instance of mockVersioner. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockVersioner(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockVersioner { + mock := &mockVersioner{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/checks/deps.go b/managed/services/checks/deps.go index 66892e9450..d4b3feeccb 100644 --- a/managed/services/checks/deps.go +++ b/managed/services/checks/deps.go @@ -23,8 +23,8 @@ import ( "github.com/percona/pmm/managed/services" ) -//go:generate ../../../bin/mockery -name=agentsRegistry -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=alertmanagerService -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=agentsRegistry --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=alertmanagerService --case=snake --inpackage --testonly // agentsRegistry is a subset of methods of agents.Registry used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/managed/services/checks/mock_agents_registry_test.go b/managed/services/checks/mock_agents_registry_test.go index 5c0027ddc8..4783d9703e 100644 --- a/managed/services/checks/mock_agents_registry_test.go +++ b/managed/services/checks/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package checks @@ -140,3 +140,18 @@ func (_m *mockAgentsRegistry) StartPostgreSQLQueryShowAction(ctx context.Context return r0 } + +// newMockAgentsRegistry creates a new instance of mockAgentsRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentsRegistry(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentsRegistry { + mock := &mockAgentsRegistry{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/checks/mock_alertmanager_service_test.go b/managed/services/checks/mock_alertmanager_service_test.go index 305c5cd65b..0b3c450ce2 100644 --- a/managed/services/checks/mock_alertmanager_service_test.go +++ b/managed/services/checks/mock_alertmanager_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package checks @@ -21,6 +21,10 @@ func (_m *mockAlertmanagerService) GetAlerts(ctx context.Context, params *servic ret := _m.Called(ctx, params) var r0 []*ammodels.GettableAlert + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *services.FilterParams) ([]*ammodels.GettableAlert, error)); ok { + return rf(ctx, params) + } if rf, ok := ret.Get(0).(func(context.Context, *services.FilterParams) []*ammodels.GettableAlert); ok { r0 = rf(ctx, params) } else { @@ -29,7 +33,6 @@ func (_m *mockAlertmanagerService) GetAlerts(ctx context.Context, params *servic } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *services.FilterParams) error); ok { r1 = rf(ctx, params) } else { @@ -71,3 +74,18 @@ func (_m *mockAlertmanagerService) UnsilenceAlerts(ctx context.Context, alerts [ return r0 } + +// newMockAlertmanagerService creates a new instance of mockAlertmanagerService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAlertmanagerService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAlertmanagerService { + mock := &mockAlertmanagerService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/dbaas/kubernetes/client/gen.go b/managed/services/dbaas/kubernetes/client/gen.go index e2c6ee6c7a..fe733886cf 100644 --- a/managed/services/dbaas/kubernetes/client/gen.go +++ b/managed/services/dbaas/kubernetes/client/gen.go @@ -16,4 +16,4 @@ package client //go:generate ../../../../../bin/ifacemaker -f client.go -s Client -i KubeClientConnector -p client -o kubeclient_interface.go -//go:generate ../../../../../bin/mockery -name=KubeClientConnector -case=snake -inpkg +//go:generate ../../../../../bin/mockery --name=KubeClientConnector --case=snake --inpackage diff --git a/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go b/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go index 5f5c876978..cc28b426e8 100644 --- a/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go +++ b/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package client @@ -59,6 +59,10 @@ func (_m *MockKubeClientConnector) CreateOperatorGroup(ctx context.Context, name ret := _m.Called(ctx, namespace, name) var r0 *v1.OperatorGroup + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1.OperatorGroup, error)); ok { + return rf(ctx, namespace, name) + } if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1.OperatorGroup); ok { r0 = rf(ctx, namespace, name) } else { @@ -67,7 +71,6 @@ func (_m *MockKubeClientConnector) CreateOperatorGroup(ctx context.Context, name } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { r1 = rf(ctx, namespace, name) } else { @@ -82,6 +85,10 @@ func (_m *MockKubeClientConnector) CreateSubscriptionForCatalog(ctx context.Cont ret := _m.Called(ctx, namespace, name, catalogNamespace, catalog, packageName, channel, startingCSV, approval) var r0 *v1alpha1.Subscription + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string, string, string, string, v1alpha1.Approval) (*v1alpha1.Subscription, error)); ok { + return rf(ctx, namespace, name, catalogNamespace, catalog, packageName, channel, startingCSV, approval) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string, string, string, string, v1alpha1.Approval) *v1alpha1.Subscription); ok { r0 = rf(ctx, namespace, name, catalogNamespace, catalog, packageName, channel, startingCSV, approval) } else { @@ -90,7 +97,6 @@ func (_m *MockKubeClientConnector) CreateSubscriptionForCatalog(ctx context.Cont } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, string, string, string, string, string, v1alpha1.Approval) error); ok { r1 = rf(ctx, namespace, name, catalogNamespace, catalog, packageName, channel, startingCSV, approval) } else { @@ -147,6 +153,10 @@ func (_m *MockKubeClientConnector) GenerateKubeConfig(secret *corev1.Secret) ([] ret := _m.Called(secret) var r0 []byte + var r1 error + if rf, ok := ret.Get(0).(func(*corev1.Secret) ([]byte, error)); ok { + return rf(secret) + } if rf, ok := ret.Get(0).(func(*corev1.Secret) []byte); ok { r0 = rf(secret) } else { @@ -155,7 +165,6 @@ func (_m *MockKubeClientConnector) GenerateKubeConfig(secret *corev1.Secret) ([] } } - var r1 error if rf, ok := ret.Get(1).(func(*corev1.Secret) error); ok { r1 = rf(secret) } else { @@ -170,6 +179,10 @@ func (_m *MockKubeClientConnector) GetDatabaseCluster(ctx context.Context, name ret := _m.Called(ctx, name) var r0 *apiv1.DatabaseCluster + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*apiv1.DatabaseCluster, error)); ok { + return rf(ctx, name) + } if rf, ok := ret.Get(0).(func(context.Context, string) *apiv1.DatabaseCluster); ok { r0 = rf(ctx, name) } else { @@ -178,7 +191,6 @@ func (_m *MockKubeClientConnector) GetDatabaseCluster(ctx context.Context, name } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, name) } else { @@ -193,6 +205,10 @@ func (_m *MockKubeClientConnector) GetDeployment(ctx context.Context, name strin ret := _m.Called(ctx, name) var r0 *appsv1.Deployment + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*appsv1.Deployment, error)); ok { + return rf(ctx, name) + } if rf, ok := ret.Get(0).(func(context.Context, string) *appsv1.Deployment); ok { r0 = rf(ctx, name) } else { @@ -201,7 +217,6 @@ func (_m *MockKubeClientConnector) GetDeployment(ctx context.Context, name strin } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, name) } else { @@ -216,13 +231,16 @@ func (_m *MockKubeClientConnector) GetEvents(ctx context.Context, name string) ( ret := _m.Called(ctx, name) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (string, error)); ok { + return rf(ctx, name) + } if rf, ok := ret.Get(0).(func(context.Context, string) string); ok { r0 = rf(ctx, name) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, name) } else { @@ -237,6 +255,10 @@ func (_m *MockKubeClientConnector) GetInstallPlan(ctx context.Context, namespace ret := _m.Called(ctx, namespace, name) var r0 *v1alpha1.InstallPlan + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1alpha1.InstallPlan, error)); ok { + return rf(ctx, namespace, name) + } if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1alpha1.InstallPlan); ok { r0 = rf(ctx, namespace, name) } else { @@ -245,7 +267,6 @@ func (_m *MockKubeClientConnector) GetInstallPlan(ctx context.Context, namespace } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { r1 = rf(ctx, namespace, name) } else { @@ -260,13 +281,16 @@ func (_m *MockKubeClientConnector) GetLogs(ctx context.Context, pod string, cont ret := _m.Called(ctx, pod, container) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (string, error)); ok { + return rf(ctx, pod, container) + } if rf, ok := ret.Get(0).(func(context.Context, string, string) string); ok { r0 = rf(ctx, pod, container) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { r1 = rf(ctx, pod, container) } else { @@ -281,6 +305,10 @@ func (_m *MockKubeClientConnector) GetNodes(ctx context.Context) (*corev1.NodeLi ret := _m.Called(ctx) var r0 *corev1.NodeList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*corev1.NodeList, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *corev1.NodeList); ok { r0 = rf(ctx) } else { @@ -289,7 +317,6 @@ func (_m *MockKubeClientConnector) GetNodes(ctx context.Context) (*corev1.NodeLi } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -304,6 +331,10 @@ func (_m *MockKubeClientConnector) GetOperatorGroup(ctx context.Context, namespa ret := _m.Called(ctx, namespace, name) var r0 *v1.OperatorGroup + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1.OperatorGroup, error)); ok { + return rf(ctx, namespace, name) + } if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1.OperatorGroup); ok { r0 = rf(ctx, namespace, name) } else { @@ -312,7 +343,6 @@ func (_m *MockKubeClientConnector) GetOperatorGroup(ctx context.Context, namespa } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { r1 = rf(ctx, namespace, name) } else { @@ -327,6 +357,10 @@ func (_m *MockKubeClientConnector) GetPersistentVolumes(ctx context.Context) (*c ret := _m.Called(ctx) var r0 *corev1.PersistentVolumeList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*corev1.PersistentVolumeList, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *corev1.PersistentVolumeList); ok { r0 = rf(ctx) } else { @@ -335,7 +369,6 @@ func (_m *MockKubeClientConnector) GetPersistentVolumes(ctx context.Context) (*c } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -350,6 +383,10 @@ func (_m *MockKubeClientConnector) GetPods(ctx context.Context, namespace string ret := _m.Called(ctx, namespace, labelSelector) var r0 *corev1.PodList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, *metav1.LabelSelector) (*corev1.PodList, error)); ok { + return rf(ctx, namespace, labelSelector) + } if rf, ok := ret.Get(0).(func(context.Context, string, *metav1.LabelSelector) *corev1.PodList); ok { r0 = rf(ctx, namespace, labelSelector) } else { @@ -358,7 +395,6 @@ func (_m *MockKubeClientConnector) GetPods(ctx context.Context, namespace string } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, *metav1.LabelSelector) error); ok { r1 = rf(ctx, namespace, labelSelector) } else { @@ -373,6 +409,10 @@ func (_m *MockKubeClientConnector) GetSecret(ctx context.Context, name string) ( ret := _m.Called(ctx, name) var r0 *corev1.Secret + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.Secret, error)); ok { + return rf(ctx, name) + } if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.Secret); ok { r0 = rf(ctx, name) } else { @@ -381,7 +421,6 @@ func (_m *MockKubeClientConnector) GetSecret(ctx context.Context, name string) ( } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, name) } else { @@ -396,6 +435,10 @@ func (_m *MockKubeClientConnector) GetSecretsForServiceAccount(ctx context.Conte ret := _m.Called(ctx, accountName) var r0 *corev1.Secret + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.Secret, error)); ok { + return rf(ctx, accountName) + } if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.Secret); ok { r0 = rf(ctx, accountName) } else { @@ -404,7 +447,6 @@ func (_m *MockKubeClientConnector) GetSecretsForServiceAccount(ctx context.Conte } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, accountName) } else { @@ -419,6 +461,10 @@ func (_m *MockKubeClientConnector) GetServerVersion() (*version.Info, error) { ret := _m.Called() var r0 *version.Info + var r1 error + if rf, ok := ret.Get(0).(func() (*version.Info, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() *version.Info); ok { r0 = rf() } else { @@ -427,7 +473,6 @@ func (_m *MockKubeClientConnector) GetServerVersion() (*version.Info, error) { } } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -442,6 +487,10 @@ func (_m *MockKubeClientConnector) GetStorageClasses(ctx context.Context) (*stor ret := _m.Called(ctx) var r0 *storagev1.StorageClassList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*storagev1.StorageClassList, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *storagev1.StorageClassList); ok { r0 = rf(ctx) } else { @@ -450,7 +499,6 @@ func (_m *MockKubeClientConnector) GetStorageClasses(ctx context.Context) (*stor } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -465,6 +513,10 @@ func (_m *MockKubeClientConnector) GetSubscription(ctx context.Context, namespac ret := _m.Called(ctx, namespace, name) var r0 *v1alpha1.Subscription + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (*v1alpha1.Subscription, error)); ok { + return rf(ctx, namespace, name) + } if rf, ok := ret.Get(0).(func(context.Context, string, string) *v1alpha1.Subscription); ok { r0 = rf(ctx, namespace, name) } else { @@ -473,7 +525,6 @@ func (_m *MockKubeClientConnector) GetSubscription(ctx context.Context, namespac } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { r1 = rf(ctx, namespace, name) } else { @@ -488,13 +539,16 @@ func (_m *MockKubeClientConnector) GetSubscriptionCSV(ctx context.Context, subKe ret := _m.Called(ctx, subKey) var r0 types.NamespacedName + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, types.NamespacedName) (types.NamespacedName, error)); ok { + return rf(ctx, subKey) + } if rf, ok := ret.Get(0).(func(context.Context, types.NamespacedName) types.NamespacedName); ok { r0 = rf(ctx, subKey) } else { r0 = ret.Get(0).(types.NamespacedName) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, types.NamespacedName) error); ok { r1 = rf(ctx, subKey) } else { @@ -509,6 +563,10 @@ func (_m *MockKubeClientConnector) ListCRDs(ctx context.Context, labelSelector * ret := _m.Called(ctx, labelSelector) var r0 *apiextensionsv1.CustomResourceDefinitionList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *metav1.LabelSelector) (*apiextensionsv1.CustomResourceDefinitionList, error)); ok { + return rf(ctx, labelSelector) + } if rf, ok := ret.Get(0).(func(context.Context, *metav1.LabelSelector) *apiextensionsv1.CustomResourceDefinitionList); ok { r0 = rf(ctx, labelSelector) } else { @@ -517,7 +575,6 @@ func (_m *MockKubeClientConnector) ListCRDs(ctx context.Context, labelSelector * } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *metav1.LabelSelector) error); ok { r1 = rf(ctx, labelSelector) } else { @@ -532,6 +589,10 @@ func (_m *MockKubeClientConnector) ListCRs(ctx context.Context, namespace string ret := _m.Called(ctx, namespace, gvr, labelSelector) var r0 *unstructured.UnstructuredList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, schema.GroupVersionResource, *metav1.LabelSelector) (*unstructured.UnstructuredList, error)); ok { + return rf(ctx, namespace, gvr, labelSelector) + } if rf, ok := ret.Get(0).(func(context.Context, string, schema.GroupVersionResource, *metav1.LabelSelector) *unstructured.UnstructuredList); ok { r0 = rf(ctx, namespace, gvr, labelSelector) } else { @@ -540,7 +601,6 @@ func (_m *MockKubeClientConnector) ListCRs(ctx context.Context, namespace string } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, schema.GroupVersionResource, *metav1.LabelSelector) error); ok { r1 = rf(ctx, namespace, gvr, labelSelector) } else { @@ -555,6 +615,10 @@ func (_m *MockKubeClientConnector) ListDatabaseClusters(ctx context.Context) (*a ret := _m.Called(ctx) var r0 *apiv1.DatabaseClusterList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*apiv1.DatabaseClusterList, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *apiv1.DatabaseClusterList); ok { r0 = rf(ctx) } else { @@ -563,7 +627,6 @@ func (_m *MockKubeClientConnector) ListDatabaseClusters(ctx context.Context) (*a } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -578,6 +641,10 @@ func (_m *MockKubeClientConnector) ListSecrets(ctx context.Context) (*corev1.Sec ret := _m.Called(ctx) var r0 *corev1.SecretList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*corev1.SecretList, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *corev1.SecretList); ok { r0 = rf(ctx) } else { @@ -586,7 +653,6 @@ func (_m *MockKubeClientConnector) ListSecrets(ctx context.Context) (*corev1.Sec } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -601,6 +667,10 @@ func (_m *MockKubeClientConnector) ListSubscriptions(ctx context.Context, namesp ret := _m.Called(ctx, namespace) var r0 *v1alpha1.SubscriptionList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*v1alpha1.SubscriptionList, error)); ok { + return rf(ctx, namespace) + } if rf, ok := ret.Get(0).(func(context.Context, string) *v1alpha1.SubscriptionList); ok { r0 = rf(ctx, namespace) } else { @@ -609,7 +679,6 @@ func (_m *MockKubeClientConnector) ListSubscriptions(ctx context.Context, namesp } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, namespace) } else { @@ -624,6 +693,10 @@ func (_m *MockKubeClientConnector) UpdateInstallPlan(ctx context.Context, namesp ret := _m.Called(ctx, namespace, installPlan) var r0 *v1alpha1.InstallPlan + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, *v1alpha1.InstallPlan) (*v1alpha1.InstallPlan, error)); ok { + return rf(ctx, namespace, installPlan) + } if rf, ok := ret.Get(0).(func(context.Context, string, *v1alpha1.InstallPlan) *v1alpha1.InstallPlan); ok { r0 = rf(ctx, namespace, installPlan) } else { @@ -632,7 +705,6 @@ func (_m *MockKubeClientConnector) UpdateInstallPlan(ctx context.Context, namesp } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, *v1alpha1.InstallPlan) error); ok { r1 = rf(ctx, namespace, installPlan) } else { @@ -641,3 +713,18 @@ func (_m *MockKubeClientConnector) UpdateInstallPlan(ctx context.Context, namesp return r0, r1 } + +// NewMockKubeClientConnector creates a new instance of MockKubeClientConnector. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockKubeClientConnector(t interface { + mock.TestingT + Cleanup(func()) +}, +) *MockKubeClientConnector { + mock := &MockKubeClientConnector{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/grafana/deps.go b/managed/services/grafana/deps.go index 80174df7fa..e58ce85e8b 100644 --- a/managed/services/grafana/deps.go +++ b/managed/services/grafana/deps.go @@ -15,7 +15,7 @@ package grafana -//go:generate ../../../bin/mockery -name=awsInstanceChecker -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=awsInstanceChecker --case=snake --inpackage --testonly // checker is a subset of methods of server.AWSInstanceChecker used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/managed/services/grafana/mock_aws_instance_checker_test.go b/managed/services/grafana/mock_aws_instance_checker_test.go index a639c9b3f6..c9e02a0897 100644 --- a/managed/services/grafana/mock_aws_instance_checker_test.go +++ b/managed/services/grafana/mock_aws_instance_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package grafana @@ -22,3 +22,18 @@ func (_m *mockAwsInstanceChecker) MustCheck() bool { return r0 } + +// newMockAwsInstanceChecker creates a new instance of mockAwsInstanceChecker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAwsInstanceChecker(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAwsInstanceChecker { + mock := &mockAwsInstanceChecker{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/inventory/deps.go b/managed/services/inventory/deps.go index b00c9d8734..a1471ea79c 100644 --- a/managed/services/inventory/deps.go +++ b/managed/services/inventory/deps.go @@ -23,13 +23,13 @@ import ( "github.com/percona/pmm/managed/models" ) -//go:generate ../../../bin/mockery -name=agentsRegistry -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=agentService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=agentsStateUpdater -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=prometheusService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=connectionChecker -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=versionCache -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=inventoryMetrics -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=agentsRegistry --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=agentService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=agentsStateUpdater --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=prometheusService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=connectionChecker --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=versionCache --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=inventoryMetrics --case=snake --inpackage --testonly // agentsRegistry is a subset of methods of agents.Registry used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/managed/services/inventory/mock_agent_service_test.go b/managed/services/inventory/mock_agent_service_test.go index 6b6fe42fcd..e5cb5c31a8 100644 --- a/managed/services/inventory/mock_agent_service_test.go +++ b/managed/services/inventory/mock_agent_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package inventory @@ -18,6 +18,11 @@ func (_m *mockAgentService) Logs(ctx context.Context, pmmAgentID string, agentID ret := _m.Called(ctx, pmmAgentID, agentID, limit) var r0 []string + var r1 uint32 + var r2 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, uint32) ([]string, uint32, error)); ok { + return rf(ctx, pmmAgentID, agentID, limit) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, uint32) []string); ok { r0 = rf(ctx, pmmAgentID, agentID, limit) } else { @@ -26,14 +31,12 @@ func (_m *mockAgentService) Logs(ctx context.Context, pmmAgentID string, agentID } } - var r1 uint32 if rf, ok := ret.Get(1).(func(context.Context, string, string, uint32) uint32); ok { r1 = rf(ctx, pmmAgentID, agentID, limit) } else { r1 = ret.Get(1).(uint32) } - var r2 error if rf, ok := ret.Get(2).(func(context.Context, string, string, uint32) error); ok { r2 = rf(ctx, pmmAgentID, agentID, limit) } else { @@ -42,3 +45,18 @@ func (_m *mockAgentService) Logs(ctx context.Context, pmmAgentID string, agentID return r0, r1, r2 } + +// newMockAgentService creates a new instance of mockAgentService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentService { + mock := &mockAgentService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/inventory/mock_agents_registry_test.go b/managed/services/inventory/mock_agents_registry_test.go index 2f3f6d6962..17d3609ad1 100644 --- a/managed/services/inventory/mock_agents_registry_test.go +++ b/managed/services/inventory/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package inventory @@ -31,3 +31,18 @@ func (_m *mockAgentsRegistry) IsConnected(pmmAgentID string) bool { func (_m *mockAgentsRegistry) Kick(ctx context.Context, pmmAgentID string) { _m.Called(ctx, pmmAgentID) } + +// newMockAgentsRegistry creates a new instance of mockAgentsRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentsRegistry(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentsRegistry { + mock := &mockAgentsRegistry{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/inventory/mock_agents_state_updater_test.go b/managed/services/inventory/mock_agents_state_updater_test.go index e24e2ecbf7..a073d3ee25 100644 --- a/managed/services/inventory/mock_agents_state_updater_test.go +++ b/managed/services/inventory/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package inventory @@ -17,3 +17,18 @@ type mockAgentsStateUpdater struct { func (_m *mockAgentsStateUpdater) RequestStateUpdate(ctx context.Context, pmmAgentID string) { _m.Called(ctx, pmmAgentID) } + +// newMockAgentsStateUpdater creates a new instance of mockAgentsStateUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentsStateUpdater(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentsStateUpdater { + mock := &mockAgentsStateUpdater{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/inventory/mock_connection_checker_test.go b/managed/services/inventory/mock_connection_checker_test.go index 566658670e..fca0ffe2da 100644 --- a/managed/services/inventory/mock_connection_checker_test.go +++ b/managed/services/inventory/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package inventory @@ -29,3 +29,18 @@ func (_m *mockConnectionChecker) CheckConnectionToService(ctx context.Context, q return r0 } + +// newMockConnectionChecker creates a new instance of mockConnectionChecker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockConnectionChecker(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockConnectionChecker { + mock := &mockConnectionChecker{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/inventory/mock_inventory_metrics_test.go b/managed/services/inventory/mock_inventory_metrics_test.go index 2f0154ea20..55e461e1cb 100644 --- a/managed/services/inventory/mock_inventory_metrics_test.go +++ b/managed/services/inventory/mock_inventory_metrics_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package inventory @@ -18,6 +18,10 @@ func (_m *mockInventoryMetrics) GetAgentMetrics(ctx context.Context) ([]Metric, ret := _m.Called(ctx) var r0 []Metric + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) ([]Metric, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) []Metric); ok { r0 = rf(ctx) } else { @@ -26,7 +30,6 @@ func (_m *mockInventoryMetrics) GetAgentMetrics(ctx context.Context) ([]Metric, } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -41,6 +44,10 @@ func (_m *mockInventoryMetrics) GetNodeMetrics(ctx context.Context) ([]Metric, e ret := _m.Called(ctx) var r0 []Metric + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) ([]Metric, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) []Metric); ok { r0 = rf(ctx) } else { @@ -49,7 +56,6 @@ func (_m *mockInventoryMetrics) GetNodeMetrics(ctx context.Context) ([]Metric, e } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -64,6 +70,10 @@ func (_m *mockInventoryMetrics) GetServiceMetrics(ctx context.Context) ([]Metric ret := _m.Called(ctx) var r0 []Metric + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) ([]Metric, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) []Metric); ok { r0 = rf(ctx) } else { @@ -72,7 +82,6 @@ func (_m *mockInventoryMetrics) GetServiceMetrics(ctx context.Context) ([]Metric } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -81,3 +90,18 @@ func (_m *mockInventoryMetrics) GetServiceMetrics(ctx context.Context) ([]Metric return r0, r1 } + +// newMockInventoryMetrics creates a new instance of mockInventoryMetrics. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockInventoryMetrics(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockInventoryMetrics { + mock := &mockInventoryMetrics{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/inventory/mock_prometheus_service_test.go b/managed/services/inventory/mock_prometheus_service_test.go index 5e66ff6898..03d2770440 100644 --- a/managed/services/inventory/mock_prometheus_service_test.go +++ b/managed/services/inventory/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package inventory @@ -13,3 +13,18 @@ type mockPrometheusService struct { func (_m *mockPrometheusService) RequestConfigurationUpdate() { _m.Called() } + +// newMockPrometheusService creates a new instance of mockPrometheusService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockPrometheusService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockPrometheusService { + mock := &mockPrometheusService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/inventory/mock_version_cache_test.go b/managed/services/inventory/mock_version_cache_test.go index 4c34901cad..141a110d5f 100644 --- a/managed/services/inventory/mock_version_cache_test.go +++ b/managed/services/inventory/mock_version_cache_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package inventory @@ -13,3 +13,18 @@ type mockVersionCache struct { func (_m *mockVersionCache) RequestSoftwareVersionsUpdate() { _m.Called() } + +// newMockVersionCache creates a new instance of mockVersionCache. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockVersionCache(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockVersionCache { + mock := &mockVersionCache{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/alerting/deps.go b/managed/services/management/alerting/deps.go index df8fbdd553..6b21b5387c 100644 --- a/managed/services/management/alerting/deps.go +++ b/managed/services/management/alerting/deps.go @@ -23,7 +23,7 @@ import ( "github.com/percona/pmm/managed/services" ) -//go:generate ../../../../bin/mockery -name=grafanaClient -case=snake -inpkg -testonly +//go:generate ../../../../bin/mockery --name=grafanaClient --case=snake --inpackage --testonly type grafanaClient interface { CreateAlertRule(ctx context.Context, folderName, groupName string, rule *services.Rule) error diff --git a/managed/services/management/alerting/mock_grafana_client_test.go b/managed/services/management/alerting/mock_grafana_client_test.go index 79a714c9ec..917915019c 100644 --- a/managed/services/management/alerting/mock_grafana_client_test.go +++ b/managed/services/management/alerting/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package alerting @@ -35,13 +35,16 @@ func (_m *mockGrafanaClient) GetDatasourceUIDByID(ctx context.Context, id int64) ret := _m.Called(ctx, id) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, int64) (string, error)); ok { + return rf(ctx, id) + } if rf, ok := ret.Get(0).(func(context.Context, int64) string); ok { r0 = rf(ctx, id) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, int64) error); ok { r1 = rf(ctx, id) } else { @@ -56,6 +59,10 @@ func (_m *mockGrafanaClient) GetFolderByUID(ctx context.Context, uid string) (*g ret := _m.Called(ctx, uid) var r0 *gapi.Folder + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*gapi.Folder, error)); ok { + return rf(ctx, uid) + } if rf, ok := ret.Get(0).(func(context.Context, string) *gapi.Folder); ok { r0 = rf(ctx, uid) } else { @@ -64,7 +71,6 @@ func (_m *mockGrafanaClient) GetFolderByUID(ctx context.Context, uid string) (*g } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, uid) } else { @@ -73,3 +79,18 @@ func (_m *mockGrafanaClient) GetFolderByUID(ctx context.Context, uid string) (*g return r0, r1 } + +// newMockGrafanaClient creates a new instance of mockGrafanaClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockGrafanaClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockGrafanaClient { + mock := &mockGrafanaClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/backup/deps.go b/managed/services/management/backup/deps.go index a7b660c6ba..5b8b794122 100644 --- a/managed/services/management/backup/deps.go +++ b/managed/services/management/backup/deps.go @@ -24,11 +24,11 @@ import ( "github.com/percona/pmm/managed/services/scheduler" ) -//go:generate ../../../../bin/mockery -name=awsS3 -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=backupService -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=scheduleService -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=removalService -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=pbmPITRService -case=snake -inpkg -testonly +//go:generate ../../../../bin/mockery --name=awsS3 --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=backupService --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=scheduleService --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=removalService --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=pbmPITRService --case=snake --inpackage --testonly type awsS3 interface { GetBucketLocation(ctx context.Context, host string, accessKey, secretKey, name string) (string, error) diff --git a/managed/services/management/backup/mock_aws_s3_test.go b/managed/services/management/backup/mock_aws_s3_test.go index a148e76abd..967f65a60a 100644 --- a/managed/services/management/backup/mock_aws_s3_test.go +++ b/managed/services/management/backup/mock_aws_s3_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -18,13 +18,16 @@ func (_m *mockAwsS3) BucketExists(ctx context.Context, host string, accessKey st ret := _m.Called(ctx, host, accessKey, secretKey, name) var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string) (bool, error)); ok { + return rf(ctx, host, accessKey, secretKey, name) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string) bool); ok { r0 = rf(ctx, host, accessKey, secretKey, name) } else { r0 = ret.Get(0).(bool) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, string, string) error); ok { r1 = rf(ctx, host, accessKey, secretKey, name) } else { @@ -39,13 +42,16 @@ func (_m *mockAwsS3) GetBucketLocation(ctx context.Context, host string, accessK ret := _m.Called(ctx, host, accessKey, secretKey, name) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string) (string, error)); ok { + return rf(ctx, host, accessKey, secretKey, name) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, string, string) string); ok { r0 = rf(ctx, host, accessKey, secretKey, name) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, string, string) error); ok { r1 = rf(ctx, host, accessKey, secretKey, name) } else { @@ -68,3 +74,18 @@ func (_m *mockAwsS3) RemoveRecursive(ctx context.Context, endpoint string, acces return r0 } + +// newMockAwsS3 creates a new instance of mockAwsS3. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAwsS3(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAwsS3 { + mock := &mockAwsS3{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/backup/mock_backup_service_test.go b/managed/services/management/backup/mock_backup_service_test.go index a7df318ba1..e48d837367 100644 --- a/managed/services/management/backup/mock_backup_service_test.go +++ b/managed/services/management/backup/mock_backup_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -8,7 +8,7 @@ import ( mock "github.com/stretchr/testify/mock" - "github.com/percona/pmm/managed/services/backup" + servicesbackup "github.com/percona/pmm/managed/services/backup" ) // mockBackupService is an autogenerated mock type for the backupService type @@ -17,18 +17,21 @@ type mockBackupService struct { } // PerformBackup provides a mock function with given fields: ctx, params -func (_m *mockBackupService) PerformBackup(ctx context.Context, params backup.PerformBackupParams) (string, error) { +func (_m *mockBackupService) PerformBackup(ctx context.Context, params servicesbackup.PerformBackupParams) (string, error) { ret := _m.Called(ctx, params) var r0 string - if rf, ok := ret.Get(0).(func(context.Context, backup.PerformBackupParams) string); ok { + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, servicesbackup.PerformBackupParams) (string, error)); ok { + return rf(ctx, params) + } + if rf, ok := ret.Get(0).(func(context.Context, servicesbackup.PerformBackupParams) string); ok { r0 = rf(ctx, params) } else { r0 = ret.Get(0).(string) } - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, backup.PerformBackupParams) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, servicesbackup.PerformBackupParams) error); ok { r1 = rf(ctx, params) } else { r1 = ret.Error(1) @@ -42,13 +45,16 @@ func (_m *mockBackupService) RestoreBackup(ctx context.Context, serviceID string ret := _m.Called(ctx, serviceID, artifactID, pitrTimestamp) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, time.Time) (string, error)); ok { + return rf(ctx, serviceID, artifactID, pitrTimestamp) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, time.Time) string); ok { r0 = rf(ctx, serviceID, artifactID, pitrTimestamp) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, time.Time) error); ok { r1 = rf(ctx, serviceID, artifactID, pitrTimestamp) } else { @@ -71,3 +77,18 @@ func (_m *mockBackupService) SwitchMongoPITR(ctx context.Context, serviceID stri return r0 } + +// newMockBackupService creates a new instance of mockBackupService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockBackupService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockBackupService { + mock := &mockBackupService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/backup/mock_pbm_pitr_service_test.go b/managed/services/management/backup/mock_pbm_pitr_service_test.go index 93592d44b3..0200781289 100644 --- a/managed/services/management/backup/mock_pbm_pitr_service_test.go +++ b/managed/services/management/backup/mock_pbm_pitr_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -8,7 +8,7 @@ import ( mock "github.com/stretchr/testify/mock" models "github.com/percona/pmm/managed/models" - "github.com/percona/pmm/managed/services/backup" + servicesbackup "github.com/percona/pmm/managed/services/backup" ) // mockPbmPITRService is an autogenerated mock type for the pbmPITRService type @@ -17,20 +17,23 @@ type mockPbmPITRService struct { } // ListPITRTimeranges provides a mock function with given fields: ctx, locationClient, location, artifact -func (_m *mockPbmPITRService) ListPITRTimeranges(ctx context.Context, locationClient backup.Storage, location *models.BackupLocation, artifact *models.Artifact) ([]backup.Timeline, error) { +func (_m *mockPbmPITRService) ListPITRTimeranges(ctx context.Context, locationClient servicesbackup.Storage, location *models.BackupLocation, artifact *models.Artifact) ([]servicesbackup.Timeline, error) { ret := _m.Called(ctx, locationClient, location, artifact) - var r0 []backup.Timeline - if rf, ok := ret.Get(0).(func(context.Context, backup.Storage, *models.BackupLocation, *models.Artifact) []backup.Timeline); ok { + var r0 []servicesbackup.Timeline + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, servicesbackup.Storage, *models.BackupLocation, *models.Artifact) ([]servicesbackup.Timeline, error)); ok { + return rf(ctx, locationClient, location, artifact) + } + if rf, ok := ret.Get(0).(func(context.Context, servicesbackup.Storage, *models.BackupLocation, *models.Artifact) []servicesbackup.Timeline); ok { r0 = rf(ctx, locationClient, location, artifact) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).([]backup.Timeline) + r0 = ret.Get(0).([]servicesbackup.Timeline) } } - var r1 error - if rf, ok := ret.Get(1).(func(context.Context, backup.Storage, *models.BackupLocation, *models.Artifact) error); ok { + if rf, ok := ret.Get(1).(func(context.Context, servicesbackup.Storage, *models.BackupLocation, *models.Artifact) error); ok { r1 = rf(ctx, locationClient, location, artifact) } else { r1 = ret.Error(1) @@ -38,3 +41,18 @@ func (_m *mockPbmPITRService) ListPITRTimeranges(ctx context.Context, locationCl return r0, r1 } + +// newMockPbmPITRService creates a new instance of mockPbmPITRService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockPbmPITRService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockPbmPITRService { + mock := &mockPbmPITRService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/backup/mock_removal_service_test.go b/managed/services/management/backup/mock_removal_service_test.go index 75fc429d12..220e042193 100644 --- a/managed/services/management/backup/mock_removal_service_test.go +++ b/managed/services/management/backup/mock_removal_service_test.go @@ -1,11 +1,11 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup import ( mock "github.com/stretchr/testify/mock" - "github.com/percona/pmm/managed/services/backup" + servicesbackup "github.com/percona/pmm/managed/services/backup" ) // mockRemovalService is an autogenerated mock type for the removalService type @@ -14,11 +14,11 @@ type mockRemovalService struct { } // DeleteArtifact provides a mock function with given fields: storage, artifactID, removeFiles -func (_m *mockRemovalService) DeleteArtifact(storage backup.Storage, artifactID string, removeFiles bool) error { +func (_m *mockRemovalService) DeleteArtifact(storage servicesbackup.Storage, artifactID string, removeFiles bool) error { ret := _m.Called(storage, artifactID, removeFiles) var r0 error - if rf, ok := ret.Get(0).(func(backup.Storage, string, bool) error); ok { + if rf, ok := ret.Get(0).(func(servicesbackup.Storage, string, bool) error); ok { r0 = rf(storage, artifactID, removeFiles) } else { r0 = ret.Error(0) @@ -26,3 +26,18 @@ func (_m *mockRemovalService) DeleteArtifact(storage backup.Storage, artifactID return r0 } + +// newMockRemovalService creates a new instance of mockRemovalService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockRemovalService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockRemovalService { + mock := &mockRemovalService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/backup/mock_schedule_service_test.go b/managed/services/management/backup/mock_schedule_service_test.go index 748208bdef..21c17c231b 100644 --- a/managed/services/management/backup/mock_schedule_service_test.go +++ b/managed/services/management/backup/mock_schedule_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package backup @@ -21,6 +21,10 @@ func (_m *mockScheduleService) Add(task scheduler.Task, params scheduler.AddPara ret := _m.Called(task, params) var r0 *models.ScheduledTask + var r1 error + if rf, ok := ret.Get(0).(func(scheduler.Task, scheduler.AddParams) (*models.ScheduledTask, error)); ok { + return rf(task, params) + } if rf, ok := ret.Get(0).(func(scheduler.Task, scheduler.AddParams) *models.ScheduledTask); ok { r0 = rf(task, params) } else { @@ -29,7 +33,6 @@ func (_m *mockScheduleService) Add(task scheduler.Task, params scheduler.AddPara } } - var r1 error if rf, ok := ret.Get(1).(func(scheduler.Task, scheduler.AddParams) error); ok { r1 = rf(task, params) } else { @@ -71,3 +74,18 @@ func (_m *mockScheduleService) Update(id string, params models.ChangeScheduledTa return r0 } + +// newMockScheduleService creates a new instance of mockScheduleService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockScheduleService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockScheduleService { + mock := &mockScheduleService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/dbaas/deps.go b/managed/services/management/dbaas/deps.go index eee5bdffd5..84509c0236 100644 --- a/managed/services/management/dbaas/deps.go +++ b/managed/services/management/dbaas/deps.go @@ -34,12 +34,12 @@ import ( "github.com/percona/pmm/managed/services/dbaas/kubernetes" ) -//go:generate ../../../../bin/mockery -name=dbaasClient -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=versionService -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=grafanaClient -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=componentsService -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=kubernetesClient -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=kubeStorageManager -case=snake -inpkg -testonly +//go:generate ../../../../bin/mockery --name=dbaasClient --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=versionService --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=grafanaClient --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=componentsService --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=kubernetesClient --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=kubeStorageManager --case=snake --inpackage --testonly type dbaasClient interface { // Connect connects the client to dbaas-controller API. diff --git a/managed/services/management/dbaas/mock_components_service_test.go b/managed/services/management/dbaas/mock_components_service_test.go index 1baf299e3b..4e8c1662a6 100644 --- a/managed/services/management/dbaas/mock_components_service_test.go +++ b/managed/services/management/dbaas/mock_components_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package dbaas @@ -20,6 +20,10 @@ func (_m *mockComponentsService) ChangePSMDBComponents(_a0 context.Context, _a1 ret := _m.Called(_a0, _a1) var r0 *dbaasv1beta1.ChangePSMDBComponentsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.ChangePSMDBComponentsRequest) (*dbaasv1beta1.ChangePSMDBComponentsResponse, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.ChangePSMDBComponentsRequest) *dbaasv1beta1.ChangePSMDBComponentsResponse); ok { r0 = rf(_a0, _a1) } else { @@ -28,7 +32,6 @@ func (_m *mockComponentsService) ChangePSMDBComponents(_a0 context.Context, _a1 } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *dbaasv1beta1.ChangePSMDBComponentsRequest) error); ok { r1 = rf(_a0, _a1) } else { @@ -43,6 +46,10 @@ func (_m *mockComponentsService) ChangePXCComponents(_a0 context.Context, _a1 *d ret := _m.Called(_a0, _a1) var r0 *dbaasv1beta1.ChangePXCComponentsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.ChangePXCComponentsRequest) (*dbaasv1beta1.ChangePXCComponentsResponse, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.ChangePXCComponentsRequest) *dbaasv1beta1.ChangePXCComponentsResponse); ok { r0 = rf(_a0, _a1) } else { @@ -51,7 +58,6 @@ func (_m *mockComponentsService) ChangePXCComponents(_a0 context.Context, _a1 *d } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *dbaasv1beta1.ChangePXCComponentsRequest) error); ok { r1 = rf(_a0, _a1) } else { @@ -66,6 +72,10 @@ func (_m *mockComponentsService) CheckForOperatorUpdate(_a0 context.Context, _a1 ret := _m.Called(_a0, _a1) var r0 *dbaasv1beta1.CheckForOperatorUpdateResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.CheckForOperatorUpdateRequest) (*dbaasv1beta1.CheckForOperatorUpdateResponse, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.CheckForOperatorUpdateRequest) *dbaasv1beta1.CheckForOperatorUpdateResponse); ok { r0 = rf(_a0, _a1) } else { @@ -74,7 +84,6 @@ func (_m *mockComponentsService) CheckForOperatorUpdate(_a0 context.Context, _a1 } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *dbaasv1beta1.CheckForOperatorUpdateRequest) error); ok { r1 = rf(_a0, _a1) } else { @@ -89,6 +98,10 @@ func (_m *mockComponentsService) GetPSMDBComponents(_a0 context.Context, _a1 *db ret := _m.Called(_a0, _a1) var r0 *dbaasv1beta1.GetPSMDBComponentsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.GetPSMDBComponentsRequest) (*dbaasv1beta1.GetPSMDBComponentsResponse, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.GetPSMDBComponentsRequest) *dbaasv1beta1.GetPSMDBComponentsResponse); ok { r0 = rf(_a0, _a1) } else { @@ -97,7 +110,6 @@ func (_m *mockComponentsService) GetPSMDBComponents(_a0 context.Context, _a1 *db } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *dbaasv1beta1.GetPSMDBComponentsRequest) error); ok { r1 = rf(_a0, _a1) } else { @@ -112,6 +124,10 @@ func (_m *mockComponentsService) GetPXCComponents(_a0 context.Context, _a1 *dbaa ret := _m.Called(_a0, _a1) var r0 *dbaasv1beta1.GetPXCComponentsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.GetPXCComponentsRequest) (*dbaasv1beta1.GetPXCComponentsResponse, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.GetPXCComponentsRequest) *dbaasv1beta1.GetPXCComponentsResponse); ok { r0 = rf(_a0, _a1) } else { @@ -120,7 +136,6 @@ func (_m *mockComponentsService) GetPXCComponents(_a0 context.Context, _a1 *dbaa } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *dbaasv1beta1.GetPXCComponentsRequest) error); ok { r1 = rf(_a0, _a1) } else { @@ -135,6 +150,10 @@ func (_m *mockComponentsService) InstallOperator(_a0 context.Context, _a1 *dbaas ret := _m.Called(_a0, _a1) var r0 *dbaasv1beta1.InstallOperatorResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.InstallOperatorRequest) (*dbaasv1beta1.InstallOperatorResponse, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, *dbaasv1beta1.InstallOperatorRequest) *dbaasv1beta1.InstallOperatorResponse); ok { r0 = rf(_a0, _a1) } else { @@ -143,7 +162,6 @@ func (_m *mockComponentsService) InstallOperator(_a0 context.Context, _a1 *dbaas } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *dbaasv1beta1.InstallOperatorRequest) error); ok { r1 = rf(_a0, _a1) } else { @@ -152,3 +170,18 @@ func (_m *mockComponentsService) InstallOperator(_a0 context.Context, _a1 *dbaas return r0, r1 } + +// newMockComponentsService creates a new instance of mockComponentsService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockComponentsService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockComponentsService { + mock := &mockComponentsService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/dbaas/mock_dbaas_client_test.go b/managed/services/management/dbaas/mock_dbaas_client_test.go index 6d7ba8c3d6..6908f7c2c4 100644 --- a/managed/services/management/dbaas/mock_dbaas_client_test.go +++ b/managed/services/management/dbaas/mock_dbaas_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package dbaas @@ -55,6 +55,10 @@ func (_m *mockDbaasClient) GetKubeConfig(ctx context.Context, in *controllerv1be ret := _m.Called(_ca...) var r0 *controllerv1beta1.GetKubeconfigResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.GetKubeconfigRequest, ...grpc.CallOption) (*controllerv1beta1.GetKubeconfigResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.GetKubeconfigRequest, ...grpc.CallOption) *controllerv1beta1.GetKubeconfigResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -63,7 +67,6 @@ func (_m *mockDbaasClient) GetKubeConfig(ctx context.Context, in *controllerv1be } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *controllerv1beta1.GetKubeconfigRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -85,6 +88,10 @@ func (_m *mockDbaasClient) GetLogs(ctx context.Context, in *controllerv1beta1.Ge ret := _m.Called(_ca...) var r0 *controllerv1beta1.GetLogsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.GetLogsRequest, ...grpc.CallOption) (*controllerv1beta1.GetLogsResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.GetLogsRequest, ...grpc.CallOption) *controllerv1beta1.GetLogsResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -93,7 +100,6 @@ func (_m *mockDbaasClient) GetLogs(ctx context.Context, in *controllerv1beta1.Ge } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *controllerv1beta1.GetLogsRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -115,6 +121,10 @@ func (_m *mockDbaasClient) GetResources(ctx context.Context, in *controllerv1bet ret := _m.Called(_ca...) var r0 *controllerv1beta1.GetResourcesResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.GetResourcesRequest, ...grpc.CallOption) (*controllerv1beta1.GetResourcesResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.GetResourcesRequest, ...grpc.CallOption) *controllerv1beta1.GetResourcesResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -123,7 +133,6 @@ func (_m *mockDbaasClient) GetResources(ctx context.Context, in *controllerv1bet } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *controllerv1beta1.GetResourcesRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -145,6 +154,10 @@ func (_m *mockDbaasClient) InstallPSMDBOperator(ctx context.Context, in *control ret := _m.Called(_ca...) var r0 *controllerv1beta1.InstallPSMDBOperatorResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.InstallPSMDBOperatorRequest, ...grpc.CallOption) (*controllerv1beta1.InstallPSMDBOperatorResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.InstallPSMDBOperatorRequest, ...grpc.CallOption) *controllerv1beta1.InstallPSMDBOperatorResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -153,7 +166,6 @@ func (_m *mockDbaasClient) InstallPSMDBOperator(ctx context.Context, in *control } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *controllerv1beta1.InstallPSMDBOperatorRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -175,6 +187,10 @@ func (_m *mockDbaasClient) InstallPXCOperator(ctx context.Context, in *controlle ret := _m.Called(_ca...) var r0 *controllerv1beta1.InstallPXCOperatorResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.InstallPXCOperatorRequest, ...grpc.CallOption) (*controllerv1beta1.InstallPXCOperatorResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.InstallPXCOperatorRequest, ...grpc.CallOption) *controllerv1beta1.InstallPXCOperatorResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -183,7 +199,6 @@ func (_m *mockDbaasClient) InstallPXCOperator(ctx context.Context, in *controlle } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *controllerv1beta1.InstallPXCOperatorRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -205,6 +220,10 @@ func (_m *mockDbaasClient) StartMonitoring(ctx context.Context, in *controllerv1 ret := _m.Called(_ca...) var r0 *controllerv1beta1.StartMonitoringResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.StartMonitoringRequest, ...grpc.CallOption) (*controllerv1beta1.StartMonitoringResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.StartMonitoringRequest, ...grpc.CallOption) *controllerv1beta1.StartMonitoringResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -213,7 +232,6 @@ func (_m *mockDbaasClient) StartMonitoring(ctx context.Context, in *controllerv1 } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *controllerv1beta1.StartMonitoringRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -235,6 +253,10 @@ func (_m *mockDbaasClient) StopMonitoring(ctx context.Context, in *controllerv1b ret := _m.Called(_ca...) var r0 *controllerv1beta1.StopMonitoringResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.StopMonitoringRequest, ...grpc.CallOption) (*controllerv1beta1.StopMonitoringResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *controllerv1beta1.StopMonitoringRequest, ...grpc.CallOption) *controllerv1beta1.StopMonitoringResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -243,7 +265,6 @@ func (_m *mockDbaasClient) StopMonitoring(ctx context.Context, in *controllerv1b } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *controllerv1beta1.StopMonitoringRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -252,3 +273,18 @@ func (_m *mockDbaasClient) StopMonitoring(ctx context.Context, in *controllerv1b return r0, r1 } + +// newMockDbaasClient creates a new instance of mockDbaasClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockDbaasClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockDbaasClient { + mock := &mockDbaasClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/dbaas/mock_grafana_client_test.go b/managed/services/management/dbaas/mock_grafana_client_test.go index d73e8c7574..c74aa84637 100644 --- a/managed/services/management/dbaas/mock_grafana_client_test.go +++ b/managed/services/management/dbaas/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package dbaas @@ -18,20 +18,23 @@ func (_m *mockGrafanaClient) CreateAdminAPIKey(ctx context.Context, name string) ret := _m.Called(ctx, name) var r0 int64 + var r1 string + var r2 error + if rf, ok := ret.Get(0).(func(context.Context, string) (int64, string, error)); ok { + return rf(ctx, name) + } if rf, ok := ret.Get(0).(func(context.Context, string) int64); ok { r0 = rf(ctx, name) } else { r0 = ret.Get(0).(int64) } - var r1 string if rf, ok := ret.Get(1).(func(context.Context, string) string); ok { r1 = rf(ctx, name) } else { r1 = ret.Get(1).(string) } - var r2 error if rf, ok := ret.Get(2).(func(context.Context, string) error); ok { r2 = rf(ctx, name) } else { @@ -68,3 +71,18 @@ func (_m *mockGrafanaClient) DeleteAPIKeysWithPrefix(ctx context.Context, name s return r0 } + +// newMockGrafanaClient creates a new instance of mockGrafanaClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockGrafanaClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockGrafanaClient { + mock := &mockGrafanaClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/dbaas/mock_kube_storage_manager_test.go b/managed/services/management/dbaas/mock_kube_storage_manager_test.go index 2ed20dba85..e5f2f146a1 100644 --- a/managed/services/management/dbaas/mock_kube_storage_manager_test.go +++ b/managed/services/management/dbaas/mock_kube_storage_manager_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package dbaas @@ -28,6 +28,10 @@ func (_m *mockKubeStorageManager) GetOrSetClient(name string) (kubernetesClient, ret := _m.Called(name) var r0 kubernetesClient + var r1 error + if rf, ok := ret.Get(0).(func(string) (kubernetesClient, error)); ok { + return rf(name) + } if rf, ok := ret.Get(0).(func(string) kubernetesClient); ok { r0 = rf(name) } else { @@ -36,7 +40,6 @@ func (_m *mockKubeStorageManager) GetOrSetClient(name string) (kubernetesClient, } } - var r1 error if rf, ok := ret.Get(1).(func(string) error); ok { r1 = rf(name) } else { @@ -45,3 +48,18 @@ func (_m *mockKubeStorageManager) GetOrSetClient(name string) (kubernetesClient, return r0, r1 } + +// newMockKubeStorageManager creates a new instance of mockKubeStorageManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockKubeStorageManager(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockKubeStorageManager { + mock := &mockKubeStorageManager{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/dbaas/mock_kubernetes_client_test.go b/managed/services/management/dbaas/mock_kubernetes_client_test.go index 0bbe76bfd9..2dd1b630f0 100644 --- a/managed/services/management/dbaas/mock_kubernetes_client_test.go +++ b/managed/services/management/dbaas/mock_kubernetes_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package dbaas @@ -82,27 +82,30 @@ func (_m *mockKubernetesClient) GetAllClusterResources(_a0 context.Context, _a1 ret := _m.Called(_a0, _a1, _a2) var r0 uint64 + var r1 uint64 + var r2 uint64 + var r3 error + if rf, ok := ret.Get(0).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) (uint64, uint64, uint64, error)); ok { + return rf(_a0, _a1, _a2) + } if rf, ok := ret.Get(0).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) uint64); ok { r0 = rf(_a0, _a1, _a2) } else { r0 = ret.Get(0).(uint64) } - var r1 uint64 if rf, ok := ret.Get(1).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) uint64); ok { r1 = rf(_a0, _a1, _a2) } else { r1 = ret.Get(1).(uint64) } - var r2 uint64 if rf, ok := ret.Get(2).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) uint64); ok { r2 = rf(_a0, _a1, _a2) } else { r2 = ret.Get(2).(uint64) } - var r3 error if rf, ok := ret.Get(3).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) error); ok { r3 = rf(_a0, _a1, _a2) } else { @@ -117,13 +120,16 @@ func (_m *mockKubernetesClient) GetClusterType(_a0 context.Context) (kubernetes. ret := _m.Called(_a0) var r0 kubernetes.ClusterType + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (kubernetes.ClusterType, error)); ok { + return rf(_a0) + } if rf, ok := ret.Get(0).(func(context.Context) kubernetes.ClusterType); ok { r0 = rf(_a0) } else { r0 = ret.Get(0).(kubernetes.ClusterType) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(_a0) } else { @@ -138,20 +144,23 @@ func (_m *mockKubernetesClient) GetConsumedCPUAndMemory(_a0 context.Context, _a1 ret := _m.Called(_a0, _a1) var r0 uint64 + var r1 uint64 + var r2 error + if rf, ok := ret.Get(0).(func(context.Context, string) (uint64, uint64, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, string) uint64); ok { r0 = rf(_a0, _a1) } else { r0 = ret.Get(0).(uint64) } - var r1 uint64 if rf, ok := ret.Get(1).(func(context.Context, string) uint64); ok { r1 = rf(_a0, _a1) } else { r1 = ret.Get(1).(uint64) } - var r2 error if rf, ok := ret.Get(2).(func(context.Context, string) error); ok { r2 = rf(_a0, _a1) } else { @@ -166,13 +175,16 @@ func (_m *mockKubernetesClient) GetConsumedDiskBytes(_a0 context.Context, _a1 ku ret := _m.Called(_a0, _a1, _a2) var r0 uint64 + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) (uint64, error)); ok { + return rf(_a0, _a1, _a2) + } if rf, ok := ret.Get(0).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) uint64); ok { r0 = rf(_a0, _a1, _a2) } else { r0 = ret.Get(0).(uint64) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, kubernetes.ClusterType, *corev1.PersistentVolumeList) error); ok { r1 = rf(_a0, _a1, _a2) } else { @@ -187,6 +199,10 @@ func (_m *mockKubernetesClient) GetDatabaseCluster(_a0 context.Context, _a1 stri ret := _m.Called(_a0, _a1) var r0 *v1.DatabaseCluster + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*v1.DatabaseCluster, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, string) *v1.DatabaseCluster); ok { r0 = rf(_a0, _a1) } else { @@ -195,7 +211,6 @@ func (_m *mockKubernetesClient) GetDatabaseCluster(_a0 context.Context, _a1 stri } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(_a0, _a1) } else { @@ -210,13 +225,16 @@ func (_m *mockKubernetesClient) GetDefaultStorageClassName(_a0 context.Context) ret := _m.Called(_a0) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (string, error)); ok { + return rf(_a0) + } if rf, ok := ret.Get(0).(func(context.Context) string); ok { r0 = rf(_a0) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(_a0) } else { @@ -231,13 +249,16 @@ func (_m *mockKubernetesClient) GetPSMDBOperatorVersion(_a0 context.Context) (st ret := _m.Called(_a0) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (string, error)); ok { + return rf(_a0) + } if rf, ok := ret.Get(0).(func(context.Context) string); ok { r0 = rf(_a0) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(_a0) } else { @@ -252,13 +273,16 @@ func (_m *mockKubernetesClient) GetPXCOperatorVersion(_a0 context.Context) (stri ret := _m.Called(_a0) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (string, error)); ok { + return rf(_a0) + } if rf, ok := ret.Get(0).(func(context.Context) string); ok { r0 = rf(_a0) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(_a0) } else { @@ -273,6 +297,10 @@ func (_m *mockKubernetesClient) GetPersistentVolumes(ctx context.Context) (*core ret := _m.Called(ctx) var r0 *corev1.PersistentVolumeList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*corev1.PersistentVolumeList, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *corev1.PersistentVolumeList); ok { r0 = rf(ctx) } else { @@ -281,7 +309,6 @@ func (_m *mockKubernetesClient) GetPersistentVolumes(ctx context.Context) (*core } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -296,6 +323,10 @@ func (_m *mockKubernetesClient) GetSecret(_a0 context.Context, _a1 string) (*cor ret := _m.Called(_a0, _a1) var r0 *corev1.Secret + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*corev1.Secret, error)); ok { + return rf(_a0, _a1) + } if rf, ok := ret.Get(0).(func(context.Context, string) *corev1.Secret); ok { r0 = rf(_a0, _a1) } else { @@ -304,7 +335,6 @@ func (_m *mockKubernetesClient) GetSecret(_a0 context.Context, _a1 string) (*cor } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(_a0, _a1) } else { @@ -319,6 +349,10 @@ func (_m *mockKubernetesClient) GetServerVersion() (*version.Info, error) { ret := _m.Called() var r0 *version.Info + var r1 error + if rf, ok := ret.Get(0).(func() (*version.Info, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() *version.Info); ok { r0 = rf() } else { @@ -327,7 +361,6 @@ func (_m *mockKubernetesClient) GetServerVersion() (*version.Info, error) { } } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -342,6 +375,10 @@ func (_m *mockKubernetesClient) GetStorageClasses(ctx context.Context) (*storage ret := _m.Called(ctx) var r0 *storagev1.StorageClassList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*storagev1.StorageClassList, error)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *storagev1.StorageClassList); ok { r0 = rf(ctx) } else { @@ -350,7 +387,6 @@ func (_m *mockKubernetesClient) GetStorageClasses(ctx context.Context) (*storage } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(ctx) } else { @@ -393,6 +429,10 @@ func (_m *mockKubernetesClient) ListDatabaseClusters(_a0 context.Context) (*v1.D ret := _m.Called(_a0) var r0 *v1.DatabaseClusterList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*v1.DatabaseClusterList, error)); ok { + return rf(_a0) + } if rf, ok := ret.Get(0).(func(context.Context) *v1.DatabaseClusterList); ok { r0 = rf(_a0) } else { @@ -401,7 +441,6 @@ func (_m *mockKubernetesClient) ListDatabaseClusters(_a0 context.Context) (*v1.D } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(_a0) } else { @@ -416,6 +455,10 @@ func (_m *mockKubernetesClient) ListSecrets(_a0 context.Context) (*corev1.Secret ret := _m.Called(_a0) var r0 *corev1.SecretList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (*corev1.SecretList, error)); ok { + return rf(_a0) + } if rf, ok := ret.Get(0).(func(context.Context) *corev1.SecretList); ok { r0 = rf(_a0) } else { @@ -424,7 +467,6 @@ func (_m *mockKubernetesClient) ListSecrets(_a0 context.Context) (*corev1.Secret } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context) error); ok { r1 = rf(_a0) } else { @@ -439,6 +481,10 @@ func (_m *mockKubernetesClient) ListSubscriptions(ctx context.Context, namespace ret := _m.Called(ctx, namespace) var r0 *v1alpha1.SubscriptionList + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*v1alpha1.SubscriptionList, error)); ok { + return rf(ctx, namespace) + } if rf, ok := ret.Get(0).(func(context.Context, string) *v1alpha1.SubscriptionList); ok { r0 = rf(ctx, namespace) } else { @@ -447,7 +493,6 @@ func (_m *mockKubernetesClient) ListSubscriptions(ctx context.Context, namespace } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, namespace) } else { @@ -462,6 +507,10 @@ func (_m *mockKubernetesClient) ListTemplates(ctx context.Context, engine string ret := _m.Called(ctx, engine, namespace) var r0 []*dbaasv1beta1.Template + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string) ([]*dbaasv1beta1.Template, error)); ok { + return rf(ctx, engine, namespace) + } if rf, ok := ret.Get(0).(func(context.Context, string, string) []*dbaasv1beta1.Template); ok { r0 = rf(ctx, engine, namespace) } else { @@ -470,7 +519,6 @@ func (_m *mockKubernetesClient) ListTemplates(ctx context.Context, engine string } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { r1 = rf(ctx, engine, namespace) } else { @@ -535,3 +583,18 @@ func (_m *mockKubernetesClient) UpgradeOperator(ctx context.Context, namespace s return r0 } + +// newMockKubernetesClient creates a new instance of mockKubernetesClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockKubernetesClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockKubernetesClient { + mock := &mockKubernetesClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/dbaas/mock_version_service_test.go b/managed/services/management/dbaas/mock_version_service_test.go index edd67d1c45..b5da686a14 100644 --- a/managed/services/management/dbaas/mock_version_service_test.go +++ b/managed/services/management/dbaas/mock_version_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package dbaas @@ -19,13 +19,16 @@ func (_m *mockVersionService) GetNextDatabaseImage(ctx context.Context, operator ret := _m.Called(ctx, operatorType, operatorVersion, installedDBVersion) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (string, error)); ok { + return rf(ctx, operatorType, operatorVersion, installedDBVersion) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, string) string); ok { r0 = rf(ctx, operatorType, operatorVersion, installedDBVersion) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok { r1 = rf(ctx, operatorType, operatorVersion, installedDBVersion) } else { @@ -54,13 +57,16 @@ func (_m *mockVersionService) IsDatabaseVersionSupportedByOperator(ctx context.C ret := _m.Called(ctx, operatorType, operatorVersion, databaseVersion) var r0 bool + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string, string) (bool, error)); ok { + return rf(ctx, operatorType, operatorVersion, databaseVersion) + } if rf, ok := ret.Get(0).(func(context.Context, string, string, string) bool); ok { r0 = rf(ctx, operatorType, operatorVersion, databaseVersion) } else { r0 = ret.Get(0).(bool) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string, string) error); ok { r1 = rf(ctx, operatorType, operatorVersion, databaseVersion) } else { @@ -75,6 +81,11 @@ func (_m *mockVersionService) LatestOperatorVersion(ctx context.Context, pmmVers ret := _m.Called(ctx, pmmVersion) var r0 *version.Version + var r1 *version.Version + var r2 error + if rf, ok := ret.Get(0).(func(context.Context, string) (*version.Version, *version.Version, error)); ok { + return rf(ctx, pmmVersion) + } if rf, ok := ret.Get(0).(func(context.Context, string) *version.Version); ok { r0 = rf(ctx, pmmVersion) } else { @@ -83,7 +94,6 @@ func (_m *mockVersionService) LatestOperatorVersion(ctx context.Context, pmmVers } } - var r1 *version.Version if rf, ok := ret.Get(1).(func(context.Context, string) *version.Version); ok { r1 = rf(ctx, pmmVersion) } else { @@ -92,7 +102,6 @@ func (_m *mockVersionService) LatestOperatorVersion(ctx context.Context, pmmVers } } - var r2 error if rf, ok := ret.Get(2).(func(context.Context, string) error); ok { r2 = rf(ctx, pmmVersion) } else { @@ -107,6 +116,10 @@ func (_m *mockVersionService) Matrix(ctx context.Context, params componentsParam ret := _m.Called(ctx, params) var r0 *VersionServiceResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, componentsParams) (*VersionServiceResponse, error)); ok { + return rf(ctx, params) + } if rf, ok := ret.Get(0).(func(context.Context, componentsParams) *VersionServiceResponse); ok { r0 = rf(ctx, params) } else { @@ -115,7 +128,6 @@ func (_m *mockVersionService) Matrix(ctx context.Context, params componentsParam } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, componentsParams) error); ok { r1 = rf(ctx, params) } else { @@ -130,6 +142,10 @@ func (_m *mockVersionService) NextOperatorVersion(ctx context.Context, operatorT ret := _m.Called(ctx, operatorType, installedVersion) var r0 *version.Version + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string, string) (*version.Version, error)); ok { + return rf(ctx, operatorType, installedVersion) + } if rf, ok := ret.Get(0).(func(context.Context, string, string) *version.Version); ok { r0 = rf(ctx, operatorType, installedVersion) } else { @@ -138,7 +154,6 @@ func (_m *mockVersionService) NextOperatorVersion(ctx context.Context, operatorT } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok { r1 = rf(ctx, operatorType, installedVersion) } else { @@ -153,6 +168,10 @@ func (_m *mockVersionService) SupportedOperatorVersionsList(ctx context.Context, ret := _m.Called(ctx, pmmVersion) var r0 map[string][]string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) (map[string][]string, error)); ok { + return rf(ctx, pmmVersion) + } if rf, ok := ret.Get(0).(func(context.Context, string) map[string][]string); ok { r0 = rf(ctx, pmmVersion) } else { @@ -161,7 +180,6 @@ func (_m *mockVersionService) SupportedOperatorVersionsList(ctx context.Context, } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, pmmVersion) } else { @@ -170,3 +188,18 @@ func (_m *mockVersionService) SupportedOperatorVersionsList(ctx context.Context, return r0, r1 } + +// newMockVersionService creates a new instance of mockVersionService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockVersionService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockVersionService { + mock := &mockVersionService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/deps.go b/managed/services/management/deps.go index 1572d32c5a..1a873f89a4 100644 --- a/managed/services/management/deps.go +++ b/managed/services/management/deps.go @@ -28,15 +28,15 @@ import ( "github.com/percona/pmm/managed/services" ) -//go:generate ../../../bin/mockery -name=agentsRegistry -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=agentsStateUpdater -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=prometheusService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=checksService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=grafanaClient -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=jobsService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=connectionChecker -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=versionCache -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=victoriaMetricsClient -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=agentsRegistry --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=agentsStateUpdater --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=prometheusService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=checksService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=grafanaClient --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=jobsService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=connectionChecker --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=versionCache --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=victoriaMetricsClient --case=snake --inpackage --testonly // agentsRegistry is a subset of methods of agents.Registry used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/managed/services/management/ia/deps.go b/managed/services/management/ia/deps.go index b047152e00..12f19bc0a4 100644 --- a/managed/services/management/ia/deps.go +++ b/managed/services/management/ia/deps.go @@ -23,9 +23,9 @@ import ( "github.com/percona/pmm/managed/services/management/alerting" ) -//go:generate ../../../../bin/mockery -name=alertManager -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=vmAlert -case=snake -inpkg -testonly -//go:generate ../../../../bin/mockery -name=templatesService -case=snake -inpkg -testonly +//go:generate ../../../../bin/mockery --name=alertManager --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=vmAlert --case=snake --inpackage --testonly +//go:generate ../../../../bin/mockery --name=templatesService --case=snake --inpackage --testonly // alertManager is a subset of methods of alertmanager.Service used by this package. // We use it instead of real type for testing and to avoid dependency cycle. diff --git a/managed/services/management/ia/mock_alert_manager_test.go b/managed/services/management/ia/mock_alert_manager_test.go index 5832587b47..807ea6bb70 100644 --- a/managed/services/management/ia/mock_alert_manager_test.go +++ b/managed/services/management/ia/mock_alert_manager_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package ia @@ -21,6 +21,10 @@ func (_m *mockAlertManager) FindAlertsByID(ctx context.Context, params *services ret := _m.Called(ctx, params, ids) var r0 []*ammodels.GettableAlert + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *services.FilterParams, []string) ([]*ammodels.GettableAlert, error)); ok { + return rf(ctx, params, ids) + } if rf, ok := ret.Get(0).(func(context.Context, *services.FilterParams, []string) []*ammodels.GettableAlert); ok { r0 = rf(ctx, params, ids) } else { @@ -29,7 +33,6 @@ func (_m *mockAlertManager) FindAlertsByID(ctx context.Context, params *services } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *services.FilterParams, []string) error); ok { r1 = rf(ctx, params, ids) } else { @@ -44,6 +47,10 @@ func (_m *mockAlertManager) GetAlerts(ctx context.Context, params *services.Filt ret := _m.Called(ctx, params) var r0 []*ammodels.GettableAlert + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *services.FilterParams) ([]*ammodels.GettableAlert, error)); ok { + return rf(ctx, params) + } if rf, ok := ret.Get(0).(func(context.Context, *services.FilterParams) []*ammodels.GettableAlert); ok { r0 = rf(ctx, params) } else { @@ -52,7 +59,6 @@ func (_m *mockAlertManager) GetAlerts(ctx context.Context, params *services.Filt } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *services.FilterParams) error); ok { r1 = rf(ctx, params) } else { @@ -94,3 +100,18 @@ func (_m *mockAlertManager) UnsilenceAlerts(ctx context.Context, alerts []*ammod return r0 } + +// newMockAlertManager creates a new instance of mockAlertManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAlertManager(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAlertManager { + mock := &mockAlertManager{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/ia/mock_templates_service_test.go b/managed/services/management/ia/mock_templates_service_test.go index 6f1e68ad29..fd979a674c 100644 --- a/managed/services/management/ia/mock_templates_service_test.go +++ b/managed/services/management/ia/mock_templates_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package ia @@ -28,3 +28,18 @@ func (_m *mockTemplatesService) GetTemplates() map[string]alerting.TemplateInfo return r0 } + +// newMockTemplatesService creates a new instance of mockTemplatesService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockTemplatesService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockTemplatesService { + mock := &mockTemplatesService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/ia/mock_vm_alert_test.go b/managed/services/management/ia/mock_vm_alert_test.go index 83722527c7..f4d881db5e 100644 --- a/managed/services/management/ia/mock_vm_alert_test.go +++ b/managed/services/management/ia/mock_vm_alert_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package ia @@ -13,3 +13,18 @@ type mockVmAlert struct { func (_m *mockVmAlert) RequestConfigurationUpdate() { _m.Called() } + +// newMockVmAlert creates a new instance of mockVmAlert. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockVmAlert(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockVmAlert { + mock := &mockVmAlert{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_agents_registry_test.go b/managed/services/management/mock_agents_registry_test.go index ea855f6147..0dbb0951da 100644 --- a/managed/services/management/mock_agents_registry_test.go +++ b/managed/services/management/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -31,3 +31,18 @@ func (_m *mockAgentsRegistry) IsConnected(pmmAgentID string) bool { func (_m *mockAgentsRegistry) Kick(ctx context.Context, pmmAgentID string) { _m.Called(ctx, pmmAgentID) } + +// newMockAgentsRegistry creates a new instance of mockAgentsRegistry. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentsRegistry(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentsRegistry { + mock := &mockAgentsRegistry{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_agents_state_updater_test.go b/managed/services/management/mock_agents_state_updater_test.go index dc2bdc59a9..ce3b259251 100644 --- a/managed/services/management/mock_agents_state_updater_test.go +++ b/managed/services/management/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -17,3 +17,18 @@ type mockAgentsStateUpdater struct { func (_m *mockAgentsStateUpdater) RequestStateUpdate(ctx context.Context, pmmAgentID string) { _m.Called(ctx, pmmAgentID) } + +// newMockAgentsStateUpdater creates a new instance of mockAgentsStateUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentsStateUpdater(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentsStateUpdater { + mock := &mockAgentsStateUpdater{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_api_key_provider_test.go b/managed/services/management/mock_api_key_provider_test.go index 21df427bc7..212d9665c4 100644 --- a/managed/services/management/mock_api_key_provider_test.go +++ b/managed/services/management/mock_api_key_provider_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -18,20 +18,23 @@ func (_m *mockApiKeyProvider) CreateAdminAPIKey(ctx context.Context, name string ret := _m.Called(ctx, name) var r0 int64 + var r1 string + var r2 error + if rf, ok := ret.Get(0).(func(context.Context, string) (int64, string, error)); ok { + return rf(ctx, name) + } if rf, ok := ret.Get(0).(func(context.Context, string) int64); ok { r0 = rf(ctx, name) } else { r0 = ret.Get(0).(int64) } - var r1 string if rf, ok := ret.Get(1).(func(context.Context, string) string); ok { r1 = rf(ctx, name) } else { r1 = ret.Get(1).(string) } - var r2 error if rf, ok := ret.Get(2).(func(context.Context, string) error); ok { r2 = rf(ctx, name) } else { @@ -40,3 +43,18 @@ func (_m *mockApiKeyProvider) CreateAdminAPIKey(ctx context.Context, name string return r0, r1, r2 } + +// newMockApiKeyProvider creates a new instance of mockApiKeyProvider. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockApiKeyProvider(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockApiKeyProvider { + mock := &mockApiKeyProvider{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_checks_service_test.go b/managed/services/management/mock_checks_service_test.go index cbcd758983..b8e56ad71e 100644 --- a/managed/services/management/mock_checks_service_test.go +++ b/managed/services/management/mock_checks_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -63,6 +63,10 @@ func (_m *mockChecksService) GetAdvisors() ([]check.Advisor, error) { ret := _m.Called() var r0 []check.Advisor + var r1 error + if rf, ok := ret.Get(0).(func() ([]check.Advisor, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() []check.Advisor); ok { r0 = rf() } else { @@ -71,7 +75,6 @@ func (_m *mockChecksService) GetAdvisors() ([]check.Advisor, error) { } } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -86,6 +89,10 @@ func (_m *mockChecksService) GetChecks() (map[string]check.Check, error) { ret := _m.Called() var r0 map[string]check.Check + var r1 error + if rf, ok := ret.Get(0).(func() (map[string]check.Check, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() map[string]check.Check); ok { r0 = rf() } else { @@ -94,7 +101,6 @@ func (_m *mockChecksService) GetChecks() (map[string]check.Check, error) { } } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -109,6 +115,10 @@ func (_m *mockChecksService) GetChecksResults(ctx context.Context, serviceID str ret := _m.Called(ctx, serviceID) var r0 []services.CheckResult + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, string) ([]services.CheckResult, error)); ok { + return rf(ctx, serviceID) + } if rf, ok := ret.Get(0).(func(context.Context, string) []services.CheckResult); ok { r0 = rf(ctx, serviceID) } else { @@ -117,7 +127,6 @@ func (_m *mockChecksService) GetChecksResults(ctx context.Context, serviceID str } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, string) error); ok { r1 = rf(ctx, serviceID) } else { @@ -132,6 +141,10 @@ func (_m *mockChecksService) GetDisabledChecks() ([]string, error) { ret := _m.Called() var r0 []string + var r1 error + if rf, ok := ret.Get(0).(func() ([]string, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() []string); ok { r0 = rf() } else { @@ -140,7 +153,6 @@ func (_m *mockChecksService) GetDisabledChecks() ([]string, error) { } } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -155,6 +167,10 @@ func (_m *mockChecksService) GetSecurityCheckResults() ([]services.CheckResult, ret := _m.Called() var r0 []services.CheckResult + var r1 error + if rf, ok := ret.Get(0).(func() ([]services.CheckResult, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() []services.CheckResult); ok { r0 = rf() } else { @@ -163,7 +179,6 @@ func (_m *mockChecksService) GetSecurityCheckResults() ([]services.CheckResult, } } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -200,3 +215,18 @@ func (_m *mockChecksService) ToggleCheckAlert(ctx context.Context, alertID strin return r0 } + +// newMockChecksService creates a new instance of mockChecksService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockChecksService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockChecksService { + mock := &mockChecksService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_connection_checker_test.go b/managed/services/management/mock_connection_checker_test.go index 560c8beafa..fba5fbe20e 100644 --- a/managed/services/management/mock_connection_checker_test.go +++ b/managed/services/management/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -29,3 +29,18 @@ func (_m *mockConnectionChecker) CheckConnectionToService(ctx context.Context, q return r0 } + +// newMockConnectionChecker creates a new instance of mockConnectionChecker. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockConnectionChecker(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockConnectionChecker { + mock := &mockConnectionChecker{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_grafana_client_test.go b/managed/services/management/mock_grafana_client_test.go index af714e11b5..47f47484f8 100644 --- a/managed/services/management/mock_grafana_client_test.go +++ b/managed/services/management/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -19,13 +19,16 @@ func (_m *mockGrafanaClient) CreateAnnotation(_a0 context.Context, _a1 []string, ret := _m.Called(_a0, _a1, _a2, _a3, _a4) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, []string, time.Time, string, string) (string, error)); ok { + return rf(_a0, _a1, _a2, _a3, _a4) + } if rf, ok := ret.Get(0).(func(context.Context, []string, time.Time, string, string) string); ok { r0 = rf(_a0, _a1, _a2, _a3, _a4) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, []string, time.Time, string, string) error); ok { r1 = rf(_a0, _a1, _a2, _a3, _a4) } else { @@ -34,3 +37,18 @@ func (_m *mockGrafanaClient) CreateAnnotation(_a0 context.Context, _a1 []string, return r0, r1 } + +// newMockGrafanaClient creates a new instance of mockGrafanaClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockGrafanaClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockGrafanaClient { + mock := &mockGrafanaClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_jobs_service_test.go b/managed/services/management/mock_jobs_service_test.go index 3937a6a6c1..22e2e7baf3 100644 --- a/managed/services/management/mock_jobs_service_test.go +++ b/managed/services/management/mock_jobs_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -22,3 +22,18 @@ func (_m *mockJobsService) StopJob(jobID string) error { return r0 } + +// newMockJobsService creates a new instance of mockJobsService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockJobsService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockJobsService { + mock := &mockJobsService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_prometheus_service_test.go b/managed/services/management/mock_prometheus_service_test.go index 6decf5f1b0..2c7ae426f1 100644 --- a/managed/services/management/mock_prometheus_service_test.go +++ b/managed/services/management/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -13,3 +13,18 @@ type mockPrometheusService struct { func (_m *mockPrometheusService) RequestConfigurationUpdate() { _m.Called() } + +// newMockPrometheusService creates a new instance of mockPrometheusService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockPrometheusService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockPrometheusService { + mock := &mockPrometheusService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_version_cache_test.go b/managed/services/management/mock_version_cache_test.go index 063a059b57..55b49d89ed 100644 --- a/managed/services/management/mock_version_cache_test.go +++ b/managed/services/management/mock_version_cache_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -13,3 +13,18 @@ type mockVersionCache struct { func (_m *mockVersionCache) RequestSoftwareVersionsUpdate() { _m.Called() } + +// newMockVersionCache creates a new instance of mockVersionCache. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockVersionCache(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockVersionCache { + mock := &mockVersionCache{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/mock_victoria_metrics_client_test.go b/managed/services/management/mock_victoria_metrics_client_test.go index a7e769730e..3a9733f06b 100644 --- a/managed/services/management/mock_victoria_metrics_client_test.go +++ b/managed/services/management/mock_victoria_metrics_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package management @@ -28,6 +28,11 @@ func (_m *mockVictoriaMetricsClient) Query(ctx context.Context, query string, ts ret := _m.Called(_ca...) var r0 model.Value + var r1 v1.Warnings + var r2 error + if rf, ok := ret.Get(0).(func(context.Context, string, time.Time, ...v1.Option) (model.Value, v1.Warnings, error)); ok { + return rf(ctx, query, ts, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, string, time.Time, ...v1.Option) model.Value); ok { r0 = rf(ctx, query, ts, opts...) } else { @@ -36,7 +41,6 @@ func (_m *mockVictoriaMetricsClient) Query(ctx context.Context, query string, ts } } - var r1 v1.Warnings if rf, ok := ret.Get(1).(func(context.Context, string, time.Time, ...v1.Option) v1.Warnings); ok { r1 = rf(ctx, query, ts, opts...) } else { @@ -45,7 +49,6 @@ func (_m *mockVictoriaMetricsClient) Query(ctx context.Context, query string, ts } } - var r2 error if rf, ok := ret.Get(2).(func(context.Context, string, time.Time, ...v1.Option) error); ok { r2 = rf(ctx, query, ts, opts...) } else { @@ -54,3 +57,18 @@ func (_m *mockVictoriaMetricsClient) Query(ctx context.Context, query string, ts return r0, r1, r2 } + +// newMockVictoriaMetricsClient creates a new instance of mockVictoriaMetricsClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockVictoriaMetricsClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockVictoriaMetricsClient { + mock := &mockVictoriaMetricsClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/management/node.go b/managed/services/management/node.go index edf56ce48e..0c17d5e3ea 100644 --- a/managed/services/management/node.go +++ b/managed/services/management/node.go @@ -31,7 +31,7 @@ import ( "github.com/percona/pmm/managed/services" ) -//go:generate ../../../bin/mockery -name=apiKeyProvider -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=apiKeyProvider --case=snake --inpackage --testonly type apiKeyProvider interface { CreateAdminAPIKey(ctx context.Context, name string) (int64, string, error) diff --git a/managed/services/qan/deps.go b/managed/services/qan/deps.go index 10392dde07..f745e18e53 100644 --- a/managed/services/qan/deps.go +++ b/managed/services/qan/deps.go @@ -23,7 +23,7 @@ import ( qanpb "github.com/percona/pmm/api/qanpb" ) -//go:generate ../../../bin/mockery -name=qanCollectorClient -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=qanCollectorClient --case=snake --inpackage --testonly // qanClient is a subset of methods of qanpb.CollectorClient used by this package. // We use it instead of real type for testing. diff --git a/managed/services/qan/mock_qan_collector_client_test.go b/managed/services/qan/mock_qan_collector_client_test.go index 9919d1bab0..d865ccac66 100644 --- a/managed/services/qan/mock_qan_collector_client_test.go +++ b/managed/services/qan/mock_qan_collector_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package qan @@ -28,6 +28,10 @@ func (_m *mockQanCollectorClient) Collect(ctx context.Context, in *qanv1beta1.Co ret := _m.Called(_ca...) var r0 *qanv1beta1.CollectResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, *qanv1beta1.CollectRequest, ...grpc.CallOption) (*qanv1beta1.CollectResponse, error)); ok { + return rf(ctx, in, opts...) + } if rf, ok := ret.Get(0).(func(context.Context, *qanv1beta1.CollectRequest, ...grpc.CallOption) *qanv1beta1.CollectResponse); ok { r0 = rf(ctx, in, opts...) } else { @@ -36,7 +40,6 @@ func (_m *mockQanCollectorClient) Collect(ctx context.Context, in *qanv1beta1.Co } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, *qanv1beta1.CollectRequest, ...grpc.CallOption) error); ok { r1 = rf(ctx, in, opts...) } else { @@ -45,3 +48,18 @@ func (_m *mockQanCollectorClient) Collect(ctx context.Context, in *qanv1beta1.Co return r0, r1 } + +// newMockQanCollectorClient creates a new instance of mockQanCollectorClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockQanCollectorClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockQanCollectorClient { + mock := &mockQanCollectorClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/scheduler/deps.go b/managed/services/scheduler/deps.go index 1c2666303d..0820f524b5 100644 --- a/managed/services/scheduler/deps.go +++ b/managed/services/scheduler/deps.go @@ -21,7 +21,7 @@ import ( "github.com/percona/pmm/managed/services/backup" ) -//go:generate ../../../bin/mockery -name=backupService -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=backupService --case=snake --inpackage --testonly type backupService interface { PerformBackup(ctx context.Context, params backup.PerformBackupParams) (string, error) diff --git a/managed/services/scheduler/mock_backup_service_test.go b/managed/services/scheduler/mock_backup_service_test.go index 07c4a5a4fe..ca8449ad96 100644 --- a/managed/services/scheduler/mock_backup_service_test.go +++ b/managed/services/scheduler/mock_backup_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package scheduler @@ -20,13 +20,16 @@ func (_m *mockBackupService) PerformBackup(ctx context.Context, params backup.Pe ret := _m.Called(ctx, params) var r0 string + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, backup.PerformBackupParams) (string, error)); ok { + return rf(ctx, params) + } if rf, ok := ret.Get(0).(func(context.Context, backup.PerformBackupParams) string); ok { r0 = rf(ctx, params) } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, backup.PerformBackupParams) error); ok { r1 = rf(ctx, params) } else { @@ -35,3 +38,18 @@ func (_m *mockBackupService) PerformBackup(ctx context.Context, params backup.Pe return r0, r1 } + +// newMockBackupService creates a new instance of mockBackupService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockBackupService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockBackupService { + mock := &mockBackupService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/deps.go b/managed/services/server/deps.go index 9563fa27a2..3eef78b54a 100644 --- a/managed/services/server/deps.go +++ b/managed/services/server/deps.go @@ -24,17 +24,17 @@ import ( "github.com/percona/pmm/version" ) -//go:generate ../../../bin/mockery -name=grafanaClient -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=prometheusService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=alertmanagerService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=checksService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=vmAlertExternalRules -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=supervisordService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=telemetryService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=agentsStateUpdater -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=rulesService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=emailer -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=templatesService -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=grafanaClient --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=prometheusService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=alertmanagerService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=checksService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=vmAlertExternalRules --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=supervisordService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=telemetryService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=agentsStateUpdater --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=rulesService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=emailer --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=templatesService --case=snake --inpackage --testonly // healthChecker interface wraps all services that implements the IsReady method to report the // service health for the Readiness check. diff --git a/managed/services/server/mock_agents_state_updater_test.go b/managed/services/server/mock_agents_state_updater_test.go index 73b82fe412..f898983cf7 100644 --- a/managed/services/server/mock_agents_state_updater_test.go +++ b/managed/services/server/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -26,3 +26,18 @@ func (_m *mockAgentsStateUpdater) UpdateAgentsState(ctx context.Context) error { return r0 } + +// newMockAgentsStateUpdater creates a new instance of mockAgentsStateUpdater. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAgentsStateUpdater(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAgentsStateUpdater { + mock := &mockAgentsStateUpdater{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_alertmanager_service_test.go b/managed/services/server/mock_alertmanager_service_test.go index a8a63ba398..dccb8a57ac 100644 --- a/managed/services/server/mock_alertmanager_service_test.go +++ b/managed/services/server/mock_alertmanager_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -31,3 +31,18 @@ func (_m *mockAlertmanagerService) IsReady(ctx context.Context) error { func (_m *mockAlertmanagerService) RequestConfigurationUpdate() { _m.Called() } + +// newMockAlertmanagerService creates a new instance of mockAlertmanagerService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockAlertmanagerService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockAlertmanagerService { + mock := &mockAlertmanagerService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_checks_service_test.go b/managed/services/server/mock_checks_service_test.go index 8a564c7937..495e30987d 100644 --- a/managed/services/server/mock_checks_service_test.go +++ b/managed/services/server/mock_checks_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -42,3 +42,18 @@ func (_m *mockChecksService) StartChecks(checkNames []string) error { func (_m *mockChecksService) UpdateIntervals(rare time.Duration, standard time.Duration, frequent time.Duration) { _m.Called(rare, standard, frequent) } + +// newMockChecksService creates a new instance of mockChecksService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockChecksService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockChecksService { + mock := &mockChecksService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_emailer_test.go b/managed/services/server/mock_emailer_test.go index bf1475efd3..fd81326cba 100644 --- a/managed/services/server/mock_emailer_test.go +++ b/managed/services/server/mock_emailer_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -28,3 +28,18 @@ func (_m *mockEmailer) Send(ctx context.Context, settings *models.EmailAlertingS return r0 } + +// newMockEmailer creates a new instance of mockEmailer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockEmailer(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockEmailer { + mock := &mockEmailer{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_grafana_client_test.go b/managed/services/server/mock_grafana_client_test.go index 726d0ecf79..2c817be76d 100644 --- a/managed/services/server/mock_grafana_client_test.go +++ b/managed/services/server/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -26,3 +26,18 @@ func (_m *mockGrafanaClient) IsReady(ctx context.Context) error { return r0 } + +// newMockGrafanaClient creates a new instance of mockGrafanaClient. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockGrafanaClient(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockGrafanaClient { + mock := &mockGrafanaClient{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_prometheus_service_test.go b/managed/services/server/mock_prometheus_service_test.go index 99e42ce4c6..e4282703be 100644 --- a/managed/services/server/mock_prometheus_service_test.go +++ b/managed/services/server/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -31,3 +31,18 @@ func (_m *mockPrometheusService) IsReady(ctx context.Context) error { func (_m *mockPrometheusService) RequestConfigurationUpdate() { _m.Called() } + +// newMockPrometheusService creates a new instance of mockPrometheusService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockPrometheusService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockPrometheusService { + mock := &mockPrometheusService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_rules_service_test.go b/managed/services/server/mock_rules_service_test.go index 81c9348dd8..f7774e2a64 100644 --- a/managed/services/server/mock_rules_service_test.go +++ b/managed/services/server/mock_rules_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -27,3 +27,18 @@ func (_m *mockRulesService) RemoveVMAlertRulesFiles() error { func (_m *mockRulesService) WriteVMAlertRulesFiles() { _m.Called() } + +// newMockRulesService creates a new instance of mockRulesService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockRulesService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockRulesService { + mock := &mockRulesService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_supervisord_service_test.go b/managed/services/server/mock_supervisord_service_test.go index a8a4e25d98..8263ddf2a6 100644 --- a/managed/services/server/mock_supervisord_service_test.go +++ b/managed/services/server/mock_supervisord_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -52,6 +52,10 @@ func (_m *mockSupervisordService) LastCheckUpdatesResult(ctx context.Context) (* ret := _m.Called(ctx) var r0 *version.UpdateCheckResult + var r1 time.Time + if rf, ok := ret.Get(0).(func(context.Context) (*version.UpdateCheckResult, time.Time)); ok { + return rf(ctx) + } if rf, ok := ret.Get(0).(func(context.Context) *version.UpdateCheckResult); ok { r0 = rf(ctx) } else { @@ -60,7 +64,6 @@ func (_m *mockSupervisordService) LastCheckUpdatesResult(ctx context.Context) (* } } - var r1 time.Time if rf, ok := ret.Get(1).(func(context.Context) time.Time); ok { r1 = rf(ctx) } else { @@ -75,13 +78,16 @@ func (_m *mockSupervisordService) StartUpdate() (uint32, error) { ret := _m.Called() var r0 uint32 + var r1 error + if rf, ok := ret.Get(0).(func() (uint32, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() uint32); ok { r0 = rf() } else { r0 = ret.Get(0).(uint32) } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -110,6 +116,11 @@ func (_m *mockSupervisordService) UpdateLog(offset uint32) ([]string, uint32, er ret := _m.Called(offset) var r0 []string + var r1 uint32 + var r2 error + if rf, ok := ret.Get(0).(func(uint32) ([]string, uint32, error)); ok { + return rf(offset) + } if rf, ok := ret.Get(0).(func(uint32) []string); ok { r0 = rf(offset) } else { @@ -118,14 +129,12 @@ func (_m *mockSupervisordService) UpdateLog(offset uint32) ([]string, uint32, er } } - var r1 uint32 if rf, ok := ret.Get(1).(func(uint32) uint32); ok { r1 = rf(offset) } else { r1 = ret.Get(1).(uint32) } - var r2 error if rf, ok := ret.Get(2).(func(uint32) error); ok { r2 = rf(offset) } else { @@ -148,3 +157,18 @@ func (_m *mockSupervisordService) UpdateRunning() bool { return r0 } + +// newMockSupervisordService creates a new instance of mockSupervisordService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockSupervisordService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockSupervisordService { + mock := &mockSupervisordService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_telemetry_service_test.go b/managed/services/server/mock_telemetry_service_test.go index f1f2ea6095..d68973dd3f 100644 --- a/managed/services/server/mock_telemetry_service_test.go +++ b/managed/services/server/mock_telemetry_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -42,3 +42,18 @@ func (_m *mockTelemetryService) GetSummaries() []string { return r0 } + +// newMockTelemetryService creates a new instance of mockTelemetryService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockTelemetryService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockTelemetryService { + mock := &mockTelemetryService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_templates_service_test.go b/managed/services/server/mock_templates_service_test.go index 88a69361d2..ae6465fa8a 100644 --- a/managed/services/server/mock_templates_service_test.go +++ b/managed/services/server/mock_templates_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -17,3 +17,18 @@ type mockTemplatesService struct { func (_m *mockTemplatesService) CollectTemplates(ctx context.Context) { _m.Called(ctx) } + +// newMockTemplatesService creates a new instance of mockTemplatesService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockTemplatesService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockTemplatesService { + mock := &mockTemplatesService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/server/mock_vm_alert_external_rules_test.go b/managed/services/server/mock_vm_alert_external_rules_test.go index 0d9bd80ed8..3c08560357 100644 --- a/managed/services/server/mock_vm_alert_external_rules_test.go +++ b/managed/services/server/mock_vm_alert_external_rules_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package server @@ -18,13 +18,16 @@ func (_m *mockVmAlertExternalRules) ReadRules() (string, error) { ret := _m.Called() var r0 string + var r1 error + if rf, ok := ret.Get(0).(func() (string, error)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() string); ok { r0 = rf() } else { r0 = ret.Get(0).(string) } - var r1 error if rf, ok := ret.Get(1).(func() error); ok { r1 = rf() } else { @@ -75,3 +78,18 @@ func (_m *mockVmAlertExternalRules) WriteRules(rules string) error { return r0 } + +// newMockVmAlertExternalRules creates a new instance of mockVmAlertExternalRules. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockVmAlertExternalRules(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockVmAlertExternalRules { + mock := &mockVmAlertExternalRules{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/telemetry/deps.go b/managed/services/telemetry/deps.go index 057a507200..148bd529a7 100644 --- a/managed/services/telemetry/deps.go +++ b/managed/services/telemetry/deps.go @@ -24,10 +24,10 @@ import ( "github.com/percona/pmm/api/serverpb" ) -//go:generate ../../../bin/mockery -name=distributionUtilService -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=sender -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=DataSourceLocator -case=snake -inpkg -testonly -//go:generate ../../../bin/mockery -name=DataSource -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=distributionUtilService --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=sender --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=DataSourceLocator --case=snake --inpackage --testonly +//go:generate ../../../bin/mockery --name=DataSource --case=snake --inpackage --testonly // distributionUtilService service to get info about OS on which pmm server is running type distributionUtilService interface { diff --git a/managed/services/telemetry/mock_data_source_locator_test.go b/managed/services/telemetry/mock_data_source_locator_test.go index a81dd2bd32..93ec35e84b 100644 --- a/managed/services/telemetry/mock_data_source_locator_test.go +++ b/managed/services/telemetry/mock_data_source_locator_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package telemetry @@ -14,6 +14,10 @@ func (_m *MockDataSourceLocator) LocateTelemetryDataSource(name string) (DataSou ret := _m.Called(name) var r0 DataSource + var r1 error + if rf, ok := ret.Get(0).(func(string) (DataSource, error)); ok { + return rf(name) + } if rf, ok := ret.Get(0).(func(string) DataSource); ok { r0 = rf(name) } else { @@ -22,7 +26,6 @@ func (_m *MockDataSourceLocator) LocateTelemetryDataSource(name string) (DataSou } } - var r1 error if rf, ok := ret.Get(1).(func(string) error); ok { r1 = rf(name) } else { @@ -31,3 +34,18 @@ func (_m *MockDataSourceLocator) LocateTelemetryDataSource(name string) (DataSou return r0, r1 } + +// NewMockDataSourceLocator creates a new instance of MockDataSourceLocator. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockDataSourceLocator(t interface { + mock.TestingT + Cleanup(func()) +}, +) *MockDataSourceLocator { + mock := &MockDataSourceLocator{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/telemetry/mock_data_source_test.go b/managed/services/telemetry/mock_data_source_test.go index b3ca7ee94f..e31e6a6cd2 100644 --- a/managed/services/telemetry/mock_data_source_test.go +++ b/managed/services/telemetry/mock_data_source_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package telemetry @@ -47,6 +47,10 @@ func (_m *MockDataSource) FetchMetrics(ctx context.Context, config Config) ([]*p ret := _m.Called(ctx, config) var r0 []*pmmv1.ServerMetric_Metric + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, Config) ([]*pmmv1.ServerMetric_Metric, error)); ok { + return rf(ctx, config) + } if rf, ok := ret.Get(0).(func(context.Context, Config) []*pmmv1.ServerMetric_Metric); ok { r0 = rf(ctx, config) } else { @@ -55,7 +59,6 @@ func (_m *MockDataSource) FetchMetrics(ctx context.Context, config Config) ([]*p } } - var r1 error if rf, ok := ret.Get(1).(func(context.Context, Config) error); ok { r1 = rf(ctx, config) } else { @@ -78,3 +81,18 @@ func (_m *MockDataSource) Init(ctx context.Context) error { return r0 } + +// NewMockDataSource creates a new instance of MockDataSource. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockDataSource(t interface { + mock.TestingT + Cleanup(func()) +}, +) *MockDataSource { + mock := &MockDataSource{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/telemetry/mock_distribution_util_service_test.go b/managed/services/telemetry/mock_distribution_util_service_test.go index 8246512c39..6791db614d 100644 --- a/managed/services/telemetry/mock_distribution_util_service_test.go +++ b/managed/services/telemetry/mock_distribution_util_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package telemetry @@ -19,20 +19,23 @@ func (_m *mockDistributionUtilService) getDistributionMethodAndOS() (serverpb.Di ret := _m.Called() var r0 serverpb.DistributionMethod + var r1 pmmv1.DistributionMethod + var r2 string + if rf, ok := ret.Get(0).(func() (serverpb.DistributionMethod, pmmv1.DistributionMethod, string)); ok { + return rf() + } if rf, ok := ret.Get(0).(func() serverpb.DistributionMethod); ok { r0 = rf() } else { r0 = ret.Get(0).(serverpb.DistributionMethod) } - var r1 pmmv1.DistributionMethod if rf, ok := ret.Get(1).(func() pmmv1.DistributionMethod); ok { r1 = rf() } else { r1 = ret.Get(1).(pmmv1.DistributionMethod) } - var r2 string if rf, ok := ret.Get(2).(func() string); ok { r2 = rf() } else { @@ -41,3 +44,18 @@ func (_m *mockDistributionUtilService) getDistributionMethodAndOS() (serverpb.Di return r0, r1, r2 } + +// newMockDistributionUtilService creates a new instance of mockDistributionUtilService. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockDistributionUtilService(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockDistributionUtilService { + mock := &mockDistributionUtilService{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/telemetry/mock_sender_test.go b/managed/services/telemetry/mock_sender_test.go index 7e32b58cee..fe335c60cf 100644 --- a/managed/services/telemetry/mock_sender_test.go +++ b/managed/services/telemetry/mock_sender_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package telemetry @@ -27,3 +27,18 @@ func (_m *mockSender) SendTelemetry(ctx context.Context, report *reporterv1.Repo return r0 } + +// newMockSender creates a new instance of mockSender. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func newMockSender(t interface { + mock.TestingT + Cleanup(func()) +}, +) *mockSender { + mock := &mockSender{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/versioncache/mock_versioner_test.go b/managed/services/versioncache/mock_versioner_test.go index 442c06f943..b580c766ed 100644 --- a/managed/services/versioncache/mock_versioner_test.go +++ b/managed/services/versioncache/mock_versioner_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v1.0.0. DO NOT EDIT. +// Code generated by mockery v2.30.16. DO NOT EDIT. package versioncache @@ -18,6 +18,10 @@ func (_m *MockVersioner) GetVersions(pmmAgentID string, softwares []agents.Softw ret := _m.Called(pmmAgentID, softwares) var r0 []agents.Version + var r1 error + if rf, ok := ret.Get(0).(func(string, []agents.Software) ([]agents.Version, error)); ok { + return rf(pmmAgentID, softwares) + } if rf, ok := ret.Get(0).(func(string, []agents.Software) []agents.Version); ok { r0 = rf(pmmAgentID, softwares) } else { @@ -26,7 +30,6 @@ func (_m *MockVersioner) GetVersions(pmmAgentID string, softwares []agents.Softw } } - var r1 error if rf, ok := ret.Get(1).(func(string, []agents.Software) error); ok { r1 = rf(pmmAgentID, softwares) } else { @@ -35,3 +38,18 @@ func (_m *MockVersioner) GetVersions(pmmAgentID string, softwares []agents.Softw return r0, r1 } + +// NewMockVersioner creates a new instance of MockVersioner. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewMockVersioner(t interface { + mock.TestingT + Cleanup(func()) +}, +) *MockVersioner { + mock := &MockVersioner{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/managed/services/versioncache/versioncache.go b/managed/services/versioncache/versioncache.go index 79c19409e9..aaa4d006b6 100644 --- a/managed/services/versioncache/versioncache.go +++ b/managed/services/versioncache/versioncache.go @@ -36,7 +36,7 @@ var ( minCheckInterval = 5 * time.Second ) -//go:generate ../../../bin/mockery -name=Versioner -case=snake -inpkg -testonly +//go:generate ../../../bin/mockery --name=Versioner --case=snake --inpackage --testonly // Versioner contains method for retrieving versions of different software. type Versioner interface { diff --git a/tools/go.mod b/tools/go.mod index f12b907249..97e48a1fd8 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -20,7 +20,7 @@ require ( github.com/quasilyte/go-consistent v0.0.0-20200404105227-766526bf1e96 github.com/reviewdog/reviewdog v0.14.1 github.com/vburenin/ifacemaker v1.2.1 - github.com/vektra/mockery v1.1.2 + github.com/vektra/mockery/v2 v2.30.16 golang.org/x/perf v0.0.0-20211012211434-03971e389cd3 golang.org/x/tools v0.10.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 @@ -47,6 +47,7 @@ require ( github.com/bufbuild/connect-go v1.8.0 // indirect github.com/bufbuild/connect-opentelemetry-go v0.3.0 // indirect github.com/bufbuild/protocompile v0.5.1 // indirect + github.com/chigopher/pathlib v0.15.0 // indirect github.com/cilium/ebpf v0.7.0 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/cosiner/argv v0.1.0 // indirect @@ -61,7 +62,7 @@ require ( github.com/docker/go-units v0.5.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-chi/chi/v5 v5.0.8 // indirect github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -117,6 +118,7 @@ require ( github.com/jackc/pgx v3.6.2+incompatible // indirect github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 // indirect github.com/jessevdk/go-flags v1.5.0 // indirect + github.com/jinzhu/copier v0.3.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/kisielk/gotool v1.0.0 // indirect github.com/klauspost/compress v1.16.6 // indirect @@ -125,10 +127,10 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.6 // indirect github.com/lyft/protoc-gen-star/v2 v2.0.3 // indirect - github.com/magiconair/properties v1.8.6 // indirect + github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-shellwords v1.0.12 // indirect github.com/mattn/go-sqlite3 v1.14.5 // indirect @@ -142,8 +144,7 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc3 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pkg/profile v1.7.0 // indirect @@ -153,16 +154,17 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/rs/cors v1.9.0 // indirect + github.com/rs/zerolog v1.29.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/afero v1.9.2 // indirect + github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.12.0 // indirect - github.com/subosito/gotenv v1.4.0 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/subosito/gotenv v1.4.2 // indirect github.com/tetratelabs/wazero v1.2.1 // indirect github.com/toqueteos/webbrowser v1.2.0 // indirect github.com/vbatts/tar-split v0.11.3 // indirect @@ -189,7 +191,7 @@ require ( golang.org/x/sys v0.9.0 // indirect golang.org/x/term v0.9.0 // indirect golang.org/x/text v0.10.0 // indirect - golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + golang.org/x/time v0.1.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.114.0 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -198,7 +200,7 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/grpc v1.55.0 // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect - gopkg.in/ini.v1 v1.66.6 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tools/go.sum b/tools/go.sum index b85127f518..bc2de9e375 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -113,6 +113,8 @@ github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+ github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/chigopher/pathlib v0.15.0 h1:1pg96WL3iC1/YyWV4UJSl3E0GBf4B+h5amBtsbAAieY= +github.com/chigopher/pathlib v0.15.0/go.mod h1:3+YPPV21mU9vyw8Mjp+F33CyCfE6iOzinpiqBcccv7I= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -131,6 +133,7 @@ github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosiner/argv v0.1.0 h1:BVDiEL32lwHukgJKP87btEPenzrrHUjajs/8yzaqcXg= github.com/cosiner/argv v0.1.0/go.mod h1:EusR6TucWKX+zFgtdUsKT2Cvg45K5rtpCcWz4hK06d8= @@ -182,8 +185,8 @@ github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= @@ -280,6 +283,7 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= @@ -467,6 +471,8 @@ github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0 github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= +github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -511,8 +517,8 @@ github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lyft/protoc-gen-star/v2 v2.0.3 h1:/3+/2sWyXeMLzKd1bX+ixWKgEMsULrIivpDsuaF441o= github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -521,11 +527,14 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -574,10 +583,8 @@ github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYr github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw= -github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= +github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= +github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -622,6 +629,9 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w= +github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -644,8 +654,8 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= +github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= @@ -662,8 +672,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= -github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -676,13 +686,12 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= -github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= github.com/tetratelabs/wazero v1.2.1 h1:J4X2hrGzJvt+wqltuvcSjHQ7ujQxA9gb6PeMs4qlUWs= github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= @@ -696,8 +705,8 @@ github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RV github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vburenin/ifacemaker v1.2.1 h1:3Vq8B/bfBgjWTkv+jDg4dVL1KHt3k1K4lO7XRxYA2sk= github.com/vburenin/ifacemaker v1.2.1/go.mod h1:5WqrzX2aD7/hi+okBjcaEQJMg4lDGrpuEX3B8L4Wgrs= -github.com/vektra/mockery v1.1.2 h1:uc0Yn67rJpjt8U/mAZimdCKn9AeA97BOkjpmtBSlfP4= -github.com/vektra/mockery v1.1.2/go.mod h1:VcfZjKaFOPO+MpN4ZvwPjs4c48lkq1o3Ym8yHZJu0jU= +github.com/vektra/mockery/v2 v2.30.16 h1:XbUaK84eY7Hl/y6JeT7hVaA59Jgo4owlNWWgfL/gCQU= +github.com/vektra/mockery/v2 v2.30.16/go.mod h1:9lREs4VEeQiUS3rizYQx1saxHu2JiIhThP0q9+fDegM= github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc h1:El7LEavRpa49dYFE9ezO8aQxQn5E7u7eQkFsaXsoQAY= github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc/go.mod h1:MmhrKtbECoUJTctfak+MnOFoJ9XQqYZ7chcwV9O7v3I= github.com/xanzy/go-gitlab v0.63.0 h1:a9fXpKWykUS6dowapFej/2Wjf4aOAEFC1q2ZIcz4IpI= @@ -940,7 +949,6 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211117180635-dee7805ff2e1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220517195934-5e4e11fc645e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -969,8 +977,8 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1012,7 +1020,6 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200323144430-8dcfad9e016e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200406213809-066fd1390ee0/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1161,8 +1168,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI= -gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/reform.v1 v1.5.1 h1:7vhDFW1n1xAPC6oDSvIvVvpRkaRpXlxgJ4QB4s3aDdo= gopkg.in/reform.v1 v1.5.1/go.mod h1:AIv0CbDRJ0ljQwptGeaIXfpDRo02uJwTq92aMFELEeU= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= diff --git a/tools/tools.go b/tools/tools.go index 2253150a33..bbe45acd65 100644 --- a/tools/tools.go +++ b/tools/tools.go @@ -34,7 +34,7 @@ import ( _ "github.com/quasilyte/go-consistent" _ "github.com/reviewdog/reviewdog/cmd/reviewdog" _ "github.com/vburenin/ifacemaker" - _ "github.com/vektra/mockery/cmd/mockery" + _ "github.com/vektra/mockery/v2" _ "golang.org/x/perf/cmd/benchstat" _ "golang.org/x/tools/cmd/goimports" _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" @@ -53,7 +53,7 @@ import ( //go:generate go build -o ../bin/go-sumtype github.com/BurntSushi/go-sumtype //go:generate go build -o ../bin/gofumpt mvdan.cc/gofumpt //go:generate go build -o ../bin/goimports golang.org/x/tools/cmd/goimports -//go:generate go build -o ../bin/mockery github.com/vektra/mockery/cmd/mockery +//go:generate go build -o ../bin/mockery github.com/vektra/mockery/v2 //go:generate go build -o ../bin/protoc-gen-go google.golang.org/protobuf/cmd/protoc-gen-go //go:generate go build -o ../bin/protoc-gen-go-grpc google.golang.org/grpc/cmd/protoc-gen-go-grpc //go:generate go build -o ../bin/protoc-gen-grpc-gateway github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway From d0d7fcbb211dfc2fbd8c6f8a677ef748f08a73cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 12:32:17 +0000 Subject: [PATCH 084/123] Bump eslint-plugin-playwright from 0.14.0 to 0.15.2 in /cli-tests (#2322) Bumps [eslint-plugin-playwright](https://github.com/playwright-community/eslint-plugin-playwright) from 0.14.0 to 0.15.2. - [Release notes](https://github.com/playwright-community/eslint-plugin-playwright/releases) - [Changelog](https://github.com/playwright-community/eslint-plugin-playwright/blob/main/CHANGELOG.md) - [Commits](https://github.com/playwright-community/eslint-plugin-playwright/compare/v0.14.0...v0.15.2) --- updated-dependencies: - dependency-name: eslint-plugin-playwright dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Artem Gavrilov --- cli-tests/package-lock.json | 10 +++++----- cli-tests/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 6145ecf04e..e9767f5d19 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -26,7 +26,7 @@ "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-playwright": "^0.14.0" + "eslint-plugin-playwright": "^0.15.2" } }, "node_modules/@eslint-community/eslint-utils": { @@ -1037,13 +1037,13 @@ } }, "node_modules/eslint-plugin-playwright": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.14.0.tgz", - "integrity": "sha512-LEin7QeBdnyTINJ4ZTpn5EzJUIqEkLr8o041Ed69wStkW7KvB4UcL3eTJBO3Jgh3PH1FlExdVXnMao1mKrUX1g==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-0.15.2.tgz", + "integrity": "sha512-Q2jQ7ORjZscvwxR6MEgITZy23vxlnYlJlMR7aICFczWVMijTCZPGvvMoZaLWkAzx5J6fciulwbg+JJeRjMkTig==", "dev": true, "peerDependencies": { "eslint": ">=7", - "eslint-plugin-jest": ">=24" + "eslint-plugin-jest": ">=25" }, "peerDependenciesMeta": { "eslint-plugin-jest": { diff --git a/cli-tests/package.json b/cli-tests/package.json index 239847fa98..961c0617e2 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -30,6 +30,6 @@ "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", - "eslint-plugin-playwright": "^0.14.0" + "eslint-plugin-playwright": "^0.15.2" } } From 4224035e0e1d0094dce4508b5ebc675d233bfabb Mon Sep 17 00:00:00 2001 From: Talha Bin Rizwan Date: Wed, 28 Jun 2023 22:03:37 +0500 Subject: [PATCH 085/123] PMM-7 Fix user for OL9 OVF (#2319) (#2325) --- build/ansible/roles/cloud-node/tasks/main.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/build/ansible/roles/cloud-node/tasks/main.yml b/build/ansible/roles/cloud-node/tasks/main.yml index fb3035bd6e..edcbe3104d 100644 --- a/build/ansible/roles/cloud-node/tasks/main.yml +++ b/build/ansible/roles/cloud-node/tasks/main.yml @@ -129,8 +129,23 @@ regexp: "name: centos" replace: "name: admin" -- name: change cloud user EL9 | Change cloud user - when: create_admin == "true" and (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' +- name: change cloud user for OVF EL9 | Change cloud user + when: + - create_admin == "true" + - ansible_virtualization_type == "virtualbox" + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' + replace: + dest: /etc/cloud/cloud.cfg + regexp: "name: cloud-user" + replace: "name: admin" + +- name: change cloud user for AMI EL9 | Change cloud user + when: + - create_admin == "true" + - ansible_virtualization_type != "virtualbox" + - ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux' + - ansible_distribution_major_version == '9' replace: dest: /etc/cloud/cloud.cfg.d/00_ol-default-user.cfg regexp: "name: ec2-user" From 2f06b823ea4e6ea775566eaba9815e1f2793174c Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Thu, 29 Jun 2023 12:38:40 +0200 Subject: [PATCH 086/123] PMM-7 Add backups dev env bootstrap (#2298) * PMM-7 Add backups dev env bootstrap * PMM-7 Format * PMM-7 Fix container name * PMM-7 Fix typos * PMM-7 Fixes * Update dev/mongo-rs-backups/README.md Co-authored-by: Michael Okoko <10512379+idoqo@users.noreply.github.com> --------- Co-authored-by: Michael Okoko <10512379+idoqo@users.noreply.github.com> --- .github/workflows/managed.yml | 16 +++---- Makefile | 4 +- dev/mongo-rs-backups/Dockerfile | 10 ++++ dev/mongo-rs-backups/Makefile | 62 +++++++++++++++++++++++++ dev/mongo-rs-backups/README.md | 25 ++++++++++ dev/mongo-rs-backups/docker-compose.yml | 35 ++++++++++++++ dev/mongo-rs-backups/permissions.js | 37 +++++++++++++++ dev/mongo-rs-backups/rs-bootstrap.js | 34 ++++++++++++++ docker-compose.yml | 17 +++---- managed/CONTRIBUTING.md | 6 +-- qan-api2/.github/CONTRIBUTING.md | 2 +- qan-api2/Makefile | 2 +- qan-api2/docker-compose.yaml | 2 +- 13 files changed, 225 insertions(+), 27 deletions(-) create mode 100644 dev/mongo-rs-backups/Dockerfile create mode 100644 dev/mongo-rs-backups/Makefile create mode 100644 dev/mongo-rs-backups/README.md create mode 100644 dev/mongo-rs-backups/docker-compose.yml create mode 100644 dev/mongo-rs-backups/permissions.js create mode 100644 dev/mongo-rs-backups/rs-bootstrap.js diff --git a/.github/workflows/managed.yml b/.github/workflows/managed.yml index ac69ccc5cd..6f2e87e0af 100644 --- a/.github/workflows/managed.yml +++ b/.github/workflows/managed.yml @@ -68,21 +68,21 @@ jobs: - name: Restore Go build cache if: ${{ fromJSON(env.DEVCONTAINER_CACHE_ENABLED) }} continue-on-error: true - run: docker cp ~/.cache/go-build pmm-managed-server:/root/.cache/go-build + run: docker cp ~/.cache/go-build pmm-server:/root/.cache/go-build - name: Restore Go modules cache if: ${{ fromJSON(env.DEVCONTAINER_CACHE_ENABLED) }} continue-on-error: true - run: docker cp ~/go/pkg/mod pmm-managed-server:/root/go/pkg/mod + run: docker cp ~/go/pkg/mod pmm-server:/root/go/pkg/mod - name: Update binaries - run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm pmm-managed-server make run-managed-ci run-agent run-vmproxy + run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm pmm-server make run-managed-ci run-agent run-vmproxy - name: Run tests - run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm/managed pmm-managed-server make test-cover + run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm/managed pmm-server make test-cover - name: Run PMM server update test - run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm/managed pmm-managed-server make test-update + run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm/managed pmm-server make test-update - name: Upload coverage results uses: codecov/codecov-action@v3 @@ -95,11 +95,11 @@ jobs: - name: Cache if: ${{ fromJSON(env.DEVCONTAINER_CACHE_ENABLED) }} run: | - docker exec pmm-managed-server go clean -testcache - docker exec --workdir=/root/go/src/github.com/percona/pmm/managed pmm-managed-server find . -type d -name fuzzdata -exec rm -r {} + + docker exec pmm-server go clean -testcache + docker exec --workdir=/root/go/src/github.com/percona/pmm/managed pmm-server find . -type d -name fuzzdata -exec rm -r {} + rm -fr ~/.cache/go-build mkdir -p ~/.cache - docker cp pmm-managed-server:/root/.cache/go-build ~/.cache/go-build + docker cp pmm-server:/root/.cache/go-build ~/.cache/go-build - name: Run debug commands on failure if: ${{ failure() }} diff --git a/Makefile b/Makefile index 097de77dea..858336e987 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ env-compose-up: env-update-image docker compose up --detach --renew-anon-volumes --remove-orphans env-devcontainer: - docker exec -it --workdir=/root/go/src/github.com/percona/pmm pmm-managed-server .devcontainer/setup.py + docker exec -it --workdir=/root/go/src/github.com/percona/pmm pmm-server .devcontainer/setup.py env-down: ## Stop devcontainer COMPOSE_PROFILES=$(PROFILES) \ @@ -37,7 +37,7 @@ TARGET ?= _bash env: ## Run `make TARGET` in devcontainer (`make env TARGET=help`); TARGET defaults to bash COMPOSE_PROFILES=$(PROFILES) \ - docker exec -it --workdir=/root/go/src/github.com/percona/pmm pmm-managed-server make $(TARGET) + docker exec -it --workdir=/root/go/src/github.com/percona/pmm pmm-server make $(TARGET) update-dbaas-catalog: ## Update the DBaaS catalog from the latest production branch (percona-platform). wget https://raw.githubusercontent.com/percona/dbaas-catalog/percona-platform/percona-dbaas-catalog.yaml -O managed/data/crds/olm/percona-dbaas-catalog.yaml diff --git a/dev/mongo-rs-backups/Dockerfile b/dev/mongo-rs-backups/Dockerfile new file mode 100644 index 0000000000..18981096ee --- /dev/null +++ b/dev/mongo-rs-backups/Dockerfile @@ -0,0 +1,10 @@ +FROM percona/percona-server-mongodb:4.2 + +USER root + +RUN yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm && \ + percona-release enable pbm release && \ + percona-release enable pmm2-client release + +RUN yum install -y percona-backup-mongodb pmm2-client + diff --git a/dev/mongo-rs-backups/Makefile b/dev/mongo-rs-backups/Makefile new file mode 100644 index 0000000000..ecb0ea36de --- /dev/null +++ b/dev/mongo-rs-backups/Makefile @@ -0,0 +1,62 @@ +PMM_SERVER_HOST?=pmm-server +PMM_NETWORK=?pmm_default + +.PHONY: default, bootstrap, build, up, setup-pbm-permissions, run-pbm-agents, setup-pmm-agents, run-pbm-agents, kill-pbm-agents, kill-pmm-agents, add-mongos, down +default: help + +help: ## Display this help message + @echo "Please use \`make \` where is one of:" + @grep '^[a-zA-Z]' $(MAKEFILE_LIST) | \ + awk -F ':.*?## ' 'NF==2 {printf " %-26s%s\n", $$1, $$2}' + +bootstrap: ## Full environment setup + make build + make up + make setup-pbm-permissions + make run-pbm-agents + make setup-pmm-agents + make run-pmm-agents + make add-mongos + +build: ## Docker image build + docker build . --tag mongo-backups + +up: ## Start required containers + docker compose up -d --wait + docker compose exec -T mongo1 mongo --nodb < rs-bootstrap.js + +setup-pbm-permissions: ## Setup PBM required permissions + docker compose exec -T mongo1 mongo --host=mongodb://localhost:27017/?replicaSet=rs0 < permissions.js + +run-pbm-agents: kill-pbm-agents ## Run PBM agents + docker compose exec -d mongo1 pbm-agent --mongodb-uri=mongodb://pbmuser:secretpwd@localhost:27017 + docker compose exec -d mongo2 pbm-agent --mongodb-uri=mongodb://pbmuser:secretpwd@localhost:27017 + docker compose exec -d mongo3 pbm-agent --mongodb-uri=mongodb://pbmuser:secretpwd@localhost:27017 + +setup-pmm-agents: ## Setup PMM agents + docker compose exec mongo1 pmm-agent setup --server-insecure-tls --server-address=$(PMM_SERVER_HOST) --server-username=admin --server-password=admin --force --config-file=/root/pmm-config + docker compose exec mongo2 pmm-agent setup --server-insecure-tls --server-address=$(PMM_SERVER_HOST) --server-username=admin --server-password=admin --force --config-file=/root/pmm-config + docker compose exec mongo3 pmm-agent setup --server-insecure-tls --server-address=$(PMM_SERVER_HOST) --server-username=admin --server-password=admin --force --config-file=/root/pmm-config + +run-pmm-agents: kill-pmm-agents ## Run PMM agents + docker compose exec -d mongo1 pmm-agent --config-file=/root/pmm-config + docker compose exec -d mongo2 pmm-agent --config-file=/root/pmm-config + docker compose exec -d mongo3 pmm-agent --config-file=/root/pmm-config + +kill-pbm-agents: ## Kill all PBM agents + docker compose exec -d mongo1 killall -9 pbm-agent + docker compose exec -d mongo2 killall -9 pbm-agent + docker compose exec -d mongo3 killall -9 pbm-agent + +kill-pmm-agents: ## Kill all PMM agents + docker compose exec -d mongo1 killall -9 pmm-agent + docker compose exec -d mongo2 killall -9 pmm-agent + docker compose exec -d mongo3 killall -9 pmm-agent + +add-mongos: ## Register MongoDB instances on PMM server + docker compose exec mongo1 pmm-admin add mongodb --cluster=test-cluster --service-name=mongo1 --host=mongo1 --port=27017 --server-url=http://admin:admin@$(PMM_SERVER_HOST)/ + docker compose exec mongo2 pmm-admin add mongodb --cluster=test-cluster --service-name=mongo2 --host=mongo2 --port=27017 --server-url=http://admin:admin@$(PMM_SERVER_HOST)/ + docker compose exec mongo3 pmm-admin add mongodb --cluster=test-cluster --service-name=mongo3 --host=mongo3 --port=27017 --server-url=http://admin:admin@$(PMM_SERVER_HOST)/ + +down: ## Shutdown environment + docker compose down diff --git a/dev/mongo-rs-backups/README.md b/dev/mongo-rs-backups/README.md new file mode 100644 index 0000000000..499bde2851 --- /dev/null +++ b/dev/mongo-rs-backups/README.md @@ -0,0 +1,25 @@ +## MongoDB replica set with PBM and PMM Agent + +This directory contains docker compose and scripts for Backups Dev environment bootstrap. This environment is based +on MongoDB replica set running in docker, as a result, it only supports logical backups/restores. + +### Usage + +Note: If your already have running PMM Server that wasn't started from this repo (devcontainer), then you +need to specify its container name and network with env variables `PMM_SERVER_HOST` and `PMM_NETWORK`. +You can check network name with this +command `docker inspect -f '{{range $k, $v := .NetworkSettings.Networks}}{{printf "%s\n" $k}}{{end}}'`. +Replace `` with your pmm server container name. + +```shell + # export PMM_SERVER_HOST=pmm-server + # export PMM_NETWORK=pmm_default + + make bootstrap +``` + +This command will build custom Docker image with MongoDB, PBM and PMM agents inside. All tools will be preconfigured, +PMM agents will be +registered on PMM server as well as MongoDB instances. + +To shutdown env just invoke `make down` \ No newline at end of file diff --git a/dev/mongo-rs-backups/docker-compose.yml b/dev/mongo-rs-backups/docker-compose.yml new file mode 100644 index 0000000000..458674b664 --- /dev/null +++ b/dev/mongo-rs-backups/docker-compose.yml @@ -0,0 +1,35 @@ +networks: + pmm_default: + name: pmm_default + +services: + mongo1: + hostname: mongo1 + container_name: mongo1 + image: mongo-backups + networks: + - ${PMM_NETWORK:-pmm_default} + expose: + - 27017 + restart: always + entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0" ] + mongo2: + hostname: mongo2 + container_name: mongo2 + image: mongo-backups + networks: + - ${PMM_NETWORK:-pmm_default} + expose: + - 27017 + restart: always + entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0" ] + mongo3: + hostname: mongo3 + container_name: mongo3 + image: mongo-backups + networks: + - ${PMM_NETWORK:-pmm_default} + expose: + - 27017 + restart: always + entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs0" ] diff --git a/dev/mongo-rs-backups/permissions.js b/dev/mongo-rs-backups/permissions.js new file mode 100644 index 0000000000..ff495226b8 --- /dev/null +++ b/dev/mongo-rs-backups/permissions.js @@ -0,0 +1,37 @@ +db.getSiblingDB("admin").createRole({ + "role": "pbmAnyAction", + "privileges": [{ + "resource": { + "anyResource": true + }, + "actions": ["anyAction"] + }], + "roles": [] +}); + +db.getSiblingDB("admin").createUser({ + user: "pbmuser", + "pwd": "secretpwd", + "roles": [{ + "db": "admin", + "role": "readWrite", + "collection": "" + }, + { + "db": "admin", + "role": "backup" + }, + { + "db": "admin", + "role": "clusterMonitor" + }, + { + "db": "admin", + "role": "restore" + }, + { + "db": "admin", + "role": "pbmAnyAction" + } + ] +}); diff --git a/dev/mongo-rs-backups/rs-bootstrap.js b/dev/mongo-rs-backups/rs-bootstrap.js new file mode 100644 index 0000000000..fe764493fe --- /dev/null +++ b/dev/mongo-rs-backups/rs-bootstrap.js @@ -0,0 +1,34 @@ +var conn, attempt; +while (conn === undefined) { + try { + conn = new Mongo("localhost:27017"); + } catch (Error) { + attempt++; + } + + if (attempt >= 50) { + print("Max connection attempts exceeded."); + break; + } + sleep(100); +} + +DB = conn.getDB("admin"); +DB.runCommand({ + replSetInitiate: { + _id: "rs0", + members: [{ + _id: 0, + host: "mongo1:27017" + }, + { + _id: 1, + host: "mongo2:27017" + }, + { + _id: 2, + host: "mongo3:27017" + } + ] + } +}); diff --git a/docker-compose.yml b/docker-compose.yml index a4242c5108..d516be2235 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ --- # version: '3.7' // Deprecated: see https://docs.docker.com/compose/compose-file/04-version-and-name/ services: - pmm-managed-server: + pmm-server: profiles: - pmm image: ${PMM_CONTAINER:-perconalab/pmm-server:dev-container} @@ -10,8 +10,8 @@ services: # args: # PMM_SERVER_IMAGE: ${PMM_SERVER_IMAGE:-perconalab/pmm-server:dev-latest} # dockerfile: devcontainer.Dockerfile - container_name: pmm-managed-server - hostname: pmm-managed-server + container_name: pmm-server + hostname: pmm-server networks: - ${NETWORK:-default} environment: @@ -109,14 +109,14 @@ services: hostname: ${CH_HOSTNAME:-ch} ports: - ${CH_PORT:-9000}:9000 - pmm-managed-server-ch: + pmm-server-ch: profiles: - pmm-ch depends_on: - ch image: ${PMM_CONTAINER:-perconalab/pmm-server:dev-container} - container_name: pmm-managed-server - hostname: pmm-managed-server + container_name: pmm-server + hostname: pmm-server networks: - ${NETWORK:-default} environment: @@ -208,8 +208,3 @@ services: volumes: go-modules: root-cache: - -networks: - minikube: - external: true - name: minikube diff --git a/managed/CONTRIBUTING.md b/managed/CONTRIBUTING.md index 81a37aa86e..710d9dca10 100644 --- a/managed/CONTRIBUTING.md +++ b/managed/CONTRIBUTING.md @@ -24,7 +24,7 @@ Please use `make ` where is one of: ``` $ make env TARGET=help -docker exec -it --workdir=/root/go/src/github.com/percona/pmm-managed pmm-managed-server make help +docker exec -it --workdir=/root/go/src/github.com/percona/pmm-managed pmm-server make help Please use `make ` where is one of: gen Generate files. install Install pmm-managed binary. @@ -39,9 +39,9 @@ Alternatively, it is possible to run `make env` to get inside the devcontainer a ``` $ make env -docker exec -it --workdir=/root/go/src/github.com/percona/pmm-managed pmm-managed-server make _bash +docker exec -it --workdir=/root/go/src/github.com/percona/pmm-managed pmm-server make _bash /bin/bash -[root@pmm-managed-server pmm-managed]# make test +[root@pmm-server pmm-managed]# make test make[1]: Entering directory `/root/go/src/github.com/percona/pmm-managed' go test -timeout=30s -p 1 ./... ... diff --git a/qan-api2/.github/CONTRIBUTING.md b/qan-api2/.github/CONTRIBUTING.md index 779401e91a..ace5bd5a52 100644 --- a/qan-api2/.github/CONTRIBUTING.md +++ b/qan-api2/.github/CONTRIBUTING.md @@ -12,7 +12,7 @@ Run `make run` to start qan-api2 ## Run as part of pmm-server docker container Start PMM-server docker container as it mentioned in [pmm](https://github.com/percona/pmm) repository -Run `PMM_CONTAINER=pmm-managed-server make release deploy` to deploy local qan-api2 into pmm-server container +Run `PMM_CONTAINER=pmm-server make release deploy` to deploy local qan-api2 into pmm-server container where PMM_CONTAINER is a name of PMM-Server container. ## Testing diff --git a/qan-api2/Makefile b/qan-api2/Makefile index 58fdadc243..8190540f7e 100644 --- a/qan-api2/Makefile +++ b/qan-api2/Makefile @@ -12,7 +12,7 @@ PMM_RELEASE_TIMESTAMP ?= $(shell date '+%s') PMM_RELEASE_FULLCOMMIT ?= $(shell git rev-parse HEAD) PMM_RELEASE_BRANCH ?= $(shell git describe --always --contains --all) -PMM_CONTAINER ?= pmm-managed-server +PMM_CONTAINER ?= pmm-server release: ## Build qan-api2 release binary env CGO_ENABLED=0 go build -v -o $(PMM_RELEASE_PATH)/qan-api2 -ldflags " \ diff --git a/qan-api2/docker-compose.yaml b/qan-api2/docker-compose.yaml index 2157005fad..deb5eea0d2 100644 --- a/qan-api2/docker-compose.yaml +++ b/qan-api2/docker-compose.yaml @@ -3,7 +3,7 @@ version: "3" services: pmm-server: - container_name: pmm-managed-server + container_name: pmm-server image: perconalab/pmm-server:dev-latest ports: - 80:80 From a51b9a094b743c21de487d30ff39749976872f8e Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 29 Jun 2023 15:01:15 +0300 Subject: [PATCH 087/123] PMM-12266 fix parsing yum date format for EL9 (#2326) * PMM-12266 fix parsing yum date format for EL9 * PMM-12266 format code * PMM-12266 fix a redundant fn variable --- update/docker-compose.yml | 3 +- update/pkg/yum/info.go | 7 +- update/pkg/yum/info_test.go | 345 +++++++++++++++++++++++++++++++++++- update/pkg/yum/yum.go | 2 +- 4 files changed, 347 insertions(+), 10 deletions(-) diff --git a/update/docker-compose.yml b/update/docker-compose.yml index 30e80f28b8..5be6dd1cbf 100644 --- a/update/docker-compose.yml +++ b/update/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3' services: pmm-update-server: image: ${PMM_SERVER_IMAGE:-percona/pmm-server:2} @@ -7,7 +6,7 @@ services: environment: # for tests - PMM_SERVER_IMAGE=${PMM_SERVER_IMAGE:-percona/pmm-server:2} - - GO_VERSION=${GO_VERSION:-1.17.x} + - GO_VERSION=${GO_VERSION:-1.20.x} - PATH=/root/go/bin:$PATH - REVIEWDOG_GITHUB_API_TOKEN=${REVIEWDOG_GITHUB_API_TOKEN} volumes: diff --git a/update/pkg/yum/info.go b/update/pkg/yum/info.go index cfe2977478..f705d2922e 100644 --- a/update/pkg/yum/info.go +++ b/update/pkg/yum/info.go @@ -68,7 +68,12 @@ func parseInfo(lines []string, firstKey string) (map[string]string, error) { } func parseInfoTime(s string) (time.Time, error) { - return time.Parse("Mon Jan 2 15:04:05 2006", s) + layout := "Mon 2 Jan 2006 15:04:05 PM UTC" // layout for EL9, default + v, err := getRHELVersion() + if err == nil && v == "7" { + layout = "Mon Jan 2 15:04:05 2006" // change the layout for EL7 + } + return time.Parse(layout, s) } // fullVersion returns full (ugly) package version. diff --git a/update/pkg/yum/info_test.go b/update/pkg/yum/info_test.go index a402d15692..d8cc827c80 100644 --- a/update/pkg/yum/info_test.go +++ b/update/pkg/yum/info_test.go @@ -24,7 +24,11 @@ import ( "github.com/stretchr/testify/require" ) -func TestParseInfo(t *testing.T) { +func TestParseInfoEL7(t *testing.T) { + v, _ := getRHELVersion() + if v == "9" { + t.Skip("Skip running EL7 tests on EL9") + } t.Run("Installed", func(t *testing.T) { stdout := strings.Split(` Loading "fastestmirror" plugin @@ -147,7 +151,7 @@ func TestParseInfo(t *testing.T) { }) t.Run("Available", func(t *testing.T) { - // yum --verbose --showduplicates info available pmm-update, abbrivated + // yum --verbose --showduplicates info available pmm-update, abbreviated stdout := strings.Split(` Loading "fastestmirror" plugin Loading "ovl" plugin @@ -219,7 +223,7 @@ func TestParseInfo(t *testing.T) { }) t.Run("AvailableGA", func(t *testing.T) { - // yum --verbose --showduplicates info available pmm-update, abbrivated + // yum --verbose --showduplicates info available pmm-update, abbreviated stdout := strings.Split(` Available Packages Name : pmm-update @@ -338,12 +342,341 @@ func TestParseInfo(t *testing.T) { }) } +func TestParseInfoEL9(t *testing.T) { + v, _ := getRHELVersion() + if v == "7" { + t.Skip("Skip running EL9 tests on EL7") + } + t.Run("Installed EL9", func(t *testing.T) { + stdout := strings.Split(` + Starting "yum --verbose info installed pmm-managed" ... + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + Installed Packages + Name : pmm-managed + Version : 2.39.0 + Release : 20.2306271313.b6d58b6.el9 + Architecture : x86_64 + Size : 125 M + Source : pmm-managed-2.39.0-20.2306271313.b6d58b6.el9.src.rpm + Repository : @System + From repo : local + Packager : None + Buildtime : Tue 27 Jun 2023 01:13:03 PM UTC + Install time : Tue 27 Jun 2023 01:31:05 PM UTC + Installed by : System + Summary : Percona Monitoring and Management management daemon + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : pmm-managed manages configuration of PMM server components (VictoriaMetrics, + : Grafana, etc.) and exposes API for that. Those APIs are used by pmm-admin tool. + : See PMM docs for more information. + `, "\n") + expected := map[string]string{ + "Name": "pmm-managed", + "Version": "2.39.0", + "Release": "20.2306271313.b6d58b6.el9", + "Architecture": "x86_64", + "Size": "125 M", + "Source": "pmm-managed-2.39.0-20.2306271313.b6d58b6.el9.src.rpm", + "Repository": "@System", + "From repo": "local", + "Packager": "None", + "Buildtime": "Tue 27 Jun 2023 01:13:03 PM UTC", + "Install time": "Tue 27 Jun 2023 01:31:05 PM UTC", + "Installed by": "System ", + "Summary": "Percona Monitoring and Management management daemon", + "URL": "https://github.com/percona/pmm", + "License": "AGPLv3", + "Description": "pmm-managed manages configuration of PMM server components (VictoriaMetrics, " + + "Grafana, etc.) and exposes API for that. Those APIs are used by pmm-admin tool. " + + "See PMM docs for more information.", + } + actual, err := parseInfo(stdout, "Name") + require.NoError(t, err) + assert.Equal(t, expected, actual) + buildtime, err := parseInfoTime(actual["Buildtime"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, 6, 27, 13, 13, 3, 0, time.UTC), buildtime) + assert.Equal(t, "2.39.0-20.2306271313.b6d58b6.el9", fullVersion(actual)) + assert.Equal(t, "2.39.0", niceVersion(actual)) + }) + + t.Run("Updates EL9", func(t *testing.T) { + // yum --verbose info updates pmm-update + stdout := strings.Split(` + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + repo: using cache for: ol9_developer_EPEL + ol9_developer_EPEL: using metadata from Wed 28 Jun 2023 02:28:50 PM UTC. + repo: using cache for: ol9_baseos_latest + ol9_baseos_latest: using metadata from Fri 23 Jun 2023 04:59:24 AM UTC. + repo: using cache for: ol9_appstream + ol9_appstream: using metadata from Fri 23 Jun 2023 05:03:17 AM UTC. + repo: using cache for: percona-release-x86_64 + percona-release-x86_64: using metadata from Mon 26 Jun 2023 01:02:27 PM UTC. + repo: using cache for: percona-release-noarch + percona-release-noarch: using metadata from Wed 06 Jul 2022 08:25:44 PM UTC. + repo: using cache for: percona-testing-x86_64 + percona-testing-x86_64: using metadata from Wed 28 Jun 2023 05:27:06 PM UTC. + repo: using cache for: percona-testing-noarch + percona-testing-noarch: using metadata from Wed 06 Jul 2022 08:20:55 PM UTC. + repo: using cache for: percona-ppg-11 + percona-ppg-11: using metadata from Mon 22 May 2023 08:40:15 AM UTC. + repo: using cache for: percona-ppg-14 + percona-ppg-14: using metadata from Wed 28 Jun 2023 02:57:51 PM UTC. + repo: using cache for: prel-release-noarch + prel-release-noarch: using metadata from Thu 16 Sep 2021 06:35:55 AM UTC. + repo: using cache for: pmm2-server + pmm2-server: using metadata from Wed 28 Jun 2023 02:46:09 PM UTC. + Last metadata expiration check: 1:42:51 ago on Wed 28 Jun 2023 07:06:43 PM UTC. + Available Upgrades + Name : pmm-update + Version : 2.39.0 + Release : 67.2306281336.d0d7fcb.el9 + Architecture : noarch + Size : 886 k + Source : pmm-update-2.39.0-67.2306281336.d0d7fcb.el9.src.rpm + Repository : pmm2-server + Packager : None + Buildtime : Wed 28 Jun 2023 01:36:03 PM UTC + Summary : Tool for updating packages and OS configuration for PMM Server + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : Tool for updating packages and OS configuration for PMM Server + `, "\n") + expected := map[string]string{ + "Name": "pmm-update", + "Architecture": "noarch", + "Version": "2.39.0", + "Release": "67.2306281336.d0d7fcb.el9", + "Size": "886 k", + "Source": "pmm-update-2.39.0-67.2306281336.d0d7fcb.el9.src.rpm", + "Repository": "pmm2-server", + "Packager": "None", + "Buildtime": "Wed 28 Jun 2023 01:36:03 PM UTC", + "Summary": "Tool for updating packages and OS configuration for PMM Server", + "URL": "https://github.com/percona/pmm", + "License": "AGPLv3", + "Description": "Tool for updating packages and OS configuration for PMM Server", + } + actual, err := parseInfo(stdout, "Name") + require.NoError(t, err) + assert.Equal(t, expected, actual) + buildtime, err := parseInfoTime(actual["Buildtime"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, 6, 28, 13, 36, 3, 0, time.UTC), buildtime) + assert.Equal(t, "2.39.0-67.2306281336.d0d7fcb.el9", fullVersion(actual)) + assert.Equal(t, "2.39.0", niceVersion(actual)) + }) + + t.Run("AvailableGA EL9", func(t *testing.T) { + // yum --verbose --showduplicates info available pmm-update (just two versions) + stdout := strings.Split(` + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + repo: using cache for: ol9_developer_EPEL + ol9_developer_EPEL: using metadata from Wed 28 Jun 2023 02:28:50 PM UTC. + repo: using cache for: ol9_baseos_latest + ol9_baseos_latest: using metadata from Fri 23 Jun 2023 04:59:24 AM UTC. + repo: using cache for: ol9_appstream + ol9_appstream: using metadata from Fri 23 Jun 2023 05:03:17 AM UTC. + repo: using cache for: percona-release-x86_64 + percona-release-x86_64: using metadata from Mon 26 Jun 2023 01:02:27 PM UTC. + repo: using cache for: percona-release-noarch + percona-release-noarch: using metadata from Wed 06 Jul 2022 08:25:44 PM UTC. + repo: using cache for: percona-testing-x86_64 + percona-testing-x86_64: using metadata from Wed 28 Jun 2023 05:27:06 PM UTC. + repo: using cache for: percona-testing-noarch + percona-testing-noarch: using metadata from Wed 06 Jul 2022 08:20:55 PM UTC. + repo: using cache for: percona-ppg-11 + percona-ppg-11: using metadata from Mon 22 May 2023 08:40:15 AM UTC. + repo: using cache for: percona-ppg-14 + percona-ppg-14: using metadata from Wed 28 Jun 2023 02:57:51 PM UTC. + repo: using cache for: prel-release-noarch + prel-release-noarch: using metadata from Thu 16 Sep 2021 06:35:55 AM UTC. + repo: using cache for: pmm2-server + pmm2-server: using metadata from Wed 28 Jun 2023 02:46:09 PM UTC. + Last metadata expiration check: 1:18:00 ago on Wed 28 Jun 2023 07:06:43 PM UTC. + Available Packages + Name : pmm-update + Version : 2.39.0 + Release : 67.2306280932.70f3748.el9 + Architecture : noarch + Size : 887 k + Source : pmm-update-2.39.0-67.2306280932.70f3748.el9.src.rpm + Repository : pmm2-server + Packager : None + Buildtime : Wed 28 Jun 2023 09:32:21 AM UTC + Summary : Tool for updating packages and OS configuration for PMM Server + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : Tool for updating packages and OS configuration for PMM Server + + Name : pmm-update + Version : 2.39.0 + Release : 67.2306281012.fe8e947.el9 + Architecture : noarch + Size : 887 k + Source : pmm-update-2.39.0-67.2306281012.fe8e947.el9.src.rpm + Repository : pmm2-server + Packager : None + Buildtime : Wed 28 Jun 2023 10:12:02 AM UTC + Summary : Tool for updating packages and OS configuration for PMM Server + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : Tool for updating packages and OS configuration for PMM Server + `, "\n") + expected := map[string]string{ + "Name": "pmm-update", + "Architecture": "noarch", + "Version": "2.39.0", + "Release": "67.2306280932.70f3748.el9", + "Size": "887 k", + "Source": "pmm-update-2.39.0-67.2306280932.70f3748.el9.src.rpm", + "Repository": "pmm2-server", + "Packager": "None", + "Buildtime": "Wed 28 Jun 2023 09:32:21 AM UTC", + "Summary": "Tool for updating packages and OS configuration for PMM Server", + "URL": "https://github.com/percona/pmm", + "License": "AGPLv3", + "Description": "Tool for updating packages and OS configuration for PMM Server", + } + actual, err := parseInfo(stdout, "Name") + assert.EqualError(t, err, "second `Name` encountered") + assert.Equal(t, expected, actual) + buildtime, err := parseInfoTime(actual["Buildtime"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, 6, 28, 9, 32, 21, 0, time.UTC), buildtime) + assert.Equal(t, "2.39.0-67.2306280932.70f3748.el9", fullVersion(actual)) + assert.Equal(t, "2.39.0", niceVersion(actual)) + }) + + t.Run("Empty EL9", func(t *testing.T) { + // yum --verbose info updates pmm-managed + // "Error: No matching Packages to list" goes to stderr. + // The output below is generated when there are no updates available. + stdout := strings.Split(` + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + repo: using cache for: ol9_developer_EPEL + ol9_developer_EPEL: using metadata from Wed 28 Jun 2023 02:28:50 PM UTC. + repo: using cache for: ol9_baseos_latest + ol9_baseos_latest: using metadata from Fri 23 Jun 2023 04:59:24 AM UTC. + repo: using cache for: ol9_appstream + ol9_appstream: using metadata from Fri 23 Jun 2023 05:03:17 AM UTC. + repo: using cache for: percona-release-x86_64 + percona-release-x86_64: using metadata from Mon 26 Jun 2023 01:02:27 PM UTC. + repo: using cache for: percona-release-noarch + percona-release-noarch: using metadata from Wed 06 Jul 2022 08:25:44 PM UTC. + repo: using cache for: percona-testing-x86_64 + percona-testing-x86_64: using metadata from Wed 28 Jun 2023 05:27:06 PM UTC. + repo: using cache for: percona-testing-noarch + percona-testing-noarch: using metadata from Wed 06 Jul 2022 08:20:55 PM UTC. + repo: using cache for: percona-ppg-11 + percona-ppg-11: using metadata from Mon 22 May 2023 08:40:15 AM UTC. + repo: using cache for: percona-ppg-14 + percona-ppg-14: using metadata from Wed 28 Jun 2023 02:57:51 PM UTC. + repo: using cache for: prel-release-noarch + prel-release-noarch: using metadata from Thu 16 Sep 2021 06:35:55 AM UTC. + repo: using cache for: pmm2-server + pmm2-server: using metadata from Wed 28 Jun 2023 02:46:09 PM UTC. + Last metadata expiration check: 0:59:54 ago on Wed 28 Jun 2023 07:06:43 PM UTC. + `, "\n") + actual, err := parseInfo(stdout, "Name") + require.NoError(t, err) + assert.Empty(t, actual) + }) + + t.Run("RepoInfo EL9", func(t *testing.T) { + // yum repoinfo pmm2-server. + stdout := strings.Split(` + Last metadata expiration check: 9:26:06 ago on Wed 28 Jun 2023 09:26:18 AM UTC. + Repo-id : pmm2-server + Repo-name : PMM Server YUM repository - x86_64 + Repo-status : enabled + Repo-revision : 1687873070 + Repo-updated : Tue 27 Jun 2023 01:25:23 PM UTC + Repo-pkgs : 478 + Repo-available-pkgs: 478 + Repo-size : 3.7 G + Repo-baseurl : https://repo.percona.com/pmm2-components/yum/experimental/9/RPMS/x86_64/ + Repo-expire : 172,800 second(s) (last: Wed 28 Jun 2023 09:26:18 AM UTC) + Repo-filename : /etc/yum.repos.d/pmm2-server.repo + Total packages: 478 + `, "\n") + expected := map[string]string{ + "Repo-id": "pmm2-server", + "Repo-name": "PMM Server YUM repository - x86_64", + "Repo-status": "enabled", + "Repo-revision": "1687873070", + "Repo-updated": "Tue 27 Jun 2023 01:25:23 PM UTC", + "Repo-pkgs": "478", + "Repo-available-pkgs": "478", + "Repo-size": "3.7 G", + "Repo-baseurl": "https://repo.percona.com/pmm2-components/yum/experimental/9/RPMS/x86_64/", + "Repo-expire": "172,800 second(s) (last: Wed 28 Jun 2023 09:26:18 AM UTC)", + "Repo-filename": "/etc/yum.repos.d/pmm2-server.repo", + "Total packages": "478", + } + actual, err := parseInfo(stdout, "Repo-id") + require.NoError(t, err) + assert.Equal(t, expected, actual) + releasetime, err := parseInfoTime(actual["Repo-updated"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, time.June, 27, 13, 25, 23, 0, time.UTC), releasetime) + }) +} + func TestGetRHELVersion(t *testing.T) { - t.Run("getRHELVersion", func(t *testing.T) { - // TODO enable once we pass to RHEL 9 for good - t.Skip("This test will fail on RHEL 7 and non-RHEL systems") + t.Run("getRHELVersion EL9", func(t *testing.T) { + actual, err := getRHELVersion() + if actual == "7" { + t.Skip("Skip running EL9 tests on EL7") + } expected := "9" + require.NoError(t, err) + assert.Equal(t, expected, actual) + }) + + t.Run("getRHELVersion EL7", func(t *testing.T) { actual, err := getRHELVersion() + if actual == "9" { + t.Skip("Skip running EL7 test on EL9") + } + expected := "7" require.NoError(t, err) assert.Equal(t, expected, actual) }) diff --git a/update/pkg/yum/yum.go b/update/pkg/yum/yum.go index 100a287aa6..f9b906f86d 100644 --- a/update/pkg/yum/yum.go +++ b/update/pkg/yum/yum.go @@ -113,7 +113,7 @@ func Check(ctx context.Context, name string) (*version.UpdateCheckResult, error) v, err := getRHELVersion() if err == nil && v == "7" { - // change the prop name for RHEL7, otherwise leave as is + // change the prop name for EL7 repoPropName = "Repo" } repo, ok := info[repoPropName] From dc1f8b9e17a33c2cfe57cd6457908ac4c8b71e96 Mon Sep 17 00:00:00 2001 From: Matej Kubinec <32638572+matejkubinec@users.noreply.github.com> Date: Thu, 29 Jun 2023 14:13:45 +0200 Subject: [PATCH 088/123] PMM-12254 Update grafana spec to 9.2.20 (#2315) * PMM-12254 Update grafana spec to 9.2.20 * PMM-12254 Use commit hash for Grafana 9.2.20 --------- Co-authored-by: Nurlan Moldomurov --- build/packages/rpm/server/SPECS/grafana.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/build/packages/rpm/server/SPECS/grafana.spec b/build/packages/rpm/server/SPECS/grafana.spec index c69d5051d4..43f815c837 100644 --- a/build/packages/rpm/server/SPECS/grafana.spec +++ b/build/packages/rpm/server/SPECS/grafana.spec @@ -1,9 +1,9 @@ %global debug_package %{nil} -%global commit f84a7c35000e11a2f4684852fd657f814381558c +%global commit 7ff49f34a3998067fa1ea480c07e0c74939ea306 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %define build_timestamp %(date -u +"%y%m%d%H%M") -%define release 99 -%define grafana_version 9.2.18 +%define release 100 +%define grafana_version 9.2.20 %define full_pmm_version 2.0.0 %define full_version v%{grafana_version}-%{full_pmm_version} %define rpm_release %{release}.%{build_timestamp}.%{shortcommit}%{?dist} @@ -84,6 +84,9 @@ getent passwd grafana >/dev/null || \ exit 0 %changelog +* Tue Jun 27 2023 Matej Kubinec - 9.2.20-1 +- PMM-12254 Grafana 9.2.20 + * Thu May 18 2023 Matej Kubinec - 9.2.18-1 - PMM-12114 Grafana 9.2.18 From 4d921258d09fd25a81d912d3738764616c4c4b10 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Thu, 29 Jun 2023 18:14:08 +0300 Subject: [PATCH 089/123] PMM-12136 force remove db 2.38 (#2332) * PMM-7 Force remove pmm-managed DB * PMM-7 Fix EL7 OVF build --- build/ansible/pmm2/post-build-actions.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/build/ansible/pmm2/post-build-actions.yml b/build/ansible/pmm2/post-build-actions.yml index 0f5fafdc10..65d29b38e0 100644 --- a/build/ansible/pmm2/post-build-actions.yml +++ b/build/ansible/pmm2/post-build-actions.yml @@ -127,10 +127,20 @@ ignore_errors: yes when: ansible_virtualization_type != "docker" - - name: Remove pmm-managed database + - name: Remove pmm-managed database EL7 + when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7' + postgresql_db: + login_user: postgres + name: pmm-managed + state: absent + register: db_check_result + + - name: Remove pmm-managed database EL9 + when: (ansible_distribution == 'OracleLinux' or ansible_distribution == 'AlmaLinux') and ansible_distribution_major_version == '9' postgresql_db: login_user: postgres name: pmm-managed + force: true state: absent register: db_check_result From dc0cd3825e1a474542a50fa738866e4559f15d6f Mon Sep 17 00:00:00 2001 From: Matej Kubinec <32638572+matejkubinec@users.noreply.github.com> Date: Thu, 29 Jun 2023 17:15:33 +0200 Subject: [PATCH 090/123] PMM-12254 Update grafana spec to 9.2.20 (#2315) (#2331) * PMM-12254 Update grafana spec to 9.2.20 (#2315) * PMM-12254 Update grafana spec to 9.2.20 * PMM-12254 Use commit hash for Grafana 9.2.20 --------- Co-authored-by: Nurlan Moldomurov * PMM-12254 Use hash from release branch --------- Co-authored-by: Nurlan Moldomurov --- build/packages/rpm/server/SPECS/grafana.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/build/packages/rpm/server/SPECS/grafana.spec b/build/packages/rpm/server/SPECS/grafana.spec index c69d5051d4..6d1b293b34 100644 --- a/build/packages/rpm/server/SPECS/grafana.spec +++ b/build/packages/rpm/server/SPECS/grafana.spec @@ -1,9 +1,9 @@ %global debug_package %{nil} -%global commit f84a7c35000e11a2f4684852fd657f814381558c +%global commit 87ca3167d2d7497a10fd34554da8692765636f20 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %define build_timestamp %(date -u +"%y%m%d%H%M") -%define release 99 -%define grafana_version 9.2.18 +%define release 100 +%define grafana_version 9.2.20 %define full_pmm_version 2.0.0 %define full_version v%{grafana_version}-%{full_pmm_version} %define rpm_release %{release}.%{build_timestamp}.%{shortcommit}%{?dist} @@ -84,6 +84,9 @@ getent passwd grafana >/dev/null || \ exit 0 %changelog +* Tue Jun 27 2023 Matej Kubinec - 9.2.20-1 +- PMM-12254 Grafana 9.2.20 + * Thu May 18 2023 Matej Kubinec - 9.2.18-1 - PMM-12114 Grafana 9.2.18 From 7f6a154f9eb087f53e708e92088cb675db2e2632 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 29 Jun 2023 18:38:33 +0300 Subject: [PATCH 091/123] PMM-12269 add LC_ALL envvar to managed (#2329) --- managed/utils/envvars/parser.go | 2 +- managed/utils/envvars/parser_test.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/managed/utils/envvars/parser.go b/managed/utils/envvars/parser.go index b473d546fa..4bd4fc67f2 100644 --- a/managed/utils/envvars/parser.go +++ b/managed/utils/envvars/parser.go @@ -84,7 +84,7 @@ func ParseEnvVars(envs []string) (envSettings *models.ChangeSettingsParams, errs var err error switch k { - case "_", "HOME", "HOSTNAME", "LANG", "PATH", "PWD", "SHLVL", "TERM": + case "_", "HOME", "HOSTNAME", "LANG", "PATH", "PWD", "SHLVL", "TERM", "LC_ALL": // skip default environment variables continue case "PMM_DEBUG", "PMM_TRACE": diff --git a/managed/utils/envvars/parser_test.go b/managed/utils/envvars/parser_test.go index 4416b054ca..6bb5d91a83 100644 --- a/managed/utils/envvars/parser_test.go +++ b/managed/utils/envvars/parser_test.go @@ -82,6 +82,7 @@ func TestEnvVarValidator(t *testing.T) { "HOSTNAME=host", "TERM=xterm-256color", "HOME=/home/user/", + "LC_ALL=en_US.utf8", } expectedEnvVars := &models.ChangeSettingsParams{} From 03d5997be9810a6c8503159b09a64153b77010bc Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Thu, 29 Jun 2023 18:40:59 +0300 Subject: [PATCH 092/123] PMM-12266 fix parsing yum date format el9 (2.38.0) (#2327) * PMM-12266 fix parsing yum date format for EL9 * PMM-12266 format code * PMM-12266 fix a redundant fn variable --- update/docker-compose.yml | 3 +- update/pkg/yum/info.go | 7 +- update/pkg/yum/info_test.go | 345 +++++++++++++++++++++++++++++++++++- update/pkg/yum/yum.go | 2 +- 4 files changed, 347 insertions(+), 10 deletions(-) diff --git a/update/docker-compose.yml b/update/docker-compose.yml index 30e80f28b8..5be6dd1cbf 100644 --- a/update/docker-compose.yml +++ b/update/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3' services: pmm-update-server: image: ${PMM_SERVER_IMAGE:-percona/pmm-server:2} @@ -7,7 +6,7 @@ services: environment: # for tests - PMM_SERVER_IMAGE=${PMM_SERVER_IMAGE:-percona/pmm-server:2} - - GO_VERSION=${GO_VERSION:-1.17.x} + - GO_VERSION=${GO_VERSION:-1.20.x} - PATH=/root/go/bin:$PATH - REVIEWDOG_GITHUB_API_TOKEN=${REVIEWDOG_GITHUB_API_TOKEN} volumes: diff --git a/update/pkg/yum/info.go b/update/pkg/yum/info.go index cfe2977478..f705d2922e 100644 --- a/update/pkg/yum/info.go +++ b/update/pkg/yum/info.go @@ -68,7 +68,12 @@ func parseInfo(lines []string, firstKey string) (map[string]string, error) { } func parseInfoTime(s string) (time.Time, error) { - return time.Parse("Mon Jan 2 15:04:05 2006", s) + layout := "Mon 2 Jan 2006 15:04:05 PM UTC" // layout for EL9, default + v, err := getRHELVersion() + if err == nil && v == "7" { + layout = "Mon Jan 2 15:04:05 2006" // change the layout for EL7 + } + return time.Parse(layout, s) } // fullVersion returns full (ugly) package version. diff --git a/update/pkg/yum/info_test.go b/update/pkg/yum/info_test.go index a402d15692..d8cc827c80 100644 --- a/update/pkg/yum/info_test.go +++ b/update/pkg/yum/info_test.go @@ -24,7 +24,11 @@ import ( "github.com/stretchr/testify/require" ) -func TestParseInfo(t *testing.T) { +func TestParseInfoEL7(t *testing.T) { + v, _ := getRHELVersion() + if v == "9" { + t.Skip("Skip running EL7 tests on EL9") + } t.Run("Installed", func(t *testing.T) { stdout := strings.Split(` Loading "fastestmirror" plugin @@ -147,7 +151,7 @@ func TestParseInfo(t *testing.T) { }) t.Run("Available", func(t *testing.T) { - // yum --verbose --showduplicates info available pmm-update, abbrivated + // yum --verbose --showduplicates info available pmm-update, abbreviated stdout := strings.Split(` Loading "fastestmirror" plugin Loading "ovl" plugin @@ -219,7 +223,7 @@ func TestParseInfo(t *testing.T) { }) t.Run("AvailableGA", func(t *testing.T) { - // yum --verbose --showduplicates info available pmm-update, abbrivated + // yum --verbose --showduplicates info available pmm-update, abbreviated stdout := strings.Split(` Available Packages Name : pmm-update @@ -338,12 +342,341 @@ func TestParseInfo(t *testing.T) { }) } +func TestParseInfoEL9(t *testing.T) { + v, _ := getRHELVersion() + if v == "7" { + t.Skip("Skip running EL9 tests on EL7") + } + t.Run("Installed EL9", func(t *testing.T) { + stdout := strings.Split(` + Starting "yum --verbose info installed pmm-managed" ... + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + Installed Packages + Name : pmm-managed + Version : 2.39.0 + Release : 20.2306271313.b6d58b6.el9 + Architecture : x86_64 + Size : 125 M + Source : pmm-managed-2.39.0-20.2306271313.b6d58b6.el9.src.rpm + Repository : @System + From repo : local + Packager : None + Buildtime : Tue 27 Jun 2023 01:13:03 PM UTC + Install time : Tue 27 Jun 2023 01:31:05 PM UTC + Installed by : System + Summary : Percona Monitoring and Management management daemon + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : pmm-managed manages configuration of PMM server components (VictoriaMetrics, + : Grafana, etc.) and exposes API for that. Those APIs are used by pmm-admin tool. + : See PMM docs for more information. + `, "\n") + expected := map[string]string{ + "Name": "pmm-managed", + "Version": "2.39.0", + "Release": "20.2306271313.b6d58b6.el9", + "Architecture": "x86_64", + "Size": "125 M", + "Source": "pmm-managed-2.39.0-20.2306271313.b6d58b6.el9.src.rpm", + "Repository": "@System", + "From repo": "local", + "Packager": "None", + "Buildtime": "Tue 27 Jun 2023 01:13:03 PM UTC", + "Install time": "Tue 27 Jun 2023 01:31:05 PM UTC", + "Installed by": "System ", + "Summary": "Percona Monitoring and Management management daemon", + "URL": "https://github.com/percona/pmm", + "License": "AGPLv3", + "Description": "pmm-managed manages configuration of PMM server components (VictoriaMetrics, " + + "Grafana, etc.) and exposes API for that. Those APIs are used by pmm-admin tool. " + + "See PMM docs for more information.", + } + actual, err := parseInfo(stdout, "Name") + require.NoError(t, err) + assert.Equal(t, expected, actual) + buildtime, err := parseInfoTime(actual["Buildtime"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, 6, 27, 13, 13, 3, 0, time.UTC), buildtime) + assert.Equal(t, "2.39.0-20.2306271313.b6d58b6.el9", fullVersion(actual)) + assert.Equal(t, "2.39.0", niceVersion(actual)) + }) + + t.Run("Updates EL9", func(t *testing.T) { + // yum --verbose info updates pmm-update + stdout := strings.Split(` + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + repo: using cache for: ol9_developer_EPEL + ol9_developer_EPEL: using metadata from Wed 28 Jun 2023 02:28:50 PM UTC. + repo: using cache for: ol9_baseos_latest + ol9_baseos_latest: using metadata from Fri 23 Jun 2023 04:59:24 AM UTC. + repo: using cache for: ol9_appstream + ol9_appstream: using metadata from Fri 23 Jun 2023 05:03:17 AM UTC. + repo: using cache for: percona-release-x86_64 + percona-release-x86_64: using metadata from Mon 26 Jun 2023 01:02:27 PM UTC. + repo: using cache for: percona-release-noarch + percona-release-noarch: using metadata from Wed 06 Jul 2022 08:25:44 PM UTC. + repo: using cache for: percona-testing-x86_64 + percona-testing-x86_64: using metadata from Wed 28 Jun 2023 05:27:06 PM UTC. + repo: using cache for: percona-testing-noarch + percona-testing-noarch: using metadata from Wed 06 Jul 2022 08:20:55 PM UTC. + repo: using cache for: percona-ppg-11 + percona-ppg-11: using metadata from Mon 22 May 2023 08:40:15 AM UTC. + repo: using cache for: percona-ppg-14 + percona-ppg-14: using metadata from Wed 28 Jun 2023 02:57:51 PM UTC. + repo: using cache for: prel-release-noarch + prel-release-noarch: using metadata from Thu 16 Sep 2021 06:35:55 AM UTC. + repo: using cache for: pmm2-server + pmm2-server: using metadata from Wed 28 Jun 2023 02:46:09 PM UTC. + Last metadata expiration check: 1:42:51 ago on Wed 28 Jun 2023 07:06:43 PM UTC. + Available Upgrades + Name : pmm-update + Version : 2.39.0 + Release : 67.2306281336.d0d7fcb.el9 + Architecture : noarch + Size : 886 k + Source : pmm-update-2.39.0-67.2306281336.d0d7fcb.el9.src.rpm + Repository : pmm2-server + Packager : None + Buildtime : Wed 28 Jun 2023 01:36:03 PM UTC + Summary : Tool for updating packages and OS configuration for PMM Server + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : Tool for updating packages and OS configuration for PMM Server + `, "\n") + expected := map[string]string{ + "Name": "pmm-update", + "Architecture": "noarch", + "Version": "2.39.0", + "Release": "67.2306281336.d0d7fcb.el9", + "Size": "886 k", + "Source": "pmm-update-2.39.0-67.2306281336.d0d7fcb.el9.src.rpm", + "Repository": "pmm2-server", + "Packager": "None", + "Buildtime": "Wed 28 Jun 2023 01:36:03 PM UTC", + "Summary": "Tool for updating packages and OS configuration for PMM Server", + "URL": "https://github.com/percona/pmm", + "License": "AGPLv3", + "Description": "Tool for updating packages and OS configuration for PMM Server", + } + actual, err := parseInfo(stdout, "Name") + require.NoError(t, err) + assert.Equal(t, expected, actual) + buildtime, err := parseInfoTime(actual["Buildtime"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, 6, 28, 13, 36, 3, 0, time.UTC), buildtime) + assert.Equal(t, "2.39.0-67.2306281336.d0d7fcb.el9", fullVersion(actual)) + assert.Equal(t, "2.39.0", niceVersion(actual)) + }) + + t.Run("AvailableGA EL9", func(t *testing.T) { + // yum --verbose --showduplicates info available pmm-update (just two versions) + stdout := strings.Split(` + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + repo: using cache for: ol9_developer_EPEL + ol9_developer_EPEL: using metadata from Wed 28 Jun 2023 02:28:50 PM UTC. + repo: using cache for: ol9_baseos_latest + ol9_baseos_latest: using metadata from Fri 23 Jun 2023 04:59:24 AM UTC. + repo: using cache for: ol9_appstream + ol9_appstream: using metadata from Fri 23 Jun 2023 05:03:17 AM UTC. + repo: using cache for: percona-release-x86_64 + percona-release-x86_64: using metadata from Mon 26 Jun 2023 01:02:27 PM UTC. + repo: using cache for: percona-release-noarch + percona-release-noarch: using metadata from Wed 06 Jul 2022 08:25:44 PM UTC. + repo: using cache for: percona-testing-x86_64 + percona-testing-x86_64: using metadata from Wed 28 Jun 2023 05:27:06 PM UTC. + repo: using cache for: percona-testing-noarch + percona-testing-noarch: using metadata from Wed 06 Jul 2022 08:20:55 PM UTC. + repo: using cache for: percona-ppg-11 + percona-ppg-11: using metadata from Mon 22 May 2023 08:40:15 AM UTC. + repo: using cache for: percona-ppg-14 + percona-ppg-14: using metadata from Wed 28 Jun 2023 02:57:51 PM UTC. + repo: using cache for: prel-release-noarch + prel-release-noarch: using metadata from Thu 16 Sep 2021 06:35:55 AM UTC. + repo: using cache for: pmm2-server + pmm2-server: using metadata from Wed 28 Jun 2023 02:46:09 PM UTC. + Last metadata expiration check: 1:18:00 ago on Wed 28 Jun 2023 07:06:43 PM UTC. + Available Packages + Name : pmm-update + Version : 2.39.0 + Release : 67.2306280932.70f3748.el9 + Architecture : noarch + Size : 887 k + Source : pmm-update-2.39.0-67.2306280932.70f3748.el9.src.rpm + Repository : pmm2-server + Packager : None + Buildtime : Wed 28 Jun 2023 09:32:21 AM UTC + Summary : Tool for updating packages and OS configuration for PMM Server + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : Tool for updating packages and OS configuration for PMM Server + + Name : pmm-update + Version : 2.39.0 + Release : 67.2306281012.fe8e947.el9 + Architecture : noarch + Size : 887 k + Source : pmm-update-2.39.0-67.2306281012.fe8e947.el9.src.rpm + Repository : pmm2-server + Packager : None + Buildtime : Wed 28 Jun 2023 10:12:02 AM UTC + Summary : Tool for updating packages and OS configuration for PMM Server + URL : https://github.com/percona/pmm + License : AGPLv3 + Description : Tool for updating packages and OS configuration for PMM Server + `, "\n") + expected := map[string]string{ + "Name": "pmm-update", + "Architecture": "noarch", + "Version": "2.39.0", + "Release": "67.2306280932.70f3748.el9", + "Size": "887 k", + "Source": "pmm-update-2.39.0-67.2306280932.70f3748.el9.src.rpm", + "Repository": "pmm2-server", + "Packager": "None", + "Buildtime": "Wed 28 Jun 2023 09:32:21 AM UTC", + "Summary": "Tool for updating packages and OS configuration for PMM Server", + "URL": "https://github.com/percona/pmm", + "License": "AGPLv3", + "Description": "Tool for updating packages and OS configuration for PMM Server", + } + actual, err := parseInfo(stdout, "Name") + assert.EqualError(t, err, "second `Name` encountered") + assert.Equal(t, expected, actual) + buildtime, err := parseInfoTime(actual["Buildtime"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, 6, 28, 9, 32, 21, 0, time.UTC), buildtime) + assert.Equal(t, "2.39.0-67.2306280932.70f3748.el9", fullVersion(actual)) + assert.Equal(t, "2.39.0", niceVersion(actual)) + }) + + t.Run("Empty EL9", func(t *testing.T) { + // yum --verbose info updates pmm-managed + // "Error: No matching Packages to list" goes to stderr. + // The output below is generated when there are no updates available. + stdout := strings.Split(` + Loaded plugins: builddep, changelog, config-manager, copr, debug, debuginfo-install, download, generate_completion_cache, groups-manager, needs-restarting, playground, repoclosure, repodiff, repograph, repomanage, reposync, system-upgrade + YUM version: 4.14.0 + cachedir: /var/cache/dnf + Unknown configuration option: async = 1 in /etc/yum.repos.d/clickhouse.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/local.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/nginx.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-11.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/percona-ppg-14.repo + Unknown configuration option: async = 1 in /etc/yum.repos.d/pmm2-server.repo + User-Agent: constructed: 'libdnf (Oracle Linux Server 9.2; server; Linux.x86_64)' + repo: using cache for: ol9_developer_EPEL + ol9_developer_EPEL: using metadata from Wed 28 Jun 2023 02:28:50 PM UTC. + repo: using cache for: ol9_baseos_latest + ol9_baseos_latest: using metadata from Fri 23 Jun 2023 04:59:24 AM UTC. + repo: using cache for: ol9_appstream + ol9_appstream: using metadata from Fri 23 Jun 2023 05:03:17 AM UTC. + repo: using cache for: percona-release-x86_64 + percona-release-x86_64: using metadata from Mon 26 Jun 2023 01:02:27 PM UTC. + repo: using cache for: percona-release-noarch + percona-release-noarch: using metadata from Wed 06 Jul 2022 08:25:44 PM UTC. + repo: using cache for: percona-testing-x86_64 + percona-testing-x86_64: using metadata from Wed 28 Jun 2023 05:27:06 PM UTC. + repo: using cache for: percona-testing-noarch + percona-testing-noarch: using metadata from Wed 06 Jul 2022 08:20:55 PM UTC. + repo: using cache for: percona-ppg-11 + percona-ppg-11: using metadata from Mon 22 May 2023 08:40:15 AM UTC. + repo: using cache for: percona-ppg-14 + percona-ppg-14: using metadata from Wed 28 Jun 2023 02:57:51 PM UTC. + repo: using cache for: prel-release-noarch + prel-release-noarch: using metadata from Thu 16 Sep 2021 06:35:55 AM UTC. + repo: using cache for: pmm2-server + pmm2-server: using metadata from Wed 28 Jun 2023 02:46:09 PM UTC. + Last metadata expiration check: 0:59:54 ago on Wed 28 Jun 2023 07:06:43 PM UTC. + `, "\n") + actual, err := parseInfo(stdout, "Name") + require.NoError(t, err) + assert.Empty(t, actual) + }) + + t.Run("RepoInfo EL9", func(t *testing.T) { + // yum repoinfo pmm2-server. + stdout := strings.Split(` + Last metadata expiration check: 9:26:06 ago on Wed 28 Jun 2023 09:26:18 AM UTC. + Repo-id : pmm2-server + Repo-name : PMM Server YUM repository - x86_64 + Repo-status : enabled + Repo-revision : 1687873070 + Repo-updated : Tue 27 Jun 2023 01:25:23 PM UTC + Repo-pkgs : 478 + Repo-available-pkgs: 478 + Repo-size : 3.7 G + Repo-baseurl : https://repo.percona.com/pmm2-components/yum/experimental/9/RPMS/x86_64/ + Repo-expire : 172,800 second(s) (last: Wed 28 Jun 2023 09:26:18 AM UTC) + Repo-filename : /etc/yum.repos.d/pmm2-server.repo + Total packages: 478 + `, "\n") + expected := map[string]string{ + "Repo-id": "pmm2-server", + "Repo-name": "PMM Server YUM repository - x86_64", + "Repo-status": "enabled", + "Repo-revision": "1687873070", + "Repo-updated": "Tue 27 Jun 2023 01:25:23 PM UTC", + "Repo-pkgs": "478", + "Repo-available-pkgs": "478", + "Repo-size": "3.7 G", + "Repo-baseurl": "https://repo.percona.com/pmm2-components/yum/experimental/9/RPMS/x86_64/", + "Repo-expire": "172,800 second(s) (last: Wed 28 Jun 2023 09:26:18 AM UTC)", + "Repo-filename": "/etc/yum.repos.d/pmm2-server.repo", + "Total packages": "478", + } + actual, err := parseInfo(stdout, "Repo-id") + require.NoError(t, err) + assert.Equal(t, expected, actual) + releasetime, err := parseInfoTime(actual["Repo-updated"]) + require.NoError(t, err) + assert.Equal(t, time.Date(2023, time.June, 27, 13, 25, 23, 0, time.UTC), releasetime) + }) +} + func TestGetRHELVersion(t *testing.T) { - t.Run("getRHELVersion", func(t *testing.T) { - // TODO enable once we pass to RHEL 9 for good - t.Skip("This test will fail on RHEL 7 and non-RHEL systems") + t.Run("getRHELVersion EL9", func(t *testing.T) { + actual, err := getRHELVersion() + if actual == "7" { + t.Skip("Skip running EL9 tests on EL7") + } expected := "9" + require.NoError(t, err) + assert.Equal(t, expected, actual) + }) + + t.Run("getRHELVersion EL7", func(t *testing.T) { actual, err := getRHELVersion() + if actual == "9" { + t.Skip("Skip running EL7 test on EL9") + } + expected := "7" require.NoError(t, err) assert.Equal(t, expected, actual) }) diff --git a/update/pkg/yum/yum.go b/update/pkg/yum/yum.go index 100a287aa6..f9b906f86d 100644 --- a/update/pkg/yum/yum.go +++ b/update/pkg/yum/yum.go @@ -113,7 +113,7 @@ func Check(ctx context.Context, name string) (*version.UpdateCheckResult, error) v, err := getRHELVersion() if err == nil && v == "7" { - // change the prop name for RHEL7, otherwise leave as is + // change the prop name for EL7 repoPropName = "Repo" } repo, ok := info[repoPropName] From 8c1b511fe50f659a7c7397e695b9943076ae6d05 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 12:14:05 +0300 Subject: [PATCH 093/123] Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 (#2310) Bumps google.golang.org/protobuf from 1.30.0 to 1.31.0. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alex Tymchuk --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 81b78cdd38..360c074f3c 100644 --- a/go.mod +++ b/go.mod @@ -82,7 +82,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/grpc v1.57.0-dev - google.golang.org/protobuf v1.30.0 + google.golang.org/protobuf v1.31.0 gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/reform.v1 v1.5.1 gopkg.in/yaml.v3 v3.0.1 diff --git a/go.sum b/go.sum index 362f421e9b..2c6481c27d 100644 --- a/go.sum +++ b/go.sum @@ -1187,8 +1187,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From dd1d2d2aa1f914c102445e2623cb03e7204299c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 09:30:32 +0000 Subject: [PATCH 094/123] Bump github.com/bufbuild/buf from 1.22.0 to 1.23.0 in /tools (#2333) Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.22.0 to 1.23.0. - [Release notes](https://github.com/bufbuild/buf/releases) - [Changelog](https://github.com/bufbuild/buf/blob/main/CHANGELOG.md) - [Commits](https://github.com/bufbuild/buf/compare/v1.22.0...v1.23.0) --- updated-dependencies: - dependency-name: github.com/bufbuild/buf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 2 +- tools/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 97e48a1fd8..f33de51777 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -8,7 +8,7 @@ require ( github.com/BurntSushi/go-sumtype v0.0.0-20190304192233-fcb4a6205bdc github.com/Percona-Lab/swagger-order v0.0.0-20191002141859-166b3973d026 github.com/apache/skywalking-eyes v0.4.0 - github.com/bufbuild/buf v1.22.0 + github.com/bufbuild/buf v1.23.0 github.com/daixiang0/gci v0.10.1 github.com/envoyproxy/protoc-gen-validate v1.0.1 github.com/go-delve/delve v1.21.0 diff --git a/tools/go.sum b/tools/go.sum index bc2de9e375..ac91294db8 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -103,8 +103,8 @@ github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 h1:tXKVfhE7FcSkhkv0UwkLvPDeZ4k github.com/bradleyfalzon/ghinstallation/v2 v2.0.4/go.mod h1:B40qPqJxWE0jDZgOR1JmaMy+4AY1eBP+IByOvqyAKp0= github.com/brianvoe/gofakeit v3.18.0+incompatible h1:wDOmHc9DLG4nRjUVVaxA+CEglKOW72Y5+4WNxUIkjM8= github.com/brianvoe/gofakeit v3.18.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= -github.com/bufbuild/buf v1.22.0 h1:dCWUIx1gm3nm5U+FKdkVjaL+Rk9Ev3hh4XYMa2Cbn/o= -github.com/bufbuild/buf v1.22.0/go.mod h1:ERFRzJiIjAOzUSJ3vz1zoI7XfxlBnCwZEyL+NJm4pko= +github.com/bufbuild/buf v1.23.0 h1:QD6xCygtCVhN6qsQ4TtE2xGRK86xGkjI9lNHJ5jaj+M= +github.com/bufbuild/buf v1.23.0/go.mod h1:ERFRzJiIjAOzUSJ3vz1zoI7XfxlBnCwZEyL+NJm4pko= github.com/bufbuild/connect-go v1.8.0 h1:srluNkFkZBfSfg9Qb6DrO+5nMaxix//h2ctrHZhMGKc= github.com/bufbuild/connect-go v1.8.0/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= github.com/bufbuild/connect-opentelemetry-go v0.3.0 h1:AuZi3asTDKmjGtd2aqpyP4p5QvBFG/YEaHopViLatnk= From 6e252ecdd7448483979f3622e941273556004268 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 14:10:45 +0300 Subject: [PATCH 095/123] Bump google.golang.org/protobuf from 1.30.0 to 1.31.0 in /tools (#2311) Bumps google.golang.org/protobuf from 1.30.0 to 1.31.0. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- api/agentlocalpb/agentlocal.pb.go | 2 +- api/agentpb/agent.pb.go | 2 +- api/agentpb/collector.pb.go | 2 +- api/inventorypb/agent_status.pb.go | 2 +- api/inventorypb/agents.pb.go | 2 +- api/inventorypb/log_level.pb.go | 2 +- api/inventorypb/nodes.pb.go | 2 +- api/inventorypb/services.pb.go | 2 +- api/managementpb/actions.pb.go | 2 +- api/managementpb/agent/agent.pb.go | 2 +- api/managementpb/alerting/alerting.pb.go | 2 +- api/managementpb/alerting/params.pb.go | 2 +- api/managementpb/annotation.pb.go | 2 +- api/managementpb/azure/azure.pb.go | 2 +- api/managementpb/backup/artifacts.pb.go | 2 +- api/managementpb/backup/backups.pb.go | 2 +- api/managementpb/backup/common.pb.go | 2 +- api/managementpb/backup/errors.pb.go | 2 +- api/managementpb/backup/locations.pb.go | 2 +- api/managementpb/backup/restores.pb.go | 2 +- api/managementpb/boolean_flag.pb.go | 2 +- api/managementpb/checks.pb.go | 2 +- api/managementpb/dbaas/components.pb.go | 2 +- api/managementpb/dbaas/db_clusters.pb.go | 2 +- api/managementpb/dbaas/dbaas.pb.go | 2 +- api/managementpb/dbaas/kubernetes.pb.go | 2 +- api/managementpb/dbaas/logs.pb.go | 2 +- api/managementpb/dbaas/psmdb_clusters.pb.go | 2 +- api/managementpb/dbaas/pxc_clusters.pb.go | 2 +- api/managementpb/dbaas/templates.pb.go | 2 +- api/managementpb/external.pb.go | 2 +- api/managementpb/haproxy.pb.go | 2 +- api/managementpb/ia/alerts.pb.go | 2 +- api/managementpb/ia/channels.pb.go | 2 +- api/managementpb/ia/rules.pb.go | 2 +- api/managementpb/ia/status.pb.go | 2 +- api/managementpb/metrics.pb.go | 2 +- api/managementpb/mongodb.pb.go | 2 +- api/managementpb/mysql.pb.go | 2 +- api/managementpb/node.pb.go | 2 +- api/managementpb/node/node.pb.go | 2 +- api/managementpb/pagination.pb.go | 2 +- api/managementpb/postgresql.pb.go | 2 +- api/managementpb/proxysql.pb.go | 2 +- api/managementpb/rds.pb.go | 2 +- api/managementpb/role/role.pb.go | 2 +- api/managementpb/service.pb.go | 2 +- api/managementpb/service/service.pb.go | 2 +- api/managementpb/severity.pb.go | 2 +- api/platformpb/platform.pb.go | 2 +- api/qanpb/collector.pb.go | 2 +- api/qanpb/filters.pb.go | 2 +- api/qanpb/metrics_names.pb.go | 2 +- api/qanpb/object_details.pb.go | 2 +- api/qanpb/profile.pb.go | 2 +- api/qanpb/qan.pb.go | 2 +- api/serverpb/httperror.pb.go | 2 +- api/serverpb/server.pb.go | 2 +- api/uieventspb/server.pb.go | 2 +- api/userpb/user.pb.go | 2 +- tools/go.mod | 2 +- tools/go.sum | 4 ++-- 62 files changed, 63 insertions(+), 63 deletions(-) diff --git a/api/agentlocalpb/agentlocal.pb.go b/api/agentlocalpb/agentlocal.pb.go index 9e5b587b83..1e3c06fd6f 100644 --- a/api/agentlocalpb/agentlocal.pb.go +++ b/api/agentlocalpb/agentlocal.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: agentlocalpb/agentlocal.proto diff --git a/api/agentpb/agent.pb.go b/api/agentpb/agent.pb.go index 303eb4e42e..f06a953aa9 100644 --- a/api/agentpb/agent.pb.go +++ b/api/agentpb/agent.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: agentpb/agent.proto diff --git a/api/agentpb/collector.pb.go b/api/agentpb/collector.pb.go index a9fd496871..6119d23c42 100644 --- a/api/agentpb/collector.pb.go +++ b/api/agentpb/collector.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: agentpb/collector.proto diff --git a/api/inventorypb/agent_status.pb.go b/api/inventorypb/agent_status.pb.go index fd02b8475b..58238ccfd7 100644 --- a/api/inventorypb/agent_status.pb.go +++ b/api/inventorypb/agent_status.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: inventorypb/agent_status.proto diff --git a/api/inventorypb/agents.pb.go b/api/inventorypb/agents.pb.go index 82105ccb1f..50afddd4c8 100644 --- a/api/inventorypb/agents.pb.go +++ b/api/inventorypb/agents.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: inventorypb/agents.proto diff --git a/api/inventorypb/log_level.pb.go b/api/inventorypb/log_level.pb.go index cf9793cf04..50a79d8c90 100644 --- a/api/inventorypb/log_level.pb.go +++ b/api/inventorypb/log_level.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: inventorypb/log_level.proto diff --git a/api/inventorypb/nodes.pb.go b/api/inventorypb/nodes.pb.go index a22598bf8c..afabb19136 100644 --- a/api/inventorypb/nodes.pb.go +++ b/api/inventorypb/nodes.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: inventorypb/nodes.proto diff --git a/api/inventorypb/services.pb.go b/api/inventorypb/services.pb.go index 02b7183fe2..f187ecaec2 100644 --- a/api/inventorypb/services.pb.go +++ b/api/inventorypb/services.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: inventorypb/services.proto diff --git a/api/managementpb/actions.pb.go b/api/managementpb/actions.pb.go index 9ebcb3c7c4..bbfaffae1a 100644 --- a/api/managementpb/actions.pb.go +++ b/api/managementpb/actions.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/actions.proto diff --git a/api/managementpb/agent/agent.pb.go b/api/managementpb/agent/agent.pb.go index daf6943c77..319577f8b5 100644 --- a/api/managementpb/agent/agent.pb.go +++ b/api/managementpb/agent/agent.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/agent/agent.proto diff --git a/api/managementpb/alerting/alerting.pb.go b/api/managementpb/alerting/alerting.pb.go index 23ee1deb67..7d6f223563 100644 --- a/api/managementpb/alerting/alerting.pb.go +++ b/api/managementpb/alerting/alerting.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/alerting/alerting.proto diff --git a/api/managementpb/alerting/params.pb.go b/api/managementpb/alerting/params.pb.go index 4cfee619df..3d4682a0da 100644 --- a/api/managementpb/alerting/params.pb.go +++ b/api/managementpb/alerting/params.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/alerting/params.proto diff --git a/api/managementpb/annotation.pb.go b/api/managementpb/annotation.pb.go index 3aa235b49b..fa05f9da7c 100644 --- a/api/managementpb/annotation.pb.go +++ b/api/managementpb/annotation.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/annotation.proto diff --git a/api/managementpb/azure/azure.pb.go b/api/managementpb/azure/azure.pb.go index f41581f91f..6bbdd4e895 100644 --- a/api/managementpb/azure/azure.pb.go +++ b/api/managementpb/azure/azure.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/azure/azure.proto diff --git a/api/managementpb/backup/artifacts.pb.go b/api/managementpb/backup/artifacts.pb.go index 8a1619eb59..e45b927427 100644 --- a/api/managementpb/backup/artifacts.pb.go +++ b/api/managementpb/backup/artifacts.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/backup/artifacts.proto diff --git a/api/managementpb/backup/backups.pb.go b/api/managementpb/backup/backups.pb.go index aee644ed82..edeb0ee602 100644 --- a/api/managementpb/backup/backups.pb.go +++ b/api/managementpb/backup/backups.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/backup/backups.proto diff --git a/api/managementpb/backup/common.pb.go b/api/managementpb/backup/common.pb.go index 8af65718a2..ef4b58828d 100644 --- a/api/managementpb/backup/common.pb.go +++ b/api/managementpb/backup/common.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/backup/common.proto diff --git a/api/managementpb/backup/errors.pb.go b/api/managementpb/backup/errors.pb.go index b8f9b4148e..63b0b266bb 100644 --- a/api/managementpb/backup/errors.pb.go +++ b/api/managementpb/backup/errors.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/backup/errors.proto diff --git a/api/managementpb/backup/locations.pb.go b/api/managementpb/backup/locations.pb.go index 2ff53c5209..29c046325a 100644 --- a/api/managementpb/backup/locations.pb.go +++ b/api/managementpb/backup/locations.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/backup/locations.proto diff --git a/api/managementpb/backup/restores.pb.go b/api/managementpb/backup/restores.pb.go index b15918d810..3b01fa4b43 100644 --- a/api/managementpb/backup/restores.pb.go +++ b/api/managementpb/backup/restores.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/backup/restores.proto diff --git a/api/managementpb/boolean_flag.pb.go b/api/managementpb/boolean_flag.pb.go index 691369e446..5451b2e878 100644 --- a/api/managementpb/boolean_flag.pb.go +++ b/api/managementpb/boolean_flag.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/boolean_flag.proto diff --git a/api/managementpb/checks.pb.go b/api/managementpb/checks.pb.go index 40fb9ad41e..7bf1b53a51 100644 --- a/api/managementpb/checks.pb.go +++ b/api/managementpb/checks.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/checks.proto diff --git a/api/managementpb/dbaas/components.pb.go b/api/managementpb/dbaas/components.pb.go index 6f1309820a..cbdfd6c57d 100644 --- a/api/managementpb/dbaas/components.pb.go +++ b/api/managementpb/dbaas/components.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/components.proto diff --git a/api/managementpb/dbaas/db_clusters.pb.go b/api/managementpb/dbaas/db_clusters.pb.go index 9f0067ebf6..2b8a099e89 100644 --- a/api/managementpb/dbaas/db_clusters.pb.go +++ b/api/managementpb/dbaas/db_clusters.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/db_clusters.proto diff --git a/api/managementpb/dbaas/dbaas.pb.go b/api/managementpb/dbaas/dbaas.pb.go index f8ef6dca72..52cb9f53ea 100644 --- a/api/managementpb/dbaas/dbaas.pb.go +++ b/api/managementpb/dbaas/dbaas.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/dbaas.proto diff --git a/api/managementpb/dbaas/kubernetes.pb.go b/api/managementpb/dbaas/kubernetes.pb.go index 6a23ac4ed7..9151332ae2 100644 --- a/api/managementpb/dbaas/kubernetes.pb.go +++ b/api/managementpb/dbaas/kubernetes.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/kubernetes.proto diff --git a/api/managementpb/dbaas/logs.pb.go b/api/managementpb/dbaas/logs.pb.go index f9e9e1bfcf..e24145f79e 100644 --- a/api/managementpb/dbaas/logs.pb.go +++ b/api/managementpb/dbaas/logs.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/logs.proto diff --git a/api/managementpb/dbaas/psmdb_clusters.pb.go b/api/managementpb/dbaas/psmdb_clusters.pb.go index 6b956e8e91..4dda99c751 100644 --- a/api/managementpb/dbaas/psmdb_clusters.pb.go +++ b/api/managementpb/dbaas/psmdb_clusters.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/psmdb_clusters.proto diff --git a/api/managementpb/dbaas/pxc_clusters.pb.go b/api/managementpb/dbaas/pxc_clusters.pb.go index 0dbbabc3bf..ec34b22c58 100644 --- a/api/managementpb/dbaas/pxc_clusters.pb.go +++ b/api/managementpb/dbaas/pxc_clusters.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/pxc_clusters.proto diff --git a/api/managementpb/dbaas/templates.pb.go b/api/managementpb/dbaas/templates.pb.go index d1447fb035..9231f07326 100644 --- a/api/managementpb/dbaas/templates.pb.go +++ b/api/managementpb/dbaas/templates.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/dbaas/templates.proto diff --git a/api/managementpb/external.pb.go b/api/managementpb/external.pb.go index f93925844b..81ca2e7509 100644 --- a/api/managementpb/external.pb.go +++ b/api/managementpb/external.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/external.proto diff --git a/api/managementpb/haproxy.pb.go b/api/managementpb/haproxy.pb.go index c2cfef5020..ec9e677887 100644 --- a/api/managementpb/haproxy.pb.go +++ b/api/managementpb/haproxy.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/haproxy.proto diff --git a/api/managementpb/ia/alerts.pb.go b/api/managementpb/ia/alerts.pb.go index cf7470df9d..c8ac098177 100644 --- a/api/managementpb/ia/alerts.pb.go +++ b/api/managementpb/ia/alerts.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/ia/alerts.proto diff --git a/api/managementpb/ia/channels.pb.go b/api/managementpb/ia/channels.pb.go index 6f76b7c5ba..70636dd1af 100644 --- a/api/managementpb/ia/channels.pb.go +++ b/api/managementpb/ia/channels.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/ia/channels.proto diff --git a/api/managementpb/ia/rules.pb.go b/api/managementpb/ia/rules.pb.go index 4b3020312d..68a00efa00 100644 --- a/api/managementpb/ia/rules.pb.go +++ b/api/managementpb/ia/rules.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/ia/rules.proto diff --git a/api/managementpb/ia/status.pb.go b/api/managementpb/ia/status.pb.go index e9ddc8ffca..681fef5a4e 100644 --- a/api/managementpb/ia/status.pb.go +++ b/api/managementpb/ia/status.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/ia/status.proto diff --git a/api/managementpb/metrics.pb.go b/api/managementpb/metrics.pb.go index 960ba9c242..9587c1862a 100644 --- a/api/managementpb/metrics.pb.go +++ b/api/managementpb/metrics.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/metrics.proto diff --git a/api/managementpb/mongodb.pb.go b/api/managementpb/mongodb.pb.go index d3cab06428..cf351f3a90 100644 --- a/api/managementpb/mongodb.pb.go +++ b/api/managementpb/mongodb.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/mongodb.proto diff --git a/api/managementpb/mysql.pb.go b/api/managementpb/mysql.pb.go index d579dc8998..773e63da5b 100644 --- a/api/managementpb/mysql.pb.go +++ b/api/managementpb/mysql.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/mysql.proto diff --git a/api/managementpb/node.pb.go b/api/managementpb/node.pb.go index d1c1e4744c..2f557c0dab 100644 --- a/api/managementpb/node.pb.go +++ b/api/managementpb/node.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/node.proto diff --git a/api/managementpb/node/node.pb.go b/api/managementpb/node/node.pb.go index 0bb7976ee1..6f1f081347 100644 --- a/api/managementpb/node/node.pb.go +++ b/api/managementpb/node/node.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/node/node.proto diff --git a/api/managementpb/pagination.pb.go b/api/managementpb/pagination.pb.go index 92d36cad1c..69716872ad 100644 --- a/api/managementpb/pagination.pb.go +++ b/api/managementpb/pagination.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/pagination.proto diff --git a/api/managementpb/postgresql.pb.go b/api/managementpb/postgresql.pb.go index 0d70714e10..f9e679c139 100644 --- a/api/managementpb/postgresql.pb.go +++ b/api/managementpb/postgresql.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/postgresql.proto diff --git a/api/managementpb/proxysql.pb.go b/api/managementpb/proxysql.pb.go index 5ae38784da..6a499d59c2 100644 --- a/api/managementpb/proxysql.pb.go +++ b/api/managementpb/proxysql.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/proxysql.proto diff --git a/api/managementpb/rds.pb.go b/api/managementpb/rds.pb.go index b84edf05ce..3f812cb835 100644 --- a/api/managementpb/rds.pb.go +++ b/api/managementpb/rds.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/rds.proto diff --git a/api/managementpb/role/role.pb.go b/api/managementpb/role/role.pb.go index 773ad8c570..96978fed8b 100644 --- a/api/managementpb/role/role.pb.go +++ b/api/managementpb/role/role.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/role/role.proto diff --git a/api/managementpb/service.pb.go b/api/managementpb/service.pb.go index d0613d9c3e..48647c2d68 100644 --- a/api/managementpb/service.pb.go +++ b/api/managementpb/service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/service.proto diff --git a/api/managementpb/service/service.pb.go b/api/managementpb/service/service.pb.go index 7626c4440b..46248b0da4 100644 --- a/api/managementpb/service/service.pb.go +++ b/api/managementpb/service/service.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/service/service.proto diff --git a/api/managementpb/severity.pb.go b/api/managementpb/severity.pb.go index 03b448c7e4..d7fa52c9c5 100644 --- a/api/managementpb/severity.pb.go +++ b/api/managementpb/severity.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: managementpb/severity.proto diff --git a/api/platformpb/platform.pb.go b/api/platformpb/platform.pb.go index 6271b277f9..24e107c697 100644 --- a/api/platformpb/platform.pb.go +++ b/api/platformpb/platform.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: platformpb/platform.proto diff --git a/api/qanpb/collector.pb.go b/api/qanpb/collector.pb.go index e1a23bc22a..41552690e9 100644 --- a/api/qanpb/collector.pb.go +++ b/api/qanpb/collector.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: qanpb/collector.proto diff --git a/api/qanpb/filters.pb.go b/api/qanpb/filters.pb.go index e63a3a07cb..290ea68b52 100644 --- a/api/qanpb/filters.pb.go +++ b/api/qanpb/filters.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: qanpb/filters.proto diff --git a/api/qanpb/metrics_names.pb.go b/api/qanpb/metrics_names.pb.go index 5a5bdb8ef9..ed632783fe 100644 --- a/api/qanpb/metrics_names.pb.go +++ b/api/qanpb/metrics_names.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: qanpb/metrics_names.proto diff --git a/api/qanpb/object_details.pb.go b/api/qanpb/object_details.pb.go index e747337976..96f43d9a71 100644 --- a/api/qanpb/object_details.pb.go +++ b/api/qanpb/object_details.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: qanpb/object_details.proto diff --git a/api/qanpb/profile.pb.go b/api/qanpb/profile.pb.go index 6652f16bce..7dd2187f5d 100644 --- a/api/qanpb/profile.pb.go +++ b/api/qanpb/profile.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: qanpb/profile.proto diff --git a/api/qanpb/qan.pb.go b/api/qanpb/qan.pb.go index 759253b83e..6e1c222061 100644 --- a/api/qanpb/qan.pb.go +++ b/api/qanpb/qan.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: qanpb/qan.proto diff --git a/api/serverpb/httperror.pb.go b/api/serverpb/httperror.pb.go index b1b392d2fd..1493004782 100644 --- a/api/serverpb/httperror.pb.go +++ b/api/serverpb/httperror.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: serverpb/httperror.proto diff --git a/api/serverpb/server.pb.go b/api/serverpb/server.pb.go index f29abe64a9..3a3d7a99ec 100644 --- a/api/serverpb/server.pb.go +++ b/api/serverpb/server.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: serverpb/server.proto diff --git a/api/uieventspb/server.pb.go b/api/uieventspb/server.pb.go index 028b25744b..d8c2f13853 100644 --- a/api/uieventspb/server.pb.go +++ b/api/uieventspb/server.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: uieventspb/server.proto diff --git a/api/userpb/user.pb.go b/api/userpb/user.pb.go index a93dc802e8..6e8cfecf80 100644 --- a/api/userpb/user.pb.go +++ b/api/userpb/user.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 +// protoc-gen-go v1.31.0 // protoc (unknown) // source: userpb/user.proto diff --git a/tools/go.mod b/tools/go.mod index f33de51777..8219ee2346 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -24,7 +24,7 @@ require ( golang.org/x/perf v0.0.0-20211012211434-03971e389cd3 golang.org/x/tools v0.10.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 - google.golang.org/protobuf v1.30.0 + google.golang.org/protobuf v1.31.0 gopkg.in/reform.v1 v1.5.1 mvdan.cc/gofumpt v0.5.0 ) diff --git a/tools/go.sum b/tools/go.sum index ac91294db8..4cffd9135b 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1156,8 +1156,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 4f5b0855f31993bb1f29f49b010de91e79382ea2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 10:36:50 +0200 Subject: [PATCH 096/123] Bump eslint from 8.43.0 to 8.44.0 in /cli-tests (#2337) Bumps [eslint](https://github.com/eslint/eslint) from 8.43.0 to 8.44.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.43.0...v8.44.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 72 ++++++++++++++++++------------------- cli-tests/package.json | 2 +- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index e9767f5d19..f5a1da4d33 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -22,13 +22,22 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", - "eslint": "8.43", + "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-playwright": "^0.15.2" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", @@ -54,14 +63,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -77,9 +86,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -440,9 +449,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", + "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -833,15 +842,15 @@ } }, "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -853,7 +862,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -873,7 +882,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -1102,12 +1111,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -2022,17 +2031,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -2632,15 +2641,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index 961c0617e2..f722b2a3a6 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -26,7 +26,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", - "eslint": "8.43", + "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", "eslint-plugin-import": "^2.27.5", From 1bc0d142d06604e21bf6aea7a0f59e2bf5c6b3c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 08:58:55 +0000 Subject: [PATCH 097/123] Bump @typescript-eslint/parser from 5.59.9 to 5.60.1 in /cli-tests (#2313) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.9 to 5.60.1. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 88 ++++++++++++++++++++++++++++++++++--- cli-tests/package.json | 2 +- 2 files changed, 82 insertions(+), 8 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index f5a1da4d33..7bb6991251 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -21,7 +21,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", - "@typescript-eslint/parser": "^5.59.9", + "@typescript-eslint/parser": "^5.60.1", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", @@ -295,14 +295,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.9.tgz", - "integrity": "sha512-FsPkRvBtcLQ/eVK1ivDiNYBjn3TGJdXy2fhXX+rc7czWl4ARwnpArwbihSOHI2Peg9WbtGHrbThfBUkZZGTtvQ==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", + "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/typescript-estree": "5.59.9", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/typescript-estree": "5.60.1", "debug": "^4.3.4" }, "engines": { @@ -321,6 +321,80 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", + "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/visitor-keys": "5.60.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", + "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", + "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/visitor-keys": "5.60.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", + "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.60.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.59.9", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index f722b2a3a6..e736dbe13f 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -25,7 +25,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.59.9", - "@typescript-eslint/parser": "^5.59.9", + "@typescript-eslint/parser": "^5.60.1", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", From 49286a5a3dc342a99c23f3229775f9d513fa504d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 11:55:06 +0200 Subject: [PATCH 098/123] Bump @typescript-eslint/eslint-plugin in /cli-tests (#2312) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.9 to 5.60.1. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.60.1/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 136 ++++++++---------------------------- cli-tests/package.json | 2 +- 2 files changed, 32 insertions(+), 106 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 7bb6991251..3de0541299 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -20,7 +20,7 @@ "devDependencies": { "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", - "@typescript-eslint/eslint-plugin": "^5.59.9", + "@typescript-eslint/eslint-plugin": "^5.60.1", "@typescript-eslint/parser": "^5.60.1", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", @@ -261,15 +261,15 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.9.tgz", - "integrity": "sha512-4uQIBq1ffXd2YvF7MAvehWKW3zVv/w+mSfRAu+8cKbfj3nwzyqJLNcZJpQ/WZ1HLbJDiowwmQ6NO+63nCA+fqA==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", + "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/type-utils": "5.59.9", - "@typescript-eslint/utils": "5.59.9", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/type-utils": "5.60.1", + "@typescript-eslint/utils": "5.60.1", "debug": "^4.3.4", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", @@ -321,7 +321,7 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "5.60.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", @@ -338,88 +338,14 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", - "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", - "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", - "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.60.1", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.9.tgz", - "integrity": "sha512-8RA+E+w78z1+2dzvK/tGZ2cpGigBZ58VMEHDZtpE1v+LLjzrYGc8mMaTONSxKyEkz3IuXFM0IqYiGHlCsmlZxQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/visitor-keys": "5.59.9" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.9.tgz", - "integrity": "sha512-ksEsT0/mEHg9e3qZu98AlSrONAQtrSTljL3ow9CGej8eRo7pe+yaC/mvTjptp23Xo/xIf2mLZKC6KPv4Sji26Q==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", + "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.9", - "@typescript-eslint/utils": "5.59.9", + "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/utils": "5.60.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -440,9 +366,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.9.tgz", - "integrity": "sha512-uW8H5NRgTVneSVTfiCVffBb8AbwWSKg7qcA4Ot3JI3MPCJGsB4Db4BhvAODIIYE5mNj7Q+VJkK7JxmRhk2Lyjw==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", + "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -453,13 +379,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.9.tgz", - "integrity": "sha512-pmM0/VQ7kUhd1QyIxgS+aRvMgw+ZljB3eDb+jYyp6d2bC0mQWLzUDF+DLwCTkQ3tlNyVsvZRXjFyV0LkU/aXjA==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", + "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/visitor-keys": "5.59.9", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/visitor-keys": "5.60.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -480,17 +406,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.9.tgz", - "integrity": "sha512-1PuMYsju/38I5Ggblaeb98TOoUvjhRvLpLa1DoTOFaLWqaXl/1iQ1eGurTXgBY58NUdtfTXKP5xBq7q9NDaLKg==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", + "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.9", - "@typescript-eslint/types": "5.59.9", - "@typescript-eslint/typescript-estree": "5.59.9", + "@typescript-eslint/scope-manager": "5.60.1", + "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/typescript-estree": "5.60.1", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -506,12 +432,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.9", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.9.tgz", - "integrity": "sha512-bT7s0td97KMaLwpEBckbzj/YohnvXtqbe2XgqNvTl6RJVakY5mvENOTPvw5u66nljfZxthESpDozs86U+oLY8Q==", + "version": "5.60.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", + "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.59.9", + "@typescript-eslint/types": "5.60.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { diff --git a/cli-tests/package.json b/cli-tests/package.json index e736dbe13f..94e07b67a8 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", - "@typescript-eslint/eslint-plugin": "^5.59.9", + "@typescript-eslint/eslint-plugin": "^5.60.1", "@typescript-eslint/parser": "^5.60.1", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", From 1fa51b16805c47ed4cec9f9894d4556bb2b90ef6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 11:04:04 +0200 Subject: [PATCH 099/123] Bump @typescript-eslint/parser from 5.60.1 to 5.61.0 in /cli-tests (#2348) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.60.1 to 5.61.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.61.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 88 ++++++++++++++++++++++++++++++++++--- cli-tests/package.json | 2 +- 2 files changed, 82 insertions(+), 8 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 3de0541299..da7d278197 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -21,7 +21,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", + "@typescript-eslint/parser": "^5.61.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", @@ -295,14 +295,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.60.1.tgz", - "integrity": "sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.61.0.tgz", + "integrity": "sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/scope-manager": "5.61.0", + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/typescript-estree": "5.61.0", "debug": "^4.3.4" }, "engines": { @@ -321,6 +321,80 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz", + "integrity": "sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/visitor-keys": "5.61.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", + "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", + "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/visitor-keys": "5.61.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz", + "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.61.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.60.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index 94e07b67a8..a7bc46c184 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -25,7 +25,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.60.1", - "@typescript-eslint/parser": "^5.60.1", + "@typescript-eslint/parser": "^5.61.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", From 69a9d727bd3da7f07d41ce33c8ff7032cb82c1fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 09:17:04 +0000 Subject: [PATCH 100/123] Bump @typescript-eslint/eslint-plugin in /cli-tests (#2347) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.60.1 to 5.61.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.61.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 144 ++++++++---------------------------- cli-tests/package.json | 2 +- 2 files changed, 33 insertions(+), 113 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index da7d278197..10a7097207 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -20,7 +20,7 @@ "devDependencies": { "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", - "@typescript-eslint/eslint-plugin": "^5.60.1", + "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", @@ -261,17 +261,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.1.tgz", - "integrity": "sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz", + "integrity": "sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/type-utils": "5.60.1", - "@typescript-eslint/utils": "5.60.1", + "@typescript-eslint/scope-manager": "5.61.0", + "@typescript-eslint/type-utils": "5.61.0", + "@typescript-eslint/utils": "5.61.0", "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", "semver": "^7.3.7", @@ -321,7 +321,7 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "5.61.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz", "integrity": "sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==", @@ -338,88 +338,14 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", - "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", - "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/visitor-keys": "5.61.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz", - "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.61.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.1.tgz", - "integrity": "sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.1.tgz", - "integrity": "sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz", + "integrity": "sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.60.1", - "@typescript-eslint/utils": "5.60.1", + "@typescript-eslint/typescript-estree": "5.61.0", + "@typescript-eslint/utils": "5.61.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -440,9 +366,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.1.tgz", - "integrity": "sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.61.0.tgz", + "integrity": "sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -453,13 +379,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.1.tgz", - "integrity": "sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz", + "integrity": "sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/visitor-keys": "5.60.1", + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/visitor-keys": "5.61.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -480,17 +406,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.1.tgz", - "integrity": "sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.61.0.tgz", + "integrity": "sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.60.1", - "@typescript-eslint/types": "5.60.1", - "@typescript-eslint/typescript-estree": "5.60.1", + "@typescript-eslint/scope-manager": "5.61.0", + "@typescript-eslint/types": "5.61.0", + "@typescript-eslint/typescript-estree": "5.61.0", "eslint-scope": "^5.1.1", "semver": "^7.3.7" }, @@ -506,12 +432,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.60.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.1.tgz", - "integrity": "sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==", + "version": "5.61.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz", + "integrity": "sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.60.1", + "@typescript-eslint/types": "5.61.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -1521,12 +1447,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index a7bc46c184..89b5b680a2 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", - "@typescript-eslint/eslint-plugin": "^5.60.1", + "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", From ee5b957d002cbcce27d6e8016e2690dd1ea32797 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 11:07:03 +0200 Subject: [PATCH 101/123] Bump golang.org/x/sys from 0.9.0 to 0.10.0 (#2352) Bumps [golang.org/x/sys](https://github.com/golang/sys) from 0.9.0 to 0.10.0. - [Commits](https://github.com/golang/sys/compare/v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: golang.org/x/sys dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 360c074f3c..31dde070c5 100644 --- a/go.mod +++ b/go.mod @@ -76,7 +76,7 @@ require ( go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.10.0 golang.org/x/sync v0.3.0 - golang.org/x/sys v0.9.0 + golang.org/x/sys v0.10.0 golang.org/x/text v0.10.0 golang.org/x/tools v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc diff --git a/go.sum b/go.sum index 2c6481c27d..0b14e38d85 100644 --- a/go.sum +++ b/go.sum @@ -1002,8 +1002,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 296e155d05b5c32ce1f693554d4191a6ed659a5a Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Wed, 5 Jul 2023 14:16:01 +0300 Subject: [PATCH 102/123] PMM-12288 fix devcontainer build and tests (#2350) * PMM-12288 import proper packages to EL9 PMM-12288 add perl-Font-TTF package PMM-12288 fix bad dnf param name PMM-12288 do not install dh-autoreconf PMM-12288 fix passing go version to gimme PMM-12288 fix "list known go versions" command PMM-12288 remove the command PMM-12288 try go version PMM-12288 fix conversion to string * PMM-12288 do not run repolist * PMM-12288 do not run setup since failing * PMM-12288 mark directory as safe for git * PMM-12288 leverage the workdir set in Dockerfile * PMM-12288 fix the logs tests * PMM-12288 add a TODO to fix setup() --- .devcontainer/setup.py | 27 ++++++++------------ .github/workflows/managed.yml | 31 +++++++++++++---------- devcontainer.Dockerfile | 6 ++--- managed/services/supervisord/logs_test.go | 5 ++++ 4 files changed, 36 insertions(+), 33 deletions(-) diff --git a/.devcontainer/setup.py b/.devcontainer/setup.py index 829c77fb85..f57267ac07 100755 --- a/.devcontainer/setup.py +++ b/.devcontainer/setup.py @@ -1,8 +1,7 @@ -#!/usr/bin/python2 +#!/usr/bin/python3 # See CONTRIBUTING.md. -from __future__ import print_function, unicode_literals import os import subprocess import time @@ -10,7 +9,7 @@ GO_VERSION = os.getenv("GO_VERSION") if GO_VERSION is None: - raise "GO_VERSION is not set" + raise RuntimeError("GO_VERSION is not set") def run_commands(commands): @@ -25,21 +24,16 @@ def install_packages(): """Installs required and useful RPM packages.""" run_commands([ - # to install man pages - "sed -i '/nodocs/d' /etc/yum.conf", - - # reinstall with man pages - "yum reinstall -y yum rpm", - - "yum install -y gcc git make pkgconfig glibc-static \ + "dnf install -y gcc git make pkgconfig \ vim \ - ansible-lint \ mc tmux psmisc lsof which iproute \ - bash-completion bash-completion-extras \ + bash-completion \ man man-pages \ - dh-autoreconf \ openssl-devel \ - wget" + wget", + + "dnf install -y ansible-lint glibc-static --enablerepo=ol9_codeready_builder" + ]) @@ -51,7 +45,7 @@ def install_go(): "chmod +x /usr/local/bin/gimme" ]) - go_version = str(subprocess.check_output("gimme -r " + GO_VERSION, shell=True).strip()) + go_version = str(subprocess.check_output("gimme -r " + GO_VERSION, shell=True).strip().decode()) if GO_VERSION == "tip": run_commands([ @@ -105,7 +99,8 @@ def main(): make_init() # do basic setup - setup() + # TODO: fix the setup and revert + # setup() MARKER = "/tmp/devcontainer-setup-done" diff --git a/.github/workflows/managed.yml b/.github/workflows/managed.yml index 6f2e87e0af..fcb0678b44 100644 --- a/.github/workflows/managed.yml +++ b/.github/workflows/managed.yml @@ -9,14 +9,14 @@ on: pull_request: paths-ignore: - - "admin/**" - - "agent/**" - - "api-tests/**" - - "cli-tests/**" - - "docs/**" - - "qan-api2/**" - - "update/**" - - "vmproxy/**" + - 'admin/**' + - 'agent/**' + - 'api-tests/**' + - 'cli-tests/**' + - 'docs/**' + - 'qan-api2/**' + - 'update/**' + - 'vmproxy/**' jobs: test: @@ -63,7 +63,7 @@ jobs: popd && go mod download -x - name: Initialize CI environment - run: make env-compose-up + run: make env-compose-up # the container workdir is /root/go/src/github.com/percona/pmm - name: Restore Go build cache if: ${{ fromJSON(env.DEVCONTAINER_CACHE_ENABLED) }} @@ -75,14 +75,17 @@ jobs: continue-on-error: true run: docker cp ~/go/pkg/mod pmm-server:/root/go/pkg/mod + - name: Mark the root directory of pmm as safe + run: docker exec -i pmm-server git config --global --add safe.directory /root/go/src/github.com/percona/pmm + - name: Update binaries - run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm pmm-server make run-managed-ci run-agent run-vmproxy + run: docker exec -i pmm-server make run-managed-ci run-agent run-vmproxy - name: Run tests - run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm/managed pmm-server make test-cover + run: docker exec -i pmm-server make -C managed test-cover - name: Run PMM server update test - run: docker exec -i --workdir=/root/go/src/github.com/percona/pmm/managed pmm-server make test-update + run: docker exec -i pmm-server make -C managed test-update - name: Upload coverage results uses: codecov/codecov-action@v3 @@ -96,7 +99,7 @@ jobs: if: ${{ fromJSON(env.DEVCONTAINER_CACHE_ENABLED) }} run: | docker exec pmm-server go clean -testcache - docker exec --workdir=/root/go/src/github.com/percona/pmm/managed pmm-server find . -type d -name fuzzdata -exec rm -r {} + + docker exec pmm-server find ./managed -type d -name fuzzdata -exec rm -r {} + rm -fr ~/.cache/go-build mkdir -p ~/.cache docker cp pmm-server:/root/.cache/go-build ~/.cache/go-build @@ -109,4 +112,4 @@ jobs: go env pwd git status - kubectl version + kubectl version --short --output json diff --git a/devcontainer.Dockerfile b/devcontainer.Dockerfile index 8c0addb822..03b258502e 100644 --- a/devcontainer.Dockerfile +++ b/devcontainer.Dockerfile @@ -4,9 +4,9 @@ FROM $PMM_SERVER_IMAGE ARG PMM_SERVER_IMAGE ARG GO_VERSION="1.20.x" -RUN echo "Building with: GO: ${GO_VERSION}, PMM: ${PMM_SERVER_IMAGE}" && \ - export GOPATH=$(go env GOPATH) && \ - export PATH="${GOPATH}/bin:${PATH}" +RUN echo "Building with: GO: $GO_VERSION, PMM: $PMM_SERVER_IMAGE" +ENV GOPATH=/root/go +ENV PATH="$PATH:$GOPATH/bin" RUN mkdir -p $GOPATH/src/github.com/percona/pmm WORKDIR $GOPATH/src/github.com/percona/pmm diff --git a/managed/services/supervisord/logs_test.go b/managed/services/supervisord/logs_test.go index 18742b8cee..ceed32cc9d 100644 --- a/managed/services/supervisord/logs_test.go +++ b/managed/services/supervisord/logs_test.go @@ -173,6 +173,11 @@ func TestFiles(t *testing.T) { continue } + if f.Name == "supervisorctl_status.log" { + // FIXME: this fails following the transition to EL9 + continue + } + assert.NoError(t, f.Err, "name = %q", f.Name) actual = append(actual, f.Name) From 5e7fc285aeb994e685efde4da219d0a4826f561c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 20:42:12 +0300 Subject: [PATCH 103/123] Bump golang.org/x/text from 0.10.0 to 0.11.0 (#2351) Bumps [golang.org/x/text](https://github.com/golang/text) from 0.10.0 to 0.11.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 31dde070c5..00b398ac44 100644 --- a/go.mod +++ b/go.mod @@ -77,7 +77,7 @@ require ( golang.org/x/crypto v0.10.0 golang.org/x/sync v0.3.0 golang.org/x/sys v0.10.0 - golang.org/x/text v0.10.0 + golang.org/x/text v0.11.0 golang.org/x/tools v0.10.0 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc diff --git a/go.sum b/go.sum index 0b14e38d85..0cb32305c4 100644 --- a/go.sum +++ b/go.sum @@ -1021,8 +1021,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 393d2bf385344477a5e6c5fa589cfb900fc2b1bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 11:18:03 +0200 Subject: [PATCH 104/123] Bump github.com/brianvoe/gofakeit/v6 from 6.22.0 to 6.23.0 (#2356) Bumps [github.com/brianvoe/gofakeit/v6](https://github.com/brianvoe/gofakeit) from 6.22.0 to 6.23.0. - [Release notes](https://github.com/brianvoe/gofakeit/releases) - [Commits](https://github.com/brianvoe/gofakeit/compare/v6.22.0...v6.23.0) --- updated-dependencies: - dependency-name: github.com/brianvoe/gofakeit/v6 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 00b398ac44..64a5e21aac 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/aws/aws-sdk-go v1.44.273 github.com/blang/semver v3.5.1+incompatible - github.com/brianvoe/gofakeit/v6 v6.22.0 + github.com/brianvoe/gofakeit/v6 v6.23.0 github.com/charmbracelet/bubbles v0.15.0 github.com/charmbracelet/bubbletea v0.24.0 github.com/charmbracelet/lipgloss v0.7.1 diff --git a/go.sum b/go.sum index 0cb32305c4..d47b24e03e 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/brianvoe/gofakeit v3.18.0+incompatible h1:wDOmHc9DLG4nRjUVVaxA+CEglKOW72Y5+4WNxUIkjM8= github.com/brianvoe/gofakeit v3.18.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= -github.com/brianvoe/gofakeit/v6 v6.22.0 h1:BzOsDot1o3cufTfOk+fWKE9nFYojyDV+XHdCWL2+uyE= -github.com/brianvoe/gofakeit/v6 v6.22.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= +github.com/brianvoe/gofakeit/v6 v6.23.0 h1:pgVhyWpYq4e0GEVCh2gdZnS/nBX+8SnyTBliHg5xjks= +github.com/brianvoe/gofakeit/v6 v6.23.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4= github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= From 1fbf3246fa95b4b8ffaf957f054f20a9c6d6944f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 11:48:20 +0200 Subject: [PATCH 105/123] Bump golang.org/x/tools from 0.10.0 to 0.11.0 (#2353) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.10.0 to 0.11.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 64a5e21aac..8bd0f6eb45 100644 --- a/go.mod +++ b/go.mod @@ -74,11 +74,11 @@ require ( github.com/stretchr/testify v1.8.4 go.mongodb.org/mongo-driver v1.12.0 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.10.0 + golang.org/x/crypto v0.11.0 golang.org/x/sync v0.3.0 golang.org/x/sys v0.10.0 golang.org/x/text v0.11.0 - golang.org/x/tools v0.10.0 + golang.org/x/tools v0.11.0 google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc google.golang.org/grpc v1.57.0-dev @@ -251,10 +251,10 @@ require ( github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect - golang.org/x/mod v0.11.0 // indirect - golang.org/x/net v0.11.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/term v0.9.0 // indirect + golang.org/x/term v0.10.0 // indirect google.golang.org/appengine v1.6.7 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gotest.tools/v3 v3.3.0 // indirect diff --git a/go.sum b/go.sum index d47b24e03e..c8c54a3d62 100644 --- a/go.sum +++ b/go.sum @@ -875,8 +875,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -917,8 +917,8 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1007,8 +1007,8 @@ golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1083,8 +1083,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From ef6f300aba1b423ab55a8521c672f3458db002a8 Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Fri, 7 Jul 2023 15:24:14 +0300 Subject: [PATCH 106/123] PMM-12299 fix node_helpers_test.go (#2357) * PMM-12299 fix node_helpers_test.go * Update logs_test.go --- managed/models/node_helpers_test.go | 2 +- managed/services/supervisord/logs_test.go | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/managed/models/node_helpers_test.go b/managed/models/node_helpers_test.go index 2f858d40f6..e0873a93cf 100644 --- a/managed/models/node_helpers_test.go +++ b/managed/models/node_helpers_test.go @@ -132,7 +132,7 @@ func TestNodeHelpers(t *testing.T) { }) assert.NoError(t, err) - structs, err := q.SelectAllFrom(models.NodeTable, "WHERE machine_id = $1 ORDER BY node_id DESC", machineID) + structs, err := q.SelectAllFrom(models.NodeTable, "WHERE machine_id = $1 ORDER BY node_id", machineID) require.NoError(t, err) require.Len(t, structs, 2) expected := &models.Node{ diff --git a/managed/services/supervisord/logs_test.go b/managed/services/supervisord/logs_test.go index ceed32cc9d..6b08395487 100644 --- a/managed/services/supervisord/logs_test.go +++ b/managed/services/supervisord/logs_test.go @@ -55,7 +55,6 @@ var commonExpectedFiles = []string{ "postgresql14.log", "qan-api2.ini", "qan-api2.log", - "supervisorctl_status.log", "supervisord.conf", "supervisord.log", "victoriametrics-promscrape.yml", From 935237026c49e7f49298f3f346d7fffadbd5beb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 12:39:07 +0000 Subject: [PATCH 107/123] Bump golang.org/x/tools from 0.10.0 to 0.11.0 in /tools (#2354) Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.10.0 to 0.11.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 14 +++++++------- tools/go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 8219ee2346..29594c1546 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -22,7 +22,7 @@ require ( github.com/vburenin/ifacemaker v1.2.1 github.com/vektra/mockery/v2 v2.30.16 golang.org/x/perf v0.0.0-20211012211434-03971e389cd3 - golang.org/x/tools v0.10.0 + golang.org/x/tools v0.11.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 google.golang.org/protobuf v1.31.0 gopkg.in/reform.v1 v1.5.1 @@ -182,15 +182,15 @@ require ( go.uber.org/zap v1.24.0 // indirect golang.org/x/arch v0.0.0-20190927153633-4e8777c89be4 // indirect golang.org/x/build v0.0.0-20200616162219-07bebbe343e9 // indirect - golang.org/x/crypto v0.10.0 // indirect + golang.org/x/crypto v0.11.0 // indirect golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect - golang.org/x/mod v0.11.0 // indirect - golang.org/x/net v0.11.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.9.0 // indirect - golang.org/x/term v0.9.0 // indirect - golang.org/x/text v0.10.0 // indirect + golang.org/x/sys v0.10.0 // indirect + golang.org/x/term v0.10.0 // indirect + golang.org/x/text v0.11.0 // indirect golang.org/x/time v0.1.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.114.0 // indirect diff --git a/tools/go.sum b/tools/go.sum index 4cffd9135b..c10eaec186 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -778,8 +778,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -817,8 +817,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -861,8 +861,8 @@ golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220517181318-183a9ca12b87/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20170207211851-4464e7848382/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -956,13 +956,13 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -972,8 +972,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1041,8 +1041,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 30dc25bd048d66abb122a18a1fcdbc72be63e9d8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 08:44:52 +0000 Subject: [PATCH 108/123] Bump github.com/vektra/mockery/v2 from 2.30.16 to 2.31.1 in /tools (#2358) * Bump github.com/vektra/mockery/v2 from 2.30.16 to 2.31.1 in /tools Bumps [github.com/vektra/mockery/v2](https://github.com/vektra/mockery) from 2.30.16 to 2.31.1. - [Release notes](https://github.com/vektra/mockery/releases) - [Changelog](https://github.com/vektra/mockery/blob/master/docs/changelog.md) - [Commits](https://github.com/vektra/mockery/compare/v2.30.16...v2.31.1) --- updated-dependencies: - dependency-name: github.com/vektra/mockery/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * regenerate files --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: michael.okoko --- admin/commands/pmm/server/docker/mock_functions_test.go | 2 +- agent/agentlocal/mock_client_test.go | 2 +- agent/agentlocal/mock_supervisor_test.go | 2 +- agent/client/mock_connection_checker_test.go | 2 +- agent/client/mock_supervisor_test.go | 2 +- agent/versioner/mock_exec_functions_test.go | 2 +- managed/services/backup/mock_agent_service_test.go | 2 +- managed/services/backup/mock_compatibility_service_test.go | 2 +- managed/services/backup/mock_jobs_service_test.go | 2 +- managed/services/backup/mock_pbm_pitr_service_test.go | 2 +- managed/services/backup/mock_removal_service_test.go | 2 +- managed/services/backup/mock_storage_test.go | 2 +- managed/services/backup/mock_versioner_test.go | 2 +- managed/services/checks/mock_agents_registry_test.go | 2 +- managed/services/checks/mock_alertmanager_service_test.go | 2 +- .../dbaas/kubernetes/client/mock_kube_client_connector.go | 2 +- managed/services/grafana/mock_aws_instance_checker_test.go | 2 +- managed/services/inventory/mock_agent_service_test.go | 2 +- managed/services/inventory/mock_agents_registry_test.go | 2 +- managed/services/inventory/mock_agents_state_updater_test.go | 2 +- managed/services/inventory/mock_connection_checker_test.go | 2 +- managed/services/inventory/mock_inventory_metrics_test.go | 2 +- managed/services/inventory/mock_prometheus_service_test.go | 2 +- managed/services/inventory/mock_version_cache_test.go | 2 +- .../services/management/alerting/mock_grafana_client_test.go | 2 +- managed/services/management/backup/mock_aws_s3_test.go | 2 +- .../services/management/backup/mock_backup_service_test.go | 2 +- .../services/management/backup/mock_pbm_pitr_service_test.go | 2 +- .../services/management/backup/mock_removal_service_test.go | 2 +- .../services/management/backup/mock_schedule_service_test.go | 2 +- .../services/management/dbaas/mock_components_service_test.go | 2 +- managed/services/management/dbaas/mock_dbaas_client_test.go | 2 +- managed/services/management/dbaas/mock_grafana_client_test.go | 2 +- .../management/dbaas/mock_kube_storage_manager_test.go | 2 +- .../services/management/dbaas/mock_kubernetes_client_test.go | 2 +- .../services/management/dbaas/mock_version_service_test.go | 2 +- managed/services/management/ia/mock_alert_manager_test.go | 2 +- managed/services/management/ia/mock_templates_service_test.go | 2 +- managed/services/management/ia/mock_vm_alert_test.go | 2 +- managed/services/management/mock_agents_registry_test.go | 2 +- managed/services/management/mock_agents_state_updater_test.go | 2 +- managed/services/management/mock_api_key_provider_test.go | 2 +- managed/services/management/mock_checks_service_test.go | 2 +- managed/services/management/mock_connection_checker_test.go | 2 +- managed/services/management/mock_grafana_client_test.go | 2 +- managed/services/management/mock_jobs_service_test.go | 2 +- managed/services/management/mock_prometheus_service_test.go | 2 +- managed/services/management/mock_version_cache_test.go | 2 +- .../services/management/mock_victoria_metrics_client_test.go | 2 +- managed/services/qan/mock_qan_collector_client_test.go | 2 +- managed/services/scheduler/mock_backup_service_test.go | 2 +- managed/services/server/mock_agents_state_updater_test.go | 2 +- managed/services/server/mock_alertmanager_service_test.go | 2 +- managed/services/server/mock_checks_service_test.go | 2 +- managed/services/server/mock_emailer_test.go | 2 +- managed/services/server/mock_grafana_client_test.go | 2 +- managed/services/server/mock_prometheus_service_test.go | 2 +- managed/services/server/mock_rules_service_test.go | 2 +- managed/services/server/mock_supervisord_service_test.go | 2 +- managed/services/server/mock_telemetry_service_test.go | 2 +- managed/services/server/mock_templates_service_test.go | 2 +- managed/services/server/mock_vm_alert_external_rules_test.go | 2 +- managed/services/telemetry/mock_data_source_locator_test.go | 2 +- managed/services/telemetry/mock_data_source_test.go | 2 +- .../services/telemetry/mock_distribution_util_service_test.go | 2 +- managed/services/telemetry/mock_sender_test.go | 2 +- managed/services/versioncache/mock_versioner_test.go | 2 +- tools/go.mod | 2 +- tools/go.sum | 4 ++-- 69 files changed, 70 insertions(+), 70 deletions(-) diff --git a/admin/commands/pmm/server/docker/mock_functions_test.go b/admin/commands/pmm/server/docker/mock_functions_test.go index 8841c6a2d8..33a758f7fb 100644 --- a/admin/commands/pmm/server/docker/mock_functions_test.go +++ b/admin/commands/pmm/server/docker/mock_functions_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package docker diff --git a/agent/agentlocal/mock_client_test.go b/agent/agentlocal/mock_client_test.go index bbb4506d1c..2e28a6d57f 100644 --- a/agent/agentlocal/mock_client_test.go +++ b/agent/agentlocal/mock_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package agentlocal diff --git a/agent/agentlocal/mock_supervisor_test.go b/agent/agentlocal/mock_supervisor_test.go index 442d1b4994..391ac4e3d6 100644 --- a/agent/agentlocal/mock_supervisor_test.go +++ b/agent/agentlocal/mock_supervisor_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package agentlocal diff --git a/agent/client/mock_connection_checker_test.go b/agent/client/mock_connection_checker_test.go index c1369d5718..30b513c41c 100644 --- a/agent/client/mock_connection_checker_test.go +++ b/agent/client/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package client diff --git a/agent/client/mock_supervisor_test.go b/agent/client/mock_supervisor_test.go index 84c02b68a1..fa4c9fcfac 100644 --- a/agent/client/mock_supervisor_test.go +++ b/agent/client/mock_supervisor_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package client diff --git a/agent/versioner/mock_exec_functions_test.go b/agent/versioner/mock_exec_functions_test.go index cef0d3136a..43fcbe96aa 100644 --- a/agent/versioner/mock_exec_functions_test.go +++ b/agent/versioner/mock_exec_functions_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package versioner diff --git a/managed/services/backup/mock_agent_service_test.go b/managed/services/backup/mock_agent_service_test.go index 3be56de1ac..96982d92a0 100644 --- a/managed/services/backup/mock_agent_service_test.go +++ b/managed/services/backup/mock_agent_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_compatibility_service_test.go b/managed/services/backup/mock_compatibility_service_test.go index e0cf6b26df..48b021694e 100644 --- a/managed/services/backup/mock_compatibility_service_test.go +++ b/managed/services/backup/mock_compatibility_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_jobs_service_test.go b/managed/services/backup/mock_jobs_service_test.go index b85845eb81..f41b04b9de 100644 --- a/managed/services/backup/mock_jobs_service_test.go +++ b/managed/services/backup/mock_jobs_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_pbm_pitr_service_test.go b/managed/services/backup/mock_pbm_pitr_service_test.go index b9a9bd71dd..e651ac89d0 100644 --- a/managed/services/backup/mock_pbm_pitr_service_test.go +++ b/managed/services/backup/mock_pbm_pitr_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_removal_service_test.go b/managed/services/backup/mock_removal_service_test.go index 8fcd7e6ef4..648df77f1a 100644 --- a/managed/services/backup/mock_removal_service_test.go +++ b/managed/services/backup/mock_removal_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_storage_test.go b/managed/services/backup/mock_storage_test.go index 699052bd20..05d4040ded 100644 --- a/managed/services/backup/mock_storage_test.go +++ b/managed/services/backup/mock_storage_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_versioner_test.go b/managed/services/backup/mock_versioner_test.go index 10830471f6..f7dda0d3c2 100644 --- a/managed/services/backup/mock_versioner_test.go +++ b/managed/services/backup/mock_versioner_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/checks/mock_agents_registry_test.go b/managed/services/checks/mock_agents_registry_test.go index 4783d9703e..6cdac8ca21 100644 --- a/managed/services/checks/mock_agents_registry_test.go +++ b/managed/services/checks/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package checks diff --git a/managed/services/checks/mock_alertmanager_service_test.go b/managed/services/checks/mock_alertmanager_service_test.go index 0b3c450ce2..2e7a73cb48 100644 --- a/managed/services/checks/mock_alertmanager_service_test.go +++ b/managed/services/checks/mock_alertmanager_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package checks diff --git a/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go b/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go index cc28b426e8..277706c04b 100644 --- a/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go +++ b/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package client diff --git a/managed/services/grafana/mock_aws_instance_checker_test.go b/managed/services/grafana/mock_aws_instance_checker_test.go index c9e02a0897..a5610be6f9 100644 --- a/managed/services/grafana/mock_aws_instance_checker_test.go +++ b/managed/services/grafana/mock_aws_instance_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package grafana diff --git a/managed/services/inventory/mock_agent_service_test.go b/managed/services/inventory/mock_agent_service_test.go index e5cb5c31a8..0beab14e2a 100644 --- a/managed/services/inventory/mock_agent_service_test.go +++ b/managed/services/inventory/mock_agent_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_agents_registry_test.go b/managed/services/inventory/mock_agents_registry_test.go index 17d3609ad1..5d5fb6df11 100644 --- a/managed/services/inventory/mock_agents_registry_test.go +++ b/managed/services/inventory/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_agents_state_updater_test.go b/managed/services/inventory/mock_agents_state_updater_test.go index a073d3ee25..a617a335ed 100644 --- a/managed/services/inventory/mock_agents_state_updater_test.go +++ b/managed/services/inventory/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_connection_checker_test.go b/managed/services/inventory/mock_connection_checker_test.go index fca0ffe2da..c9dc2753d7 100644 --- a/managed/services/inventory/mock_connection_checker_test.go +++ b/managed/services/inventory/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_inventory_metrics_test.go b/managed/services/inventory/mock_inventory_metrics_test.go index 55e461e1cb..b362248066 100644 --- a/managed/services/inventory/mock_inventory_metrics_test.go +++ b/managed/services/inventory/mock_inventory_metrics_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_prometheus_service_test.go b/managed/services/inventory/mock_prometheus_service_test.go index 03d2770440..78fc810318 100644 --- a/managed/services/inventory/mock_prometheus_service_test.go +++ b/managed/services/inventory/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_version_cache_test.go b/managed/services/inventory/mock_version_cache_test.go index 141a110d5f..afb59c5704 100644 --- a/managed/services/inventory/mock_version_cache_test.go +++ b/managed/services/inventory/mock_version_cache_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package inventory diff --git a/managed/services/management/alerting/mock_grafana_client_test.go b/managed/services/management/alerting/mock_grafana_client_test.go index 917915019c..8b8d24a255 100644 --- a/managed/services/management/alerting/mock_grafana_client_test.go +++ b/managed/services/management/alerting/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package alerting diff --git a/managed/services/management/backup/mock_aws_s3_test.go b/managed/services/management/backup/mock_aws_s3_test.go index 967f65a60a..f2383ac9cf 100644 --- a/managed/services/management/backup/mock_aws_s3_test.go +++ b/managed/services/management/backup/mock_aws_s3_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_backup_service_test.go b/managed/services/management/backup/mock_backup_service_test.go index e48d837367..20aaf30f5a 100644 --- a/managed/services/management/backup/mock_backup_service_test.go +++ b/managed/services/management/backup/mock_backup_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_pbm_pitr_service_test.go b/managed/services/management/backup/mock_pbm_pitr_service_test.go index 0200781289..87f7361021 100644 --- a/managed/services/management/backup/mock_pbm_pitr_service_test.go +++ b/managed/services/management/backup/mock_pbm_pitr_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_removal_service_test.go b/managed/services/management/backup/mock_removal_service_test.go index 220e042193..05cbd1d4e8 100644 --- a/managed/services/management/backup/mock_removal_service_test.go +++ b/managed/services/management/backup/mock_removal_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_schedule_service_test.go b/managed/services/management/backup/mock_schedule_service_test.go index 21c17c231b..96c6c60ae8 100644 --- a/managed/services/management/backup/mock_schedule_service_test.go +++ b/managed/services/management/backup/mock_schedule_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package backup diff --git a/managed/services/management/dbaas/mock_components_service_test.go b/managed/services/management/dbaas/mock_components_service_test.go index 4e8c1662a6..e1ebc14e34 100644 --- a/managed/services/management/dbaas/mock_components_service_test.go +++ b/managed/services/management/dbaas/mock_components_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_dbaas_client_test.go b/managed/services/management/dbaas/mock_dbaas_client_test.go index 6908f7c2c4..5360258285 100644 --- a/managed/services/management/dbaas/mock_dbaas_client_test.go +++ b/managed/services/management/dbaas/mock_dbaas_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_grafana_client_test.go b/managed/services/management/dbaas/mock_grafana_client_test.go index c74aa84637..036d0b88f1 100644 --- a/managed/services/management/dbaas/mock_grafana_client_test.go +++ b/managed/services/management/dbaas/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_kube_storage_manager_test.go b/managed/services/management/dbaas/mock_kube_storage_manager_test.go index e5f2f146a1..a8c45fea40 100644 --- a/managed/services/management/dbaas/mock_kube_storage_manager_test.go +++ b/managed/services/management/dbaas/mock_kube_storage_manager_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_kubernetes_client_test.go b/managed/services/management/dbaas/mock_kubernetes_client_test.go index 2dd1b630f0..af41675b0d 100644 --- a/managed/services/management/dbaas/mock_kubernetes_client_test.go +++ b/managed/services/management/dbaas/mock_kubernetes_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_version_service_test.go b/managed/services/management/dbaas/mock_version_service_test.go index b5da686a14..b2cd7ced8a 100644 --- a/managed/services/management/dbaas/mock_version_service_test.go +++ b/managed/services/management/dbaas/mock_version_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package dbaas diff --git a/managed/services/management/ia/mock_alert_manager_test.go b/managed/services/management/ia/mock_alert_manager_test.go index 807ea6bb70..a4362abf81 100644 --- a/managed/services/management/ia/mock_alert_manager_test.go +++ b/managed/services/management/ia/mock_alert_manager_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package ia diff --git a/managed/services/management/ia/mock_templates_service_test.go b/managed/services/management/ia/mock_templates_service_test.go index fd979a674c..7c2d84baed 100644 --- a/managed/services/management/ia/mock_templates_service_test.go +++ b/managed/services/management/ia/mock_templates_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package ia diff --git a/managed/services/management/ia/mock_vm_alert_test.go b/managed/services/management/ia/mock_vm_alert_test.go index f4d881db5e..5ceeb81d4c 100644 --- a/managed/services/management/ia/mock_vm_alert_test.go +++ b/managed/services/management/ia/mock_vm_alert_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package ia diff --git a/managed/services/management/mock_agents_registry_test.go b/managed/services/management/mock_agents_registry_test.go index 0dbb0951da..56d566754a 100644 --- a/managed/services/management/mock_agents_registry_test.go +++ b/managed/services/management/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_agents_state_updater_test.go b/managed/services/management/mock_agents_state_updater_test.go index ce3b259251..74a886633b 100644 --- a/managed/services/management/mock_agents_state_updater_test.go +++ b/managed/services/management/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_api_key_provider_test.go b/managed/services/management/mock_api_key_provider_test.go index 212d9665c4..a7ea7ec4f0 100644 --- a/managed/services/management/mock_api_key_provider_test.go +++ b/managed/services/management/mock_api_key_provider_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_checks_service_test.go b/managed/services/management/mock_checks_service_test.go index b8e56ad71e..13eb38c3e4 100644 --- a/managed/services/management/mock_checks_service_test.go +++ b/managed/services/management/mock_checks_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_connection_checker_test.go b/managed/services/management/mock_connection_checker_test.go index fba5fbe20e..e7634558b2 100644 --- a/managed/services/management/mock_connection_checker_test.go +++ b/managed/services/management/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_grafana_client_test.go b/managed/services/management/mock_grafana_client_test.go index 47f47484f8..7eb1b09c64 100644 --- a/managed/services/management/mock_grafana_client_test.go +++ b/managed/services/management/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_jobs_service_test.go b/managed/services/management/mock_jobs_service_test.go index 22e2e7baf3..9a75bfdb8f 100644 --- a/managed/services/management/mock_jobs_service_test.go +++ b/managed/services/management/mock_jobs_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_prometheus_service_test.go b/managed/services/management/mock_prometheus_service_test.go index 2c7ae426f1..84a3e8de16 100644 --- a/managed/services/management/mock_prometheus_service_test.go +++ b/managed/services/management/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_version_cache_test.go b/managed/services/management/mock_version_cache_test.go index 55b49d89ed..e415f3b525 100644 --- a/managed/services/management/mock_version_cache_test.go +++ b/managed/services/management/mock_version_cache_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/management/mock_victoria_metrics_client_test.go b/managed/services/management/mock_victoria_metrics_client_test.go index 3a9733f06b..42eaddd779 100644 --- a/managed/services/management/mock_victoria_metrics_client_test.go +++ b/managed/services/management/mock_victoria_metrics_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package management diff --git a/managed/services/qan/mock_qan_collector_client_test.go b/managed/services/qan/mock_qan_collector_client_test.go index d865ccac66..d98d8b3c51 100644 --- a/managed/services/qan/mock_qan_collector_client_test.go +++ b/managed/services/qan/mock_qan_collector_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package qan diff --git a/managed/services/scheduler/mock_backup_service_test.go b/managed/services/scheduler/mock_backup_service_test.go index ca8449ad96..985408568d 100644 --- a/managed/services/scheduler/mock_backup_service_test.go +++ b/managed/services/scheduler/mock_backup_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package scheduler diff --git a/managed/services/server/mock_agents_state_updater_test.go b/managed/services/server/mock_agents_state_updater_test.go index f898983cf7..0e64360495 100644 --- a/managed/services/server/mock_agents_state_updater_test.go +++ b/managed/services/server/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_alertmanager_service_test.go b/managed/services/server/mock_alertmanager_service_test.go index dccb8a57ac..6bb226186a 100644 --- a/managed/services/server/mock_alertmanager_service_test.go +++ b/managed/services/server/mock_alertmanager_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_checks_service_test.go b/managed/services/server/mock_checks_service_test.go index 495e30987d..5697c93f5b 100644 --- a/managed/services/server/mock_checks_service_test.go +++ b/managed/services/server/mock_checks_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_emailer_test.go b/managed/services/server/mock_emailer_test.go index fd81326cba..59332ff8b4 100644 --- a/managed/services/server/mock_emailer_test.go +++ b/managed/services/server/mock_emailer_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_grafana_client_test.go b/managed/services/server/mock_grafana_client_test.go index 2c817be76d..b1de2d7b54 100644 --- a/managed/services/server/mock_grafana_client_test.go +++ b/managed/services/server/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_prometheus_service_test.go b/managed/services/server/mock_prometheus_service_test.go index e4282703be..fe65123817 100644 --- a/managed/services/server/mock_prometheus_service_test.go +++ b/managed/services/server/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_rules_service_test.go b/managed/services/server/mock_rules_service_test.go index f7774e2a64..1722917880 100644 --- a/managed/services/server/mock_rules_service_test.go +++ b/managed/services/server/mock_rules_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_supervisord_service_test.go b/managed/services/server/mock_supervisord_service_test.go index 8263ddf2a6..a678928e10 100644 --- a/managed/services/server/mock_supervisord_service_test.go +++ b/managed/services/server/mock_supervisord_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_telemetry_service_test.go b/managed/services/server/mock_telemetry_service_test.go index d68973dd3f..1038eab52a 100644 --- a/managed/services/server/mock_telemetry_service_test.go +++ b/managed/services/server/mock_telemetry_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_templates_service_test.go b/managed/services/server/mock_templates_service_test.go index ae6465fa8a..c13ad82b86 100644 --- a/managed/services/server/mock_templates_service_test.go +++ b/managed/services/server/mock_templates_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/server/mock_vm_alert_external_rules_test.go b/managed/services/server/mock_vm_alert_external_rules_test.go index 3c08560357..fb1430d1fd 100644 --- a/managed/services/server/mock_vm_alert_external_rules_test.go +++ b/managed/services/server/mock_vm_alert_external_rules_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package server diff --git a/managed/services/telemetry/mock_data_source_locator_test.go b/managed/services/telemetry/mock_data_source_locator_test.go index 93ec35e84b..2320d1d4d0 100644 --- a/managed/services/telemetry/mock_data_source_locator_test.go +++ b/managed/services/telemetry/mock_data_source_locator_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package telemetry diff --git a/managed/services/telemetry/mock_data_source_test.go b/managed/services/telemetry/mock_data_source_test.go index e31e6a6cd2..3f93901b4a 100644 --- a/managed/services/telemetry/mock_data_source_test.go +++ b/managed/services/telemetry/mock_data_source_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package telemetry diff --git a/managed/services/telemetry/mock_distribution_util_service_test.go b/managed/services/telemetry/mock_distribution_util_service_test.go index 6791db614d..b14b6c1b93 100644 --- a/managed/services/telemetry/mock_distribution_util_service_test.go +++ b/managed/services/telemetry/mock_distribution_util_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package telemetry diff --git a/managed/services/telemetry/mock_sender_test.go b/managed/services/telemetry/mock_sender_test.go index fe335c60cf..f7ecbb51cc 100644 --- a/managed/services/telemetry/mock_sender_test.go +++ b/managed/services/telemetry/mock_sender_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package telemetry diff --git a/managed/services/versioncache/mock_versioner_test.go b/managed/services/versioncache/mock_versioner_test.go index b580c766ed..07cc47497b 100644 --- a/managed/services/versioncache/mock_versioner_test.go +++ b/managed/services/versioncache/mock_versioner_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.30.16. DO NOT EDIT. +// Code generated by mockery v2.31.1. DO NOT EDIT. package versioncache diff --git a/tools/go.mod b/tools/go.mod index 29594c1546..8be23474ed 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -20,7 +20,7 @@ require ( github.com/quasilyte/go-consistent v0.0.0-20200404105227-766526bf1e96 github.com/reviewdog/reviewdog v0.14.1 github.com/vburenin/ifacemaker v1.2.1 - github.com/vektra/mockery/v2 v2.30.16 + github.com/vektra/mockery/v2 v2.31.1 golang.org/x/perf v0.0.0-20211012211434-03971e389cd3 golang.org/x/tools v0.11.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 diff --git a/tools/go.sum b/tools/go.sum index c10eaec186..2a4de2857c 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -705,8 +705,8 @@ github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RV github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vburenin/ifacemaker v1.2.1 h1:3Vq8B/bfBgjWTkv+jDg4dVL1KHt3k1K4lO7XRxYA2sk= github.com/vburenin/ifacemaker v1.2.1/go.mod h1:5WqrzX2aD7/hi+okBjcaEQJMg4lDGrpuEX3B8L4Wgrs= -github.com/vektra/mockery/v2 v2.30.16 h1:XbUaK84eY7Hl/y6JeT7hVaA59Jgo4owlNWWgfL/gCQU= -github.com/vektra/mockery/v2 v2.30.16/go.mod h1:9lREs4VEeQiUS3rizYQx1saxHu2JiIhThP0q9+fDegM= +github.com/vektra/mockery/v2 v2.31.1 h1:dijChwjo9fBFJN9x93R0T2ZENEnYbvCuXHUXn+YYpCI= +github.com/vektra/mockery/v2 v2.31.1/go.mod h1:9lREs4VEeQiUS3rizYQx1saxHu2JiIhThP0q9+fDegM= github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc h1:El7LEavRpa49dYFE9ezO8aQxQn5E7u7eQkFsaXsoQAY= github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc/go.mod h1:MmhrKtbECoUJTctfak+MnOFoJ9XQqYZ7chcwV9O7v3I= github.com/xanzy/go-gitlab v0.63.0 h1:a9fXpKWykUS6dowapFej/2Wjf4aOAEFC1q2ZIcz4IpI= From 09577376eacb31e4bb275f5c3528bafb49d5d12a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 16:40:19 +0200 Subject: [PATCH 109/123] Bump github.com/vektra/mockery/v2 from 2.31.1 to 2.32.0 in /tools (#2364) * Bump github.com/vektra/mockery/v2 from 2.31.1 to 2.32.0 in /tools Bumps [github.com/vektra/mockery/v2](https://github.com/vektra/mockery) from 2.31.1 to 2.32.0. - [Release notes](https://github.com/vektra/mockery/releases) - [Changelog](https://github.com/vektra/mockery/blob/master/docs/changelog.md) - [Commits](https://github.com/vektra/mockery/compare/v2.31.1...v2.32.0) --- updated-dependencies: - dependency-name: github.com/vektra/mockery/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Regenerate mocks --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Artem Gavrilov --- admin/commands/pmm/server/docker/mock_functions_test.go | 2 +- agent/agentlocal/mock_client_test.go | 2 +- agent/agentlocal/mock_supervisor_test.go | 2 +- agent/client/mock_connection_checker_test.go | 2 +- agent/client/mock_supervisor_test.go | 2 +- agent/versioner/mock_exec_functions_test.go | 2 +- managed/services/backup/mock_agent_service_test.go | 2 +- managed/services/backup/mock_compatibility_service_test.go | 2 +- managed/services/backup/mock_jobs_service_test.go | 2 +- managed/services/backup/mock_pbm_pitr_service_test.go | 2 +- managed/services/backup/mock_removal_service_test.go | 2 +- managed/services/backup/mock_storage_test.go | 2 +- managed/services/backup/mock_versioner_test.go | 2 +- managed/services/checks/mock_agents_registry_test.go | 2 +- managed/services/checks/mock_alertmanager_service_test.go | 2 +- .../dbaas/kubernetes/client/mock_kube_client_connector.go | 2 +- managed/services/grafana/mock_aws_instance_checker_test.go | 2 +- managed/services/inventory/mock_agent_service_test.go | 2 +- managed/services/inventory/mock_agents_registry_test.go | 2 +- managed/services/inventory/mock_agents_state_updater_test.go | 2 +- managed/services/inventory/mock_connection_checker_test.go | 2 +- managed/services/inventory/mock_inventory_metrics_test.go | 2 +- managed/services/inventory/mock_prometheus_service_test.go | 2 +- managed/services/inventory/mock_version_cache_test.go | 2 +- .../services/management/alerting/mock_grafana_client_test.go | 2 +- managed/services/management/backup/mock_aws_s3_test.go | 2 +- .../services/management/backup/mock_backup_service_test.go | 2 +- .../services/management/backup/mock_pbm_pitr_service_test.go | 2 +- .../services/management/backup/mock_removal_service_test.go | 2 +- .../services/management/backup/mock_schedule_service_test.go | 2 +- .../services/management/dbaas/mock_components_service_test.go | 2 +- managed/services/management/dbaas/mock_dbaas_client_test.go | 2 +- managed/services/management/dbaas/mock_grafana_client_test.go | 2 +- .../management/dbaas/mock_kube_storage_manager_test.go | 2 +- .../services/management/dbaas/mock_kubernetes_client_test.go | 2 +- .../services/management/dbaas/mock_version_service_test.go | 2 +- managed/services/management/ia/mock_alert_manager_test.go | 2 +- managed/services/management/ia/mock_templates_service_test.go | 2 +- managed/services/management/ia/mock_vm_alert_test.go | 2 +- managed/services/management/mock_agents_registry_test.go | 2 +- managed/services/management/mock_agents_state_updater_test.go | 2 +- managed/services/management/mock_api_key_provider_test.go | 2 +- managed/services/management/mock_checks_service_test.go | 2 +- managed/services/management/mock_connection_checker_test.go | 2 +- managed/services/management/mock_grafana_client_test.go | 2 +- managed/services/management/mock_jobs_service_test.go | 2 +- managed/services/management/mock_prometheus_service_test.go | 2 +- managed/services/management/mock_version_cache_test.go | 2 +- .../services/management/mock_victoria_metrics_client_test.go | 2 +- managed/services/qan/mock_qan_collector_client_test.go | 2 +- managed/services/scheduler/mock_backup_service_test.go | 2 +- managed/services/server/mock_agents_state_updater_test.go | 2 +- managed/services/server/mock_alertmanager_service_test.go | 2 +- managed/services/server/mock_checks_service_test.go | 2 +- managed/services/server/mock_emailer_test.go | 2 +- managed/services/server/mock_grafana_client_test.go | 2 +- managed/services/server/mock_prometheus_service_test.go | 2 +- managed/services/server/mock_rules_service_test.go | 2 +- managed/services/server/mock_supervisord_service_test.go | 2 +- managed/services/server/mock_telemetry_service_test.go | 2 +- managed/services/server/mock_templates_service_test.go | 2 +- managed/services/server/mock_vm_alert_external_rules_test.go | 2 +- managed/services/telemetry/mock_data_source_locator_test.go | 2 +- managed/services/telemetry/mock_data_source_test.go | 2 +- .../services/telemetry/mock_distribution_util_service_test.go | 2 +- managed/services/telemetry/mock_sender_test.go | 2 +- managed/services/versioncache/mock_versioner_test.go | 2 +- tools/go.mod | 2 +- tools/go.sum | 4 ++-- 69 files changed, 70 insertions(+), 70 deletions(-) diff --git a/admin/commands/pmm/server/docker/mock_functions_test.go b/admin/commands/pmm/server/docker/mock_functions_test.go index 33a758f7fb..0e3b7add67 100644 --- a/admin/commands/pmm/server/docker/mock_functions_test.go +++ b/admin/commands/pmm/server/docker/mock_functions_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package docker diff --git a/agent/agentlocal/mock_client_test.go b/agent/agentlocal/mock_client_test.go index 2e28a6d57f..4420488498 100644 --- a/agent/agentlocal/mock_client_test.go +++ b/agent/agentlocal/mock_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package agentlocal diff --git a/agent/agentlocal/mock_supervisor_test.go b/agent/agentlocal/mock_supervisor_test.go index 391ac4e3d6..87544e77cd 100644 --- a/agent/agentlocal/mock_supervisor_test.go +++ b/agent/agentlocal/mock_supervisor_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package agentlocal diff --git a/agent/client/mock_connection_checker_test.go b/agent/client/mock_connection_checker_test.go index 30b513c41c..b51b749909 100644 --- a/agent/client/mock_connection_checker_test.go +++ b/agent/client/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package client diff --git a/agent/client/mock_supervisor_test.go b/agent/client/mock_supervisor_test.go index fa4c9fcfac..3fae474213 100644 --- a/agent/client/mock_supervisor_test.go +++ b/agent/client/mock_supervisor_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package client diff --git a/agent/versioner/mock_exec_functions_test.go b/agent/versioner/mock_exec_functions_test.go index 43fcbe96aa..b3fdee3c42 100644 --- a/agent/versioner/mock_exec_functions_test.go +++ b/agent/versioner/mock_exec_functions_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package versioner diff --git a/managed/services/backup/mock_agent_service_test.go b/managed/services/backup/mock_agent_service_test.go index 96982d92a0..751305bfde 100644 --- a/managed/services/backup/mock_agent_service_test.go +++ b/managed/services/backup/mock_agent_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_compatibility_service_test.go b/managed/services/backup/mock_compatibility_service_test.go index 48b021694e..b49cf7d5af 100644 --- a/managed/services/backup/mock_compatibility_service_test.go +++ b/managed/services/backup/mock_compatibility_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_jobs_service_test.go b/managed/services/backup/mock_jobs_service_test.go index f41b04b9de..8d146ba6f5 100644 --- a/managed/services/backup/mock_jobs_service_test.go +++ b/managed/services/backup/mock_jobs_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_pbm_pitr_service_test.go b/managed/services/backup/mock_pbm_pitr_service_test.go index e651ac89d0..2f406faeab 100644 --- a/managed/services/backup/mock_pbm_pitr_service_test.go +++ b/managed/services/backup/mock_pbm_pitr_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_removal_service_test.go b/managed/services/backup/mock_removal_service_test.go index 648df77f1a..eee389c9c4 100644 --- a/managed/services/backup/mock_removal_service_test.go +++ b/managed/services/backup/mock_removal_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_storage_test.go b/managed/services/backup/mock_storage_test.go index 05d4040ded..e781536785 100644 --- a/managed/services/backup/mock_storage_test.go +++ b/managed/services/backup/mock_storage_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/backup/mock_versioner_test.go b/managed/services/backup/mock_versioner_test.go index f7dda0d3c2..7af63a09d2 100644 --- a/managed/services/backup/mock_versioner_test.go +++ b/managed/services/backup/mock_versioner_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/checks/mock_agents_registry_test.go b/managed/services/checks/mock_agents_registry_test.go index 6cdac8ca21..19f309ad3d 100644 --- a/managed/services/checks/mock_agents_registry_test.go +++ b/managed/services/checks/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package checks diff --git a/managed/services/checks/mock_alertmanager_service_test.go b/managed/services/checks/mock_alertmanager_service_test.go index 2e7a73cb48..5683226d54 100644 --- a/managed/services/checks/mock_alertmanager_service_test.go +++ b/managed/services/checks/mock_alertmanager_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package checks diff --git a/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go b/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go index 277706c04b..694db0862d 100644 --- a/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go +++ b/managed/services/dbaas/kubernetes/client/mock_kube_client_connector.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package client diff --git a/managed/services/grafana/mock_aws_instance_checker_test.go b/managed/services/grafana/mock_aws_instance_checker_test.go index a5610be6f9..4ed8f36ea9 100644 --- a/managed/services/grafana/mock_aws_instance_checker_test.go +++ b/managed/services/grafana/mock_aws_instance_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package grafana diff --git a/managed/services/inventory/mock_agent_service_test.go b/managed/services/inventory/mock_agent_service_test.go index 0beab14e2a..472d1e70d4 100644 --- a/managed/services/inventory/mock_agent_service_test.go +++ b/managed/services/inventory/mock_agent_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_agents_registry_test.go b/managed/services/inventory/mock_agents_registry_test.go index 5d5fb6df11..a59644d96a 100644 --- a/managed/services/inventory/mock_agents_registry_test.go +++ b/managed/services/inventory/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_agents_state_updater_test.go b/managed/services/inventory/mock_agents_state_updater_test.go index a617a335ed..2d57da0521 100644 --- a/managed/services/inventory/mock_agents_state_updater_test.go +++ b/managed/services/inventory/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_connection_checker_test.go b/managed/services/inventory/mock_connection_checker_test.go index c9dc2753d7..abd94dfdbd 100644 --- a/managed/services/inventory/mock_connection_checker_test.go +++ b/managed/services/inventory/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_inventory_metrics_test.go b/managed/services/inventory/mock_inventory_metrics_test.go index b362248066..3e13562622 100644 --- a/managed/services/inventory/mock_inventory_metrics_test.go +++ b/managed/services/inventory/mock_inventory_metrics_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_prometheus_service_test.go b/managed/services/inventory/mock_prometheus_service_test.go index 78fc810318..6eb2fa2419 100644 --- a/managed/services/inventory/mock_prometheus_service_test.go +++ b/managed/services/inventory/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package inventory diff --git a/managed/services/inventory/mock_version_cache_test.go b/managed/services/inventory/mock_version_cache_test.go index afb59c5704..f0c5b53dbe 100644 --- a/managed/services/inventory/mock_version_cache_test.go +++ b/managed/services/inventory/mock_version_cache_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package inventory diff --git a/managed/services/management/alerting/mock_grafana_client_test.go b/managed/services/management/alerting/mock_grafana_client_test.go index 8b8d24a255..8e672c7b40 100644 --- a/managed/services/management/alerting/mock_grafana_client_test.go +++ b/managed/services/management/alerting/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package alerting diff --git a/managed/services/management/backup/mock_aws_s3_test.go b/managed/services/management/backup/mock_aws_s3_test.go index f2383ac9cf..5935392e61 100644 --- a/managed/services/management/backup/mock_aws_s3_test.go +++ b/managed/services/management/backup/mock_aws_s3_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_backup_service_test.go b/managed/services/management/backup/mock_backup_service_test.go index 20aaf30f5a..5c7f5287ac 100644 --- a/managed/services/management/backup/mock_backup_service_test.go +++ b/managed/services/management/backup/mock_backup_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_pbm_pitr_service_test.go b/managed/services/management/backup/mock_pbm_pitr_service_test.go index 87f7361021..90d6433efc 100644 --- a/managed/services/management/backup/mock_pbm_pitr_service_test.go +++ b/managed/services/management/backup/mock_pbm_pitr_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_removal_service_test.go b/managed/services/management/backup/mock_removal_service_test.go index 05cbd1d4e8..e437479ba5 100644 --- a/managed/services/management/backup/mock_removal_service_test.go +++ b/managed/services/management/backup/mock_removal_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/management/backup/mock_schedule_service_test.go b/managed/services/management/backup/mock_schedule_service_test.go index 96c6c60ae8..0f62f0c8db 100644 --- a/managed/services/management/backup/mock_schedule_service_test.go +++ b/managed/services/management/backup/mock_schedule_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package backup diff --git a/managed/services/management/dbaas/mock_components_service_test.go b/managed/services/management/dbaas/mock_components_service_test.go index e1ebc14e34..a20e4ba5f5 100644 --- a/managed/services/management/dbaas/mock_components_service_test.go +++ b/managed/services/management/dbaas/mock_components_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_dbaas_client_test.go b/managed/services/management/dbaas/mock_dbaas_client_test.go index 5360258285..7fdada79d6 100644 --- a/managed/services/management/dbaas/mock_dbaas_client_test.go +++ b/managed/services/management/dbaas/mock_dbaas_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_grafana_client_test.go b/managed/services/management/dbaas/mock_grafana_client_test.go index 036d0b88f1..965fe4d243 100644 --- a/managed/services/management/dbaas/mock_grafana_client_test.go +++ b/managed/services/management/dbaas/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_kube_storage_manager_test.go b/managed/services/management/dbaas/mock_kube_storage_manager_test.go index a8c45fea40..34e485e121 100644 --- a/managed/services/management/dbaas/mock_kube_storage_manager_test.go +++ b/managed/services/management/dbaas/mock_kube_storage_manager_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_kubernetes_client_test.go b/managed/services/management/dbaas/mock_kubernetes_client_test.go index af41675b0d..0e50992466 100644 --- a/managed/services/management/dbaas/mock_kubernetes_client_test.go +++ b/managed/services/management/dbaas/mock_kubernetes_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package dbaas diff --git a/managed/services/management/dbaas/mock_version_service_test.go b/managed/services/management/dbaas/mock_version_service_test.go index b2cd7ced8a..e94bbe15db 100644 --- a/managed/services/management/dbaas/mock_version_service_test.go +++ b/managed/services/management/dbaas/mock_version_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package dbaas diff --git a/managed/services/management/ia/mock_alert_manager_test.go b/managed/services/management/ia/mock_alert_manager_test.go index a4362abf81..13e49aa95d 100644 --- a/managed/services/management/ia/mock_alert_manager_test.go +++ b/managed/services/management/ia/mock_alert_manager_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package ia diff --git a/managed/services/management/ia/mock_templates_service_test.go b/managed/services/management/ia/mock_templates_service_test.go index 7c2d84baed..11c5f28e0e 100644 --- a/managed/services/management/ia/mock_templates_service_test.go +++ b/managed/services/management/ia/mock_templates_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package ia diff --git a/managed/services/management/ia/mock_vm_alert_test.go b/managed/services/management/ia/mock_vm_alert_test.go index 5ceeb81d4c..b6195a3503 100644 --- a/managed/services/management/ia/mock_vm_alert_test.go +++ b/managed/services/management/ia/mock_vm_alert_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package ia diff --git a/managed/services/management/mock_agents_registry_test.go b/managed/services/management/mock_agents_registry_test.go index 56d566754a..6c189c7b24 100644 --- a/managed/services/management/mock_agents_registry_test.go +++ b/managed/services/management/mock_agents_registry_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_agents_state_updater_test.go b/managed/services/management/mock_agents_state_updater_test.go index 74a886633b..17d52e1196 100644 --- a/managed/services/management/mock_agents_state_updater_test.go +++ b/managed/services/management/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_api_key_provider_test.go b/managed/services/management/mock_api_key_provider_test.go index a7ea7ec4f0..0d5053584e 100644 --- a/managed/services/management/mock_api_key_provider_test.go +++ b/managed/services/management/mock_api_key_provider_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_checks_service_test.go b/managed/services/management/mock_checks_service_test.go index 13eb38c3e4..9baa9827c1 100644 --- a/managed/services/management/mock_checks_service_test.go +++ b/managed/services/management/mock_checks_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_connection_checker_test.go b/managed/services/management/mock_connection_checker_test.go index e7634558b2..0c17403dbb 100644 --- a/managed/services/management/mock_connection_checker_test.go +++ b/managed/services/management/mock_connection_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_grafana_client_test.go b/managed/services/management/mock_grafana_client_test.go index 7eb1b09c64..11b37bfdd2 100644 --- a/managed/services/management/mock_grafana_client_test.go +++ b/managed/services/management/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_jobs_service_test.go b/managed/services/management/mock_jobs_service_test.go index 9a75bfdb8f..accb002700 100644 --- a/managed/services/management/mock_jobs_service_test.go +++ b/managed/services/management/mock_jobs_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_prometheus_service_test.go b/managed/services/management/mock_prometheus_service_test.go index 84a3e8de16..222a6edf82 100644 --- a/managed/services/management/mock_prometheus_service_test.go +++ b/managed/services/management/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_version_cache_test.go b/managed/services/management/mock_version_cache_test.go index e415f3b525..c13b96f53f 100644 --- a/managed/services/management/mock_version_cache_test.go +++ b/managed/services/management/mock_version_cache_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/management/mock_victoria_metrics_client_test.go b/managed/services/management/mock_victoria_metrics_client_test.go index 42eaddd779..6ae8bc8991 100644 --- a/managed/services/management/mock_victoria_metrics_client_test.go +++ b/managed/services/management/mock_victoria_metrics_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package management diff --git a/managed/services/qan/mock_qan_collector_client_test.go b/managed/services/qan/mock_qan_collector_client_test.go index d98d8b3c51..a0c5aa988e 100644 --- a/managed/services/qan/mock_qan_collector_client_test.go +++ b/managed/services/qan/mock_qan_collector_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package qan diff --git a/managed/services/scheduler/mock_backup_service_test.go b/managed/services/scheduler/mock_backup_service_test.go index 985408568d..892383c9c8 100644 --- a/managed/services/scheduler/mock_backup_service_test.go +++ b/managed/services/scheduler/mock_backup_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package scheduler diff --git a/managed/services/server/mock_agents_state_updater_test.go b/managed/services/server/mock_agents_state_updater_test.go index 0e64360495..2d25014bc3 100644 --- a/managed/services/server/mock_agents_state_updater_test.go +++ b/managed/services/server/mock_agents_state_updater_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_alertmanager_service_test.go b/managed/services/server/mock_alertmanager_service_test.go index 6bb226186a..1d301e6aa4 100644 --- a/managed/services/server/mock_alertmanager_service_test.go +++ b/managed/services/server/mock_alertmanager_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_checks_service_test.go b/managed/services/server/mock_checks_service_test.go index 5697c93f5b..7e1158ee91 100644 --- a/managed/services/server/mock_checks_service_test.go +++ b/managed/services/server/mock_checks_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_emailer_test.go b/managed/services/server/mock_emailer_test.go index 59332ff8b4..f06088f808 100644 --- a/managed/services/server/mock_emailer_test.go +++ b/managed/services/server/mock_emailer_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_grafana_client_test.go b/managed/services/server/mock_grafana_client_test.go index b1de2d7b54..6eb7251b8a 100644 --- a/managed/services/server/mock_grafana_client_test.go +++ b/managed/services/server/mock_grafana_client_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_prometheus_service_test.go b/managed/services/server/mock_prometheus_service_test.go index fe65123817..b26b0212f9 100644 --- a/managed/services/server/mock_prometheus_service_test.go +++ b/managed/services/server/mock_prometheus_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_rules_service_test.go b/managed/services/server/mock_rules_service_test.go index 1722917880..f8cf6b3540 100644 --- a/managed/services/server/mock_rules_service_test.go +++ b/managed/services/server/mock_rules_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_supervisord_service_test.go b/managed/services/server/mock_supervisord_service_test.go index a678928e10..f8f378255b 100644 --- a/managed/services/server/mock_supervisord_service_test.go +++ b/managed/services/server/mock_supervisord_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_telemetry_service_test.go b/managed/services/server/mock_telemetry_service_test.go index 1038eab52a..5c10352822 100644 --- a/managed/services/server/mock_telemetry_service_test.go +++ b/managed/services/server/mock_telemetry_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_templates_service_test.go b/managed/services/server/mock_templates_service_test.go index c13ad82b86..28d52f5efb 100644 --- a/managed/services/server/mock_templates_service_test.go +++ b/managed/services/server/mock_templates_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/server/mock_vm_alert_external_rules_test.go b/managed/services/server/mock_vm_alert_external_rules_test.go index fb1430d1fd..d4407feb5c 100644 --- a/managed/services/server/mock_vm_alert_external_rules_test.go +++ b/managed/services/server/mock_vm_alert_external_rules_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package server diff --git a/managed/services/telemetry/mock_data_source_locator_test.go b/managed/services/telemetry/mock_data_source_locator_test.go index 2320d1d4d0..f3af331bac 100644 --- a/managed/services/telemetry/mock_data_source_locator_test.go +++ b/managed/services/telemetry/mock_data_source_locator_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package telemetry diff --git a/managed/services/telemetry/mock_data_source_test.go b/managed/services/telemetry/mock_data_source_test.go index 3f93901b4a..de113e6555 100644 --- a/managed/services/telemetry/mock_data_source_test.go +++ b/managed/services/telemetry/mock_data_source_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package telemetry diff --git a/managed/services/telemetry/mock_distribution_util_service_test.go b/managed/services/telemetry/mock_distribution_util_service_test.go index b14b6c1b93..1460cec05b 100644 --- a/managed/services/telemetry/mock_distribution_util_service_test.go +++ b/managed/services/telemetry/mock_distribution_util_service_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package telemetry diff --git a/managed/services/telemetry/mock_sender_test.go b/managed/services/telemetry/mock_sender_test.go index f7ecbb51cc..66999a6ce5 100644 --- a/managed/services/telemetry/mock_sender_test.go +++ b/managed/services/telemetry/mock_sender_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package telemetry diff --git a/managed/services/versioncache/mock_versioner_test.go b/managed/services/versioncache/mock_versioner_test.go index 07cc47497b..62ace911b7 100644 --- a/managed/services/versioncache/mock_versioner_test.go +++ b/managed/services/versioncache/mock_versioner_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.31.1. DO NOT EDIT. +// Code generated by mockery v2.32.0. DO NOT EDIT. package versioncache diff --git a/tools/go.mod b/tools/go.mod index 8be23474ed..c3fbe128cd 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -20,7 +20,7 @@ require ( github.com/quasilyte/go-consistent v0.0.0-20200404105227-766526bf1e96 github.com/reviewdog/reviewdog v0.14.1 github.com/vburenin/ifacemaker v1.2.1 - github.com/vektra/mockery/v2 v2.31.1 + github.com/vektra/mockery/v2 v2.32.0 golang.org/x/perf v0.0.0-20211012211434-03971e389cd3 golang.org/x/tools v0.11.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 diff --git a/tools/go.sum b/tools/go.sum index 2a4de2857c..d265497fc9 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -705,8 +705,8 @@ github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RV github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vburenin/ifacemaker v1.2.1 h1:3Vq8B/bfBgjWTkv+jDg4dVL1KHt3k1K4lO7XRxYA2sk= github.com/vburenin/ifacemaker v1.2.1/go.mod h1:5WqrzX2aD7/hi+okBjcaEQJMg4lDGrpuEX3B8L4Wgrs= -github.com/vektra/mockery/v2 v2.31.1 h1:dijChwjo9fBFJN9x93R0T2ZENEnYbvCuXHUXn+YYpCI= -github.com/vektra/mockery/v2 v2.31.1/go.mod h1:9lREs4VEeQiUS3rizYQx1saxHu2JiIhThP0q9+fDegM= +github.com/vektra/mockery/v2 v2.32.0 h1:IXUoQ3s5VxJPpi95DECUmkRUXZ44I1spQ3YatEypIF4= +github.com/vektra/mockery/v2 v2.32.0/go.mod h1:9lREs4VEeQiUS3rizYQx1saxHu2JiIhThP0q9+fDegM= github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc h1:El7LEavRpa49dYFE9ezO8aQxQn5E7u7eQkFsaXsoQAY= github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc/go.mod h1:MmhrKtbECoUJTctfak+MnOFoJ9XQqYZ7chcwV9O7v3I= github.com/xanzy/go-gitlab v0.63.0 h1:a9fXpKWykUS6dowapFej/2Wjf4aOAEFC1q2ZIcz4IpI= From f3f75b57f7405b3fdbb2af5ae60bb6c5e5c771da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 13:25:35 +0200 Subject: [PATCH 110/123] Bump modernc.org/sqlite from 1.23.0 to 1.24.0 (#2363) Bumps [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) from 1.23.0 to 1.24.0. - [Commits](https://gitlab.com/cznic/sqlite/compare/v1.23.0...v1.24.0) --- updated-dependencies: - dependency-name: modernc.org/sqlite dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8bd0f6eb45..27f7a927b2 100644 --- a/go.mod +++ b/go.mod @@ -92,7 +92,7 @@ require ( k8s.io/cli-runtime v0.27.2 k8s.io/client-go v0.27.2 k8s.io/kubectl v0.27.2 - modernc.org/sqlite v1.23.0 + modernc.org/sqlite v1.24.0 sigs.k8s.io/controller-runtime v0.14.6 ) diff --git a/go.sum b/go.sum index c8c54a3d62..cecc14e29d 100644 --- a/go.sum +++ b/go.sum @@ -1262,8 +1262,8 @@ modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.23.0 h1:MWTFBI5H1WLnXpNBh/BTruBVqzzoh28DA0iOnlkkRaM= -modernc.org/sqlite v1.23.0/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= +modernc.org/sqlite v1.24.0 h1:EsClRIWHGhLTCX44p+Ri/JLD+vFGo0QGjasg2/F9TlI= +modernc.org/sqlite v1.24.0/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= From 925fc6751b998bf86f025846b8407601b4f3e06e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 13:40:44 +0200 Subject: [PATCH 111/123] Bump @typescript-eslint/parser from 5.61.0 to 5.62.0 in /cli-tests (#2361) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.61.0 to 5.62.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.62.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 88 ++++++++++++++++++++++++++++++++++--- cli-tests/package.json | 2 +- 2 files changed, 82 insertions(+), 8 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 10a7097207..67606383f0 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -21,7 +21,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.61.0", - "@typescript-eslint/parser": "^5.61.0", + "@typescript-eslint/parser": "^5.62.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", @@ -295,14 +295,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.61.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.61.0.tgz", - "integrity": "sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.61.0", - "@typescript-eslint/types": "5.61.0", - "@typescript-eslint/typescript-estree": "5.61.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "debug": "^4.3.4" }, "engines": { @@ -321,6 +321,80 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.61.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz", diff --git a/cli-tests/package.json b/cli-tests/package.json index 89b5b680a2..e8896be006 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -25,7 +25,7 @@ "@types/promise-retry": "^1.1.3", "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.61.0", - "@typescript-eslint/parser": "^5.61.0", + "@typescript-eslint/parser": "^5.62.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.0.0", From 8348a5922b869995b7a32fc8d38023a12ab7d0df Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Thu, 13 Jul 2023 16:01:56 +0200 Subject: [PATCH 112/123] PMM-11999 Expose check family (#2007) * PMM-11999 Expose check family * PMM-11999 Fix tests * PMM-11999 go mod tidy * Update managed/services/checks/checks.go Co-authored-by: Alex Tymchuk * Update managed/services/checks/checks.go * PMM-11999 Update * PMM-11999 Fix linter warning * PMM-11999 Update saas dependency * PMM-11999 Update saas dependency --------- Co-authored-by: Alex Tymchuk --- api/managementpb/checks.pb.go | 655 ++++++++++-------- api/managementpb/checks.pb.validate.go | 2 + api/managementpb/checks.proto | 9 + .../list_advisors_responses.go | 56 ++ .../list_security_checks_responses.go | 56 ++ api/managementpb/json/managementpb.json | 22 + api/swagger/swagger-dev.json | 22 + api/swagger/swagger.json | 22 + go.mod | 2 +- go.sum | 4 +- managed/services/checks/checks.go | 25 +- managed/services/checks/checks_test.go | 48 ++ managed/services/management/checks.go | 39 +- managed/services/management/checks_test.go | 5 +- managed/services/utils.go | 75 -- managed/services/utils_test.go | 72 -- 16 files changed, 660 insertions(+), 454 deletions(-) delete mode 100644 managed/services/utils.go delete mode 100644 managed/services/utils_test.go diff --git a/api/managementpb/checks.pb.go b/api/managementpb/checks.pb.go index 7bf1b53a51..ead9da805a 100644 --- a/api/managementpb/checks.pb.go +++ b/api/managementpb/checks.pb.go @@ -76,6 +76,58 @@ func (SecurityCheckInterval) EnumDescriptor() ([]byte, []int) { return file_managementpb_checks_proto_rawDescGZIP(), []int{0} } +type AdvisorCheckFamily int32 + +const ( + AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_INVALID AdvisorCheckFamily = 0 + AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_MYSQL AdvisorCheckFamily = 1 + AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_POSTGRESQL AdvisorCheckFamily = 2 + AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_MONGODB AdvisorCheckFamily = 3 +) + +// Enum value maps for AdvisorCheckFamily. +var ( + AdvisorCheckFamily_name = map[int32]string{ + 0: "ADVISOR_CHECK_FAMILY_INVALID", + 1: "ADVISOR_CHECK_FAMILY_MYSQL", + 2: "ADVISOR_CHECK_FAMILY_POSTGRESQL", + 3: "ADVISOR_CHECK_FAMILY_MONGODB", + } + AdvisorCheckFamily_value = map[string]int32{ + "ADVISOR_CHECK_FAMILY_INVALID": 0, + "ADVISOR_CHECK_FAMILY_MYSQL": 1, + "ADVISOR_CHECK_FAMILY_POSTGRESQL": 2, + "ADVISOR_CHECK_FAMILY_MONGODB": 3, + } +) + +func (x AdvisorCheckFamily) Enum() *AdvisorCheckFamily { + p := new(AdvisorCheckFamily) + *p = x + return p +} + +func (x AdvisorCheckFamily) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AdvisorCheckFamily) Descriptor() protoreflect.EnumDescriptor { + return file_managementpb_checks_proto_enumTypes[1].Descriptor() +} + +func (AdvisorCheckFamily) Type() protoreflect.EnumType { + return &file_managementpb_checks_proto_enumTypes[1] +} + +func (x AdvisorCheckFamily) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AdvisorCheckFamily.Descriptor instead. +func (AdvisorCheckFamily) EnumDescriptor() ([]byte, []int) { + return file_managementpb_checks_proto_rawDescGZIP(), []int{1} +} + // SecurityCheckResult represents the check result returned from pmm-managed after running the check. type SecurityCheckResult struct { state protoimpl.MessageState @@ -436,6 +488,8 @@ type SecurityCheck struct { Summary string `protobuf:"bytes,4,opt,name=summary,proto3" json:"summary,omitempty"` // Check execution interval. Interval SecurityCheckInterval `protobuf:"varint,5,opt,name=interval,proto3,enum=management.SecurityCheckInterval" json:"interval,omitempty"` + // DB family. + Family AdvisorCheckFamily `protobuf:"varint,6,opt,name=family,proto3,enum=management.AdvisorCheckFamily" json:"family,omitempty"` } func (x *SecurityCheck) Reset() { @@ -505,6 +559,13 @@ func (x *SecurityCheck) GetInterval() SecurityCheckInterval { return SecurityCheckInterval_SECURITY_CHECK_INTERVAL_INVALID } +func (x *SecurityCheck) GetFamily() AdvisorCheckFamily { + if x != nil { + return x.Family + } + return AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_INVALID +} + type Advisor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1475,7 +1536,7 @@ var file_managementpb_checks_proto_rawDesc = []byte{ 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, 0xba, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x02, 0x38, 0x01, 0x22, 0xf2, 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, @@ -1487,235 +1548,249 @@ var file_managementpb_checks_proto_rawDesc = []byte{ 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0xc2, 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, 0x31, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0xa0, 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, 0x3d, 0x0a, 0x08, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x60, - 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, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x4f, 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, 0x31, - 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x47, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, 0x08, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, - 0x73, 0x22, 0x5c, 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, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x54, 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, 0x36, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x70, 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, 0x37, 0x0a, 0x0b, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x12, 0x36, 0x0a, 0x06, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0xc2, 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, 0x31, 0x0a, 0x06, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x22, 0xa0, 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, 0x3d, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 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, 0x60, 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, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x4f, 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, 0x31, 0x0a, 0x06, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 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, 0x47, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x61, 0x64, 0x76, 0x69, + 0x73, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x52, + 0x08, 0x61, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x5c, 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, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x54, 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, 0x36, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x70, 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, 0x37, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x85, 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, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, - 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, + 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, 0x62, 0x0a, 0x15, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x45, 0x43, + 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0c, + 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, + 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x41, + 0x52, 0x45, 0x10, 0x03, 0x2a, 0x9d, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 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, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 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, 0xe8, 0x0f, 0x0a, 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x89, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, + 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 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, 0xdf, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x62, 0x0a, 0x15, 0x53, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x48, - 0x45, 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x56, - 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, - 0x52, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, - 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x41, 0x52, 0x45, 0x10, 0x03, 0x32, 0xe8, 0x0f, 0x0a, - 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, - 0x89, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 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, 0x26, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, + 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, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0xdf, 0x01, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, - 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, - 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 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, 0xe7, 0x01, - 0x0a, 0x10, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, - 0x72, 0x74, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 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, 0x87, 0x01, - 0x92, 0x41, 0x4b, 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, 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, 0x12, 0x86, 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, 0x2a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 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, - 0x2b, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x91, 0x01, 0x92, - 0x41, 0x53, 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, 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, 0xc9, 0x02, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, - 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0xdb, 0x01, 0x0a, - 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x73, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 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, 0x26, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, + 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x2f, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0xe7, 0x01, 0x0a, 0x10, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, + 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x87, 0x01, 0x92, 0x41, 0x4b, 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, 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, 0x12, + 0x86, 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, 0x2a, 0x2e, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x2b, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 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, 0x91, 0x01, 0x92, 0x41, 0x53, 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, 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, 0xbf, 0x01, 0x0a, 0x0c, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, - 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, + 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, 0xc9, 0x02, 0x0a, 0x13, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x12, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0xdb, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x25, 0x2e, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 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, 0x88, 0x02, 0x0a, - 0x14, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 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, 0x28, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x8e, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 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, - 0x70, 0x62, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 0xbf, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, + 0x6f, 0x72, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x64, 0x76, 0x69, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 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, 0x88, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x12, 0x27, 0x2e, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 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, + 0x8e, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x42, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x27, 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, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, + 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0a, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1731,77 +1806,79 @@ func file_managementpb_checks_proto_rawDescGZIP() []byte { } var ( - file_managementpb_checks_proto_enumTypes = make([]protoimpl.EnumInfo, 1) + file_managementpb_checks_proto_enumTypes = make([]protoimpl.EnumInfo, 2) file_managementpb_checks_proto_msgTypes = make([]protoimpl.MessageInfo, 24) file_managementpb_checks_proto_goTypes = []interface{}{ (SecurityCheckInterval)(0), // 0: management.SecurityCheckInterval - (*SecurityCheckResult)(nil), // 1: management.SecurityCheckResult - (*CheckResultSummary)(nil), // 2: management.CheckResultSummary - (*CheckResult)(nil), // 3: management.CheckResult - (*SecurityCheck)(nil), // 4: management.SecurityCheck - (*Advisor)(nil), // 5: management.Advisor - (*ChangeSecurityCheckParams)(nil), // 6: management.ChangeSecurityCheckParams - (*GetSecurityCheckResultsRequest)(nil), // 7: management.GetSecurityCheckResultsRequest - (*GetSecurityCheckResultsResponse)(nil), // 8: management.GetSecurityCheckResultsResponse - (*StartSecurityChecksRequest)(nil), // 9: management.StartSecurityChecksRequest - (*StartSecurityChecksResponse)(nil), // 10: management.StartSecurityChecksResponse - (*ListSecurityChecksRequest)(nil), // 11: management.ListSecurityChecksRequest - (*ListSecurityChecksResponse)(nil), // 12: management.ListSecurityChecksResponse - (*ListAdvisorsRequest)(nil), // 13: management.ListAdvisorsRequest - (*ListAdvisorsResponse)(nil), // 14: management.ListAdvisorsResponse - (*ChangeSecurityChecksRequest)(nil), // 15: management.ChangeSecurityChecksRequest - (*ChangeSecurityChecksResponse)(nil), // 16: management.ChangeSecurityChecksResponse - (*ListFailedServicesRequest)(nil), // 17: management.ListFailedServicesRequest - (*ListFailedServicesResponse)(nil), // 18: management.ListFailedServicesResponse - (*GetFailedChecksRequest)(nil), // 19: management.GetFailedChecksRequest - (*GetFailedChecksResponse)(nil), // 20: management.GetFailedChecksResponse - (*ToggleCheckAlertRequest)(nil), // 21: management.ToggleCheckAlertRequest - (*ToggleCheckAlertResponse)(nil), // 22: management.ToggleCheckAlertResponse - nil, // 23: management.SecurityCheckResult.LabelsEntry - nil, // 24: management.CheckResult.LabelsEntry - (Severity)(0), // 25: management.Severity - (*PageParams)(nil), // 26: management.PageParams - (*PageTotals)(nil), // 27: management.PageTotals + (AdvisorCheckFamily)(0), // 1: management.AdvisorCheckFamily + (*SecurityCheckResult)(nil), // 2: management.SecurityCheckResult + (*CheckResultSummary)(nil), // 3: management.CheckResultSummary + (*CheckResult)(nil), // 4: management.CheckResult + (*SecurityCheck)(nil), // 5: management.SecurityCheck + (*Advisor)(nil), // 6: management.Advisor + (*ChangeSecurityCheckParams)(nil), // 7: management.ChangeSecurityCheckParams + (*GetSecurityCheckResultsRequest)(nil), // 8: management.GetSecurityCheckResultsRequest + (*GetSecurityCheckResultsResponse)(nil), // 9: management.GetSecurityCheckResultsResponse + (*StartSecurityChecksRequest)(nil), // 10: management.StartSecurityChecksRequest + (*StartSecurityChecksResponse)(nil), // 11: management.StartSecurityChecksResponse + (*ListSecurityChecksRequest)(nil), // 12: management.ListSecurityChecksRequest + (*ListSecurityChecksResponse)(nil), // 13: management.ListSecurityChecksResponse + (*ListAdvisorsRequest)(nil), // 14: management.ListAdvisorsRequest + (*ListAdvisorsResponse)(nil), // 15: management.ListAdvisorsResponse + (*ChangeSecurityChecksRequest)(nil), // 16: management.ChangeSecurityChecksRequest + (*ChangeSecurityChecksResponse)(nil), // 17: management.ChangeSecurityChecksResponse + (*ListFailedServicesRequest)(nil), // 18: management.ListFailedServicesRequest + (*ListFailedServicesResponse)(nil), // 19: management.ListFailedServicesResponse + (*GetFailedChecksRequest)(nil), // 20: management.GetFailedChecksRequest + (*GetFailedChecksResponse)(nil), // 21: management.GetFailedChecksResponse + (*ToggleCheckAlertRequest)(nil), // 22: management.ToggleCheckAlertRequest + (*ToggleCheckAlertResponse)(nil), // 23: management.ToggleCheckAlertResponse + nil, // 24: management.SecurityCheckResult.LabelsEntry + nil, // 25: management.CheckResult.LabelsEntry + (Severity)(0), // 26: management.Severity + (*PageParams)(nil), // 27: management.PageParams + (*PageTotals)(nil), // 28: management.PageTotals } ) var file_managementpb_checks_proto_depIdxs = []int32{ - 25, // 0: management.SecurityCheckResult.severity:type_name -> management.Severity - 23, // 1: management.SecurityCheckResult.labels:type_name -> management.SecurityCheckResult.LabelsEntry - 25, // 2: management.CheckResult.severity:type_name -> management.Severity - 24, // 3: management.CheckResult.labels:type_name -> management.CheckResult.LabelsEntry + 26, // 0: management.SecurityCheckResult.severity:type_name -> management.Severity + 24, // 1: management.SecurityCheckResult.labels:type_name -> management.SecurityCheckResult.LabelsEntry + 26, // 2: management.CheckResult.severity:type_name -> management.Severity + 25, // 3: management.CheckResult.labels:type_name -> management.CheckResult.LabelsEntry 0, // 4: management.SecurityCheck.interval:type_name -> management.SecurityCheckInterval - 4, // 5: management.Advisor.checks:type_name -> management.SecurityCheck - 0, // 6: management.ChangeSecurityCheckParams.interval:type_name -> management.SecurityCheckInterval - 1, // 7: management.GetSecurityCheckResultsResponse.results:type_name -> management.SecurityCheckResult - 4, // 8: management.ListSecurityChecksResponse.checks:type_name -> management.SecurityCheck - 5, // 9: management.ListAdvisorsResponse.advisors:type_name -> management.Advisor - 6, // 10: management.ChangeSecurityChecksRequest.params:type_name -> management.ChangeSecurityCheckParams - 2, // 11: management.ListFailedServicesResponse.result:type_name -> management.CheckResultSummary - 26, // 12: management.GetFailedChecksRequest.page_params:type_name -> management.PageParams - 3, // 13: management.GetFailedChecksResponse.results:type_name -> management.CheckResult - 27, // 14: management.GetFailedChecksResponse.page_totals:type_name -> management.PageTotals - 17, // 15: management.SecurityChecks.ListFailedServices:input_type -> management.ListFailedServicesRequest - 19, // 16: management.SecurityChecks.GetFailedChecks:input_type -> management.GetFailedChecksRequest - 21, // 17: management.SecurityChecks.ToggleCheckAlert:input_type -> management.ToggleCheckAlertRequest - 7, // 18: management.SecurityChecks.GetSecurityCheckResults:input_type -> management.GetSecurityCheckResultsRequest - 9, // 19: management.SecurityChecks.StartSecurityChecks:input_type -> management.StartSecurityChecksRequest - 11, // 20: management.SecurityChecks.ListSecurityChecks:input_type -> management.ListSecurityChecksRequest - 13, // 21: management.SecurityChecks.ListAdvisors:input_type -> management.ListAdvisorsRequest - 15, // 22: management.SecurityChecks.ChangeSecurityChecks:input_type -> management.ChangeSecurityChecksRequest - 18, // 23: management.SecurityChecks.ListFailedServices:output_type -> management.ListFailedServicesResponse - 20, // 24: management.SecurityChecks.GetFailedChecks:output_type -> management.GetFailedChecksResponse - 22, // 25: management.SecurityChecks.ToggleCheckAlert:output_type -> management.ToggleCheckAlertResponse - 8, // 26: management.SecurityChecks.GetSecurityCheckResults:output_type -> management.GetSecurityCheckResultsResponse - 10, // 27: management.SecurityChecks.StartSecurityChecks:output_type -> management.StartSecurityChecksResponse - 12, // 28: management.SecurityChecks.ListSecurityChecks:output_type -> management.ListSecurityChecksResponse - 14, // 29: management.SecurityChecks.ListAdvisors:output_type -> management.ListAdvisorsResponse - 16, // 30: management.SecurityChecks.ChangeSecurityChecks:output_type -> management.ChangeSecurityChecksResponse - 23, // [23:31] is the sub-list for method output_type - 15, // [15:23] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 1, // 5: management.SecurityCheck.family:type_name -> management.AdvisorCheckFamily + 5, // 6: management.Advisor.checks:type_name -> management.SecurityCheck + 0, // 7: management.ChangeSecurityCheckParams.interval:type_name -> management.SecurityCheckInterval + 2, // 8: management.GetSecurityCheckResultsResponse.results:type_name -> management.SecurityCheckResult + 5, // 9: management.ListSecurityChecksResponse.checks:type_name -> management.SecurityCheck + 6, // 10: management.ListAdvisorsResponse.advisors:type_name -> management.Advisor + 7, // 11: management.ChangeSecurityChecksRequest.params:type_name -> management.ChangeSecurityCheckParams + 3, // 12: management.ListFailedServicesResponse.result:type_name -> management.CheckResultSummary + 27, // 13: management.GetFailedChecksRequest.page_params:type_name -> management.PageParams + 4, // 14: management.GetFailedChecksResponse.results:type_name -> management.CheckResult + 28, // 15: management.GetFailedChecksResponse.page_totals:type_name -> management.PageTotals + 18, // 16: management.SecurityChecks.ListFailedServices:input_type -> management.ListFailedServicesRequest + 20, // 17: management.SecurityChecks.GetFailedChecks:input_type -> management.GetFailedChecksRequest + 22, // 18: management.SecurityChecks.ToggleCheckAlert:input_type -> management.ToggleCheckAlertRequest + 8, // 19: management.SecurityChecks.GetSecurityCheckResults:input_type -> management.GetSecurityCheckResultsRequest + 10, // 20: management.SecurityChecks.StartSecurityChecks:input_type -> management.StartSecurityChecksRequest + 12, // 21: management.SecurityChecks.ListSecurityChecks:input_type -> management.ListSecurityChecksRequest + 14, // 22: management.SecurityChecks.ListAdvisors:input_type -> management.ListAdvisorsRequest + 16, // 23: management.SecurityChecks.ChangeSecurityChecks:input_type -> management.ChangeSecurityChecksRequest + 19, // 24: management.SecurityChecks.ListFailedServices:output_type -> management.ListFailedServicesResponse + 21, // 25: management.SecurityChecks.GetFailedChecks:output_type -> management.GetFailedChecksResponse + 23, // 26: management.SecurityChecks.ToggleCheckAlert:output_type -> management.ToggleCheckAlertResponse + 9, // 27: management.SecurityChecks.GetSecurityCheckResults:output_type -> management.GetSecurityCheckResultsResponse + 11, // 28: management.SecurityChecks.StartSecurityChecks:output_type -> management.StartSecurityChecksResponse + 13, // 29: management.SecurityChecks.ListSecurityChecks:output_type -> management.ListSecurityChecksResponse + 15, // 30: management.SecurityChecks.ListAdvisors:output_type -> management.ListAdvisorsResponse + 17, // 31: management.SecurityChecks.ChangeSecurityChecks:output_type -> management.ChangeSecurityChecksResponse + 24, // [24:32] is the sub-list for method output_type + 16, // [16:24] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_managementpb_checks_proto_init() } @@ -2082,7 +2159,7 @@ func file_managementpb_checks_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_managementpb_checks_proto_rawDesc, - NumEnums: 1, + NumEnums: 2, NumMessages: 24, NumExtensions: 0, NumServices: 1, diff --git a/api/managementpb/checks.pb.validate.go b/api/managementpb/checks.pb.validate.go index be831508d9..ee0a2df498 100644 --- a/api/managementpb/checks.pb.validate.go +++ b/api/managementpb/checks.pb.validate.go @@ -422,6 +422,8 @@ func (m *SecurityCheck) validate(all bool) error { // no validation rules for Interval + // no validation rules for Family + if len(errors) > 0 { return SecurityCheckMultiError(errors) } diff --git a/api/managementpb/checks.proto b/api/managementpb/checks.proto index db3158c476..91bf8e0743 100644 --- a/api/managementpb/checks.proto +++ b/api/managementpb/checks.proto @@ -17,6 +17,13 @@ enum SecurityCheckInterval { RARE = 3; } +enum AdvisorCheckFamily { + ADVISOR_CHECK_FAMILY_INVALID = 0; + ADVISOR_CHECK_FAMILY_MYSQL = 1; + ADVISOR_CHECK_FAMILY_POSTGRESQL = 2; + ADVISOR_CHECK_FAMILY_MONGODB = 3; +} + // SecurityCheckResult represents the check result returned from pmm-managed after running the check. message SecurityCheckResult { string summary = 1; @@ -83,6 +90,8 @@ message SecurityCheck { string summary = 4; // Check execution interval. SecurityCheckInterval interval = 5; + // DB family. + AdvisorCheckFamily family = 6; } message Advisor { diff --git a/api/managementpb/json/client/security_checks/list_advisors_responses.go b/api/managementpb/json/client/security_checks/list_advisors_responses.go index 61f04cc380..cc98f1942d 100644 --- a/api/managementpb/json/client/security_checks/list_advisors_responses.go +++ b/api/managementpb/json/client/security_checks/list_advisors_responses.go @@ -492,6 +492,10 @@ type ListAdvisorsOKBodyAdvisorsItems0ChecksItems0 struct { // SecurityCheckInterval represents possible execution interval values for checks. // Enum: [SECURITY_CHECK_INTERVAL_INVALID STANDARD FREQUENT RARE] Interval *string `json:"interval,omitempty"` + + // family + // Enum: [ADVISOR_CHECK_FAMILY_INVALID ADVISOR_CHECK_FAMILY_MYSQL ADVISOR_CHECK_FAMILY_POSTGRESQL ADVISOR_CHECK_FAMILY_MONGODB] + Family *string `json:"family,omitempty"` } // Validate validates this list advisors OK body advisors items0 checks items0 @@ -502,6 +506,10 @@ func (o *ListAdvisorsOKBodyAdvisorsItems0ChecksItems0) Validate(formats strfmt.R res = append(res, err) } + if err := o.validateFamily(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -556,6 +564,54 @@ func (o *ListAdvisorsOKBodyAdvisorsItems0ChecksItems0) validateInterval(formats return nil } +var listAdvisorsOkBodyAdvisorsItems0ChecksItems0TypeFamilyPropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["ADVISOR_CHECK_FAMILY_INVALID","ADVISOR_CHECK_FAMILY_MYSQL","ADVISOR_CHECK_FAMILY_POSTGRESQL","ADVISOR_CHECK_FAMILY_MONGODB"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + listAdvisorsOkBodyAdvisorsItems0ChecksItems0TypeFamilyPropEnum = append(listAdvisorsOkBodyAdvisorsItems0ChecksItems0TypeFamilyPropEnum, v) + } +} + +const ( + + // ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYINVALID captures enum value "ADVISOR_CHECK_FAMILY_INVALID" + ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYINVALID string = "ADVISOR_CHECK_FAMILY_INVALID" + + // ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYMYSQL captures enum value "ADVISOR_CHECK_FAMILY_MYSQL" + ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYMYSQL string = "ADVISOR_CHECK_FAMILY_MYSQL" + + // ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYPOSTGRESQL captures enum value "ADVISOR_CHECK_FAMILY_POSTGRESQL" + ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYPOSTGRESQL string = "ADVISOR_CHECK_FAMILY_POSTGRESQL" + + // ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYMONGODB captures enum value "ADVISOR_CHECK_FAMILY_MONGODB" + ListAdvisorsOKBodyAdvisorsItems0ChecksItems0FamilyADVISORCHECKFAMILYMONGODB string = "ADVISOR_CHECK_FAMILY_MONGODB" +) + +// prop value enum +func (o *ListAdvisorsOKBodyAdvisorsItems0ChecksItems0) validateFamilyEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, listAdvisorsOkBodyAdvisorsItems0ChecksItems0TypeFamilyPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *ListAdvisorsOKBodyAdvisorsItems0ChecksItems0) validateFamily(formats strfmt.Registry) error { + if swag.IsZero(o.Family) { // not required + return nil + } + + // value enum + if err := o.validateFamilyEnum("family", "body", *o.Family); err != nil { + return err + } + + return nil +} + // ContextValidate validates this list advisors OK body advisors items0 checks items0 based on context it is used func (o *ListAdvisorsOKBodyAdvisorsItems0ChecksItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { return nil diff --git a/api/managementpb/json/client/security_checks/list_security_checks_responses.go b/api/managementpb/json/client/security_checks/list_security_checks_responses.go index c5702dda19..dd59c7333b 100644 --- a/api/managementpb/json/client/security_checks/list_security_checks_responses.go +++ b/api/managementpb/json/client/security_checks/list_security_checks_responses.go @@ -379,6 +379,10 @@ type ListSecurityChecksOKBodyChecksItems0 struct { // SecurityCheckInterval represents possible execution interval values for checks. // Enum: [SECURITY_CHECK_INTERVAL_INVALID STANDARD FREQUENT RARE] Interval *string `json:"interval,omitempty"` + + // family + // Enum: [ADVISOR_CHECK_FAMILY_INVALID ADVISOR_CHECK_FAMILY_MYSQL ADVISOR_CHECK_FAMILY_POSTGRESQL ADVISOR_CHECK_FAMILY_MONGODB] + Family *string `json:"family,omitempty"` } // Validate validates this list security checks OK body checks items0 @@ -389,6 +393,10 @@ func (o *ListSecurityChecksOKBodyChecksItems0) Validate(formats strfmt.Registry) res = append(res, err) } + if err := o.validateFamily(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -443,6 +451,54 @@ func (o *ListSecurityChecksOKBodyChecksItems0) validateInterval(formats strfmt.R return nil } +var listSecurityChecksOkBodyChecksItems0TypeFamilyPropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["ADVISOR_CHECK_FAMILY_INVALID","ADVISOR_CHECK_FAMILY_MYSQL","ADVISOR_CHECK_FAMILY_POSTGRESQL","ADVISOR_CHECK_FAMILY_MONGODB"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + listSecurityChecksOkBodyChecksItems0TypeFamilyPropEnum = append(listSecurityChecksOkBodyChecksItems0TypeFamilyPropEnum, v) + } +} + +const ( + + // ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYINVALID captures enum value "ADVISOR_CHECK_FAMILY_INVALID" + ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYINVALID string = "ADVISOR_CHECK_FAMILY_INVALID" + + // ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYMYSQL captures enum value "ADVISOR_CHECK_FAMILY_MYSQL" + ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYMYSQL string = "ADVISOR_CHECK_FAMILY_MYSQL" + + // ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYPOSTGRESQL captures enum value "ADVISOR_CHECK_FAMILY_POSTGRESQL" + ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYPOSTGRESQL string = "ADVISOR_CHECK_FAMILY_POSTGRESQL" + + // ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYMONGODB captures enum value "ADVISOR_CHECK_FAMILY_MONGODB" + ListSecurityChecksOKBodyChecksItems0FamilyADVISORCHECKFAMILYMONGODB string = "ADVISOR_CHECK_FAMILY_MONGODB" +) + +// prop value enum +func (o *ListSecurityChecksOKBodyChecksItems0) validateFamilyEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, listSecurityChecksOkBodyChecksItems0TypeFamilyPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *ListSecurityChecksOKBodyChecksItems0) validateFamily(formats strfmt.Registry) error { + if swag.IsZero(o.Family) { // not required + return nil + } + + // value enum + if err := o.validateFamilyEnum("family", "body", *o.Family); err != nil { + return err + } + + return nil +} + // ContextValidate validates this list security checks OK body checks items0 based on context it is used func (o *ListSecurityChecksOKBodyChecksItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { return nil diff --git a/api/managementpb/json/managementpb.json b/api/managementpb/json/managementpb.json index 63d67d39ee..b981b798d0 100644 --- a/api/managementpb/json/managementpb.json +++ b/api/managementpb/json/managementpb.json @@ -1434,6 +1434,17 @@ "type": "boolean", "x-order": 1 }, + "family": { + "type": "string", + "default": "ADVISOR_CHECK_FAMILY_INVALID", + "enum": [ + "ADVISOR_CHECK_FAMILY_INVALID", + "ADVISOR_CHECK_FAMILY_MYSQL", + "ADVISOR_CHECK_FAMILY_POSTGRESQL", + "ADVISOR_CHECK_FAMILY_MONGODB" + ], + "x-order": 5 + }, "interval": { "description": "SecurityCheckInterval represents possible execution interval values for checks.", "type": "string", @@ -6494,6 +6505,17 @@ "type": "boolean", "x-order": 1 }, + "family": { + "type": "string", + "default": "ADVISOR_CHECK_FAMILY_INVALID", + "enum": [ + "ADVISOR_CHECK_FAMILY_INVALID", + "ADVISOR_CHECK_FAMILY_MYSQL", + "ADVISOR_CHECK_FAMILY_POSTGRESQL", + "ADVISOR_CHECK_FAMILY_MONGODB" + ], + "x-order": 5 + }, "interval": { "description": "SecurityCheckInterval represents possible execution interval values for checks.", "type": "string", diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 926ca7fa3f..0dcc0b263b 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -18325,6 +18325,17 @@ "RARE" ], "x-order": 4 + }, + "family": { + "type": "string", + "default": "ADVISOR_CHECK_FAMILY_INVALID", + "enum": [ + "ADVISOR_CHECK_FAMILY_INVALID", + "ADVISOR_CHECK_FAMILY_MYSQL", + "ADVISOR_CHECK_FAMILY_POSTGRESQL", + "ADVISOR_CHECK_FAMILY_MONGODB" + ], + "x-order": 5 } } }, @@ -29894,6 +29905,17 @@ "RARE" ], "x-order": 4 + }, + "family": { + "type": "string", + "default": "ADVISOR_CHECK_FAMILY_INVALID", + "enum": [ + "ADVISOR_CHECK_FAMILY_INVALID", + "ADVISOR_CHECK_FAMILY_MYSQL", + "ADVISOR_CHECK_FAMILY_POSTGRESQL", + "ADVISOR_CHECK_FAMILY_MONGODB" + ], + "x-order": 5 } } }, diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 24f7b6c588..7d21baaf18 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -15558,6 +15558,17 @@ "RARE" ], "x-order": 4 + }, + "family": { + "type": "string", + "default": "ADVISOR_CHECK_FAMILY_INVALID", + "enum": [ + "ADVISOR_CHECK_FAMILY_INVALID", + "ADVISOR_CHECK_FAMILY_MYSQL", + "ADVISOR_CHECK_FAMILY_POSTGRESQL", + "ADVISOR_CHECK_FAMILY_MONGODB" + ], + "x-order": 5 } } }, @@ -20598,6 +20609,17 @@ "RARE" ], "x-order": 4 + }, + "family": { + "type": "string", + "default": "ADVISOR_CHECK_FAMILY_INVALID", + "enum": [ + "ADVISOR_CHECK_FAMILY_INVALID", + "ADVISOR_CHECK_FAMILY_MYSQL", + "ADVISOR_CHECK_FAMILY_POSTGRESQL", + "ADVISOR_CHECK_FAMILY_MONGODB" + ], + "x-order": 5 } } }, diff --git a/go.mod b/go.mod index 27f7a927b2..f0791c9bfa 100644 --- a/go.mod +++ b/go.mod @@ -55,7 +55,7 @@ require ( github.com/operator-framework/api v0.17.6 github.com/operator-framework/operator-lifecycle-manager v0.24.0 github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c - github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342 + github.com/percona-platform/saas v0.0.0-20230713134421-bb403194c5f7 github.com/percona/dbaas-operator v0.1.6 github.com/percona/exporter_shared v0.7.4 github.com/percona/go-mysql v0.0.0-20210427141028-73d29c6da78c diff --git a/go.sum b/go.sum index cecc14e29d..6a9e60c069 100644 --- a/go.sum +++ b/go.sum @@ -645,8 +645,8 @@ github.com/percona-lab/crypto v0.0.0-20220811043533-d164de3c7f08 h1:NprWeXddFZJS github.com/percona-lab/crypto v0.0.0-20220811043533-d164de3c7f08/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c h1:1JySfwdjVfc9ahl0466OX7nSQ7Z4SjQkLe3ZdLkMOJI= github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c/go.mod h1:/jgle33awfHq1va/T6NnNS5wWAETSnl6wUZ1bew+CJ0= -github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342 h1:ilguq4u7k08QxS3UDYINt8x6+AOgB0wZApd1o4IK8rQ= -github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342/go.mod h1:gFUwaFp6Ugu5qsBwiOVJYbDlzgZ77tmXdXGO7tG5xVI= +github.com/percona-platform/saas v0.0.0-20230713134421-bb403194c5f7 h1:9XwfsWsQjWLWZpm9ouuAMZGZ3g4bT4pt0E/fr0Tc/Vo= +github.com/percona-platform/saas v0.0.0-20230713134421-bb403194c5f7/go.mod h1:lZuFcqj0EoQWx28SYkTcdhJOCQEbRcAyahYPfRMY7tc= github.com/percona/dbaas-operator v0.1.6 h1:NsZXDKcPXk38kET+X6r8Es+3Supyu5XJZMS0gqPejKs= github.com/percona/dbaas-operator v0.1.6/go.mod h1:52B/kh+Jmtfv0JiZgDcc34qgbwwEi9U4A3311JBxIZg= github.com/percona/exporter_shared v0.7.4 h1:S+xnfK/CySiYqr4XqLiLAfO3rxgEOUFK+m6lCBi3mgc= diff --git a/managed/services/checks/checks.go b/managed/services/checks/checks.go index 72c915ed30..1d14bedb8b 100644 --- a/managed/services/checks/checks.go +++ b/managed/services/checks/checks.go @@ -717,7 +717,7 @@ func (s *Service) executeChecks(ctx context.Context, intervalGroup check.Interva if err != nil { return errors.WithStack(err) } - mySQLChecks, postgreSQLChecks, mongoDBChecks := services.GroupChecksByDB(s.l, checks) + mySQLChecks, postgreSQLChecks, mongoDBChecks := groupChecksByDB(s.l, checks) mySQLChecks = s.filterChecks(mySQLChecks, intervalGroup, disabledChecks, checkNames) mySQLCheckResults := s.executeChecksForTargetType(ctx, models.MySQLServiceType, mySQLChecks) @@ -1689,7 +1689,7 @@ func (s *Service) refreshChecksInMemoryMetric() { return } s.mChecksAvailable.Reset() - mySQLChecks, postgreSQLChecks, mongoDBChecks := services.GroupChecksByDB(s.l, checks) + mySQLChecks, postgreSQLChecks, mongoDBChecks := groupChecksByDB(s.l, checks) s.incChecksInMemoryMetric(models.MySQLServiceType, mySQLChecks) s.incChecksInMemoryMetric(models.PostgreSQLServiceType, postgreSQLChecks) s.incChecksInMemoryMetric(models.MongoDBServiceType, mongoDBChecks) @@ -1701,6 +1701,27 @@ func (s *Service) incChecksInMemoryMetric(serviceType models.ServiceType, checks } } +// groupChecksByDB splits provided checks by database and returns three slices: for MySQL, for PostgreSQL and for MongoDB. +func groupChecksByDB(l *logrus.Entry, checks map[string]check.Check) (mySQLChecks, postgreSQLChecks, mongoDBChecks map[string]check.Check) { //nolint:nonamedreturns + mySQLChecks = make(map[string]check.Check) + postgreSQLChecks = make(map[string]check.Check) + mongoDBChecks = make(map[string]check.Check) + for _, c := range checks { + switch c.GetFamily() { + case check.MySQL: + mySQLChecks[c.Name] = c + case check.PostgreSQL: + postgreSQLChecks[c.Name] = c + case check.MongoDB: + mongoDBChecks[c.Name] = c + default: + l.Warnf("Unknown check family %s, will be skipped.", c.Family) + } + } + + return +} + // check interfaces. var ( _ prom.Collector = (*Service)(nil) diff --git a/managed/services/checks/checks_test.go b/managed/services/checks/checks_test.go index 4803f47e37..1eba59211c 100644 --- a/managed/services/checks/checks_test.go +++ b/managed/services/checks/checks_test.go @@ -29,6 +29,7 @@ import ( metrics "github.com/prometheus/client_golang/api" v1 "github.com/prometheus/client_golang/api/prometheus/v1" "github.com/prometheus/common/model" + "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -929,3 +930,50 @@ func TestFillQueryPlaceholders(t *testing.T) { }) } } + +func TestGroupChecksByDB(t *testing.T) { + t.Parallel() + + checks := map[string]check.Check{ + "MySQLShow": {Name: "MySQLShow", Version: 1, Type: check.MySQLShow}, + "MySQLSelect": {Name: "MySQLSelect", Version: 1, Type: check.MySQLSelect}, + "PostgreSQLShow": {Name: "PostgreSQLShow", Version: 1, Type: check.PostgreSQLShow}, + "PostgreSQLSelect": {Name: "PostgreSQLSelect", Version: 1, Type: check.PostgreSQLSelect}, + "MongoDBGetParameter": {Name: "MongoDBGetParameter", Version: 1, Type: check.MongoDBGetParameter}, + "MongoDBBuildInfo": {Name: "MongoDBBuildInfo", Version: 1, Type: check.MongoDBBuildInfo}, + "MongoDBGetCmdLineOpts": {Name: "MongoDBGetCmdLineOpts", Version: 1, Type: check.MongoDBGetCmdLineOpts}, + "MongoDBReplSetGetStatus": {Name: "MongoDBReplSetGetStatus", Version: 1, Type: check.MongoDBReplSetGetStatus}, + "MongoDBGetDiagnosticData": {Name: "MongoDBGetDiagnosticData", Version: 1, Type: check.MongoDBGetDiagnosticData}, + "unsupported type": {Name: "unsupported type", Version: 1, Type: check.Type("RedisInfo")}, + "missing type": {Name: "missing type", Version: 1}, + "MySQL family V2": {Name: "MySQL family V2", Version: 2, Family: check.MySQL}, + "PostgreSQL family V2": {Name: "PostgreSQL family V2", Version: 2, Family: check.PostgreSQL}, + "MongoDB family V2": {Name: "MongoDB family V2", Version: 2, Family: check.MongoDB}, + "missing family": {Name: "missing family", Version: 2}, + } + + l := logrus.WithField("component", "tests") + mySQLChecks, postgreSQLChecks, mongoDBChecks := groupChecksByDB(l, checks) + + require.Len(t, mySQLChecks, 3) + require.Len(t, postgreSQLChecks, 3) + require.Len(t, mongoDBChecks, 6) + + // V1 checks + assert.Equal(t, check.MySQLShow, mySQLChecks["MySQLShow"].Type) + assert.Equal(t, check.MySQLSelect, mySQLChecks["MySQLSelect"].Type) + + assert.Equal(t, check.PostgreSQLShow, postgreSQLChecks["PostgreSQLShow"].Type) + assert.Equal(t, check.PostgreSQLSelect, postgreSQLChecks["PostgreSQLSelect"].Type) + + assert.Equal(t, check.MongoDBGetParameter, mongoDBChecks["MongoDBGetParameter"].Type) + assert.Equal(t, check.MongoDBBuildInfo, mongoDBChecks["MongoDBBuildInfo"].Type) + assert.Equal(t, check.MongoDBGetCmdLineOpts, mongoDBChecks["MongoDBGetCmdLineOpts"].Type) + assert.Equal(t, check.MongoDBReplSetGetStatus, mongoDBChecks["MongoDBReplSetGetStatus"].Type) + assert.Equal(t, check.MongoDBGetDiagnosticData, mongoDBChecks["MongoDBGetDiagnosticData"].Type) + + // V2 checks + assert.Equal(t, check.MySQL, mySQLChecks["MySQL family V2"].Family) + assert.Equal(t, check.PostgreSQL, postgreSQLChecks["PostgreSQL family V2"].Family) + assert.Equal(t, check.MongoDB, mongoDBChecks["MongoDB family V2"].Family) +} diff --git a/managed/services/management/checks.go b/managed/services/management/checks.go index 4589c6ee14..705448cd0e 100644 --- a/managed/services/management/checks.go +++ b/managed/services/management/checks.go @@ -240,6 +240,7 @@ func (s *ChecksAPIService) ListSecurityChecks(_ context.Context, _ *managementpb Name: c.Name, Disabled: disabled, Summary: c.Summary, + Family: convertFamily(c.GetFamily()), Description: c.Description, Interval: convertInterval(c.Interval), }) @@ -273,6 +274,7 @@ func (s *ChecksAPIService) ListAdvisors(_ context.Context, _ *managementpb.ListA Name: c.Name, Disabled: disabled, Summary: c.Summary, + Family: convertFamily(c.GetFamily()), Description: c.Description, Interval: convertInterval(c.Interval), }) @@ -282,7 +284,7 @@ func (s *ChecksAPIService) ListAdvisors(_ context.Context, _ *managementpb.ListA Name: a.Name, Description: a.Description, Summary: a.Summary, - Comment: createComment(s.l, a.Checks), + Comment: createComment(a.Checks), Category: a.Category, Checks: checks, }) @@ -291,22 +293,27 @@ func (s *ChecksAPIService) ListAdvisors(_ context.Context, _ *managementpb.ListA return &managementpb.ListAdvisorsResponse{Advisors: res}, nil } -func createComment(l *logrus.Entry, checks []check.Check) string { - checksM := make(map[string]check.Check, len(checks)) +func createComment(checks []check.Check) string { + var mySQL, postgreSQL, mongoDB bool for _, c := range checks { - checksM[c.Name] = c + switch c.GetFamily() { + case check.MySQL: + mySQL = true + case check.PostgreSQL: + postgreSQL = true + case check.MongoDB: + mongoDB = true + } } - mysqlChecks, portgreSQLChecks, mongoDBChecks := services.GroupChecksByDB(l, checksM) - b := make([]string, 0, 3) - if len(mysqlChecks) != 0 { + if mySQL { b = append(b, "MySQL") } - if len(portgreSQLChecks) != 0 { + if postgreSQL { b = append(b, "PostgreSQL") } - if len(mongoDBChecks) != 0 { + if mongoDB { b = append(b, "MongoDB") } @@ -377,6 +384,20 @@ func convertInterval(interval check.Interval) managementpb.SecurityCheckInterval } } +// convertFamily converts check.Family type to managementpb.AdvisorCheckFamily. +func convertFamily(family check.Family) managementpb.AdvisorCheckFamily { + switch family { + case check.MySQL: + return managementpb.AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_MYSQL + case check.PostgreSQL: + return managementpb.AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_POSTGRESQL + case check.MongoDB: + return managementpb.AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_MONGODB + default: + return managementpb.AdvisorCheckFamily_ADVISOR_CHECK_FAMILY_INVALID + } +} + // convertAPIInterval converts managementpb.SecurityCheckInterval type to check.Interval. func convertAPIInterval(interval managementpb.SecurityCheckInterval) (check.Interval, error) { switch interval { diff --git a/managed/services/management/checks_test.go b/managed/services/management/checks_test.go index d630910ffc..27fca1950b 100644 --- a/managed/services/management/checks_test.go +++ b/managed/services/management/checks_test.go @@ -23,7 +23,6 @@ import ( "github.com/percona-platform/saas/pkg/check" "github.com/percona-platform/saas/pkg/common" "github.com/pkg/errors" - "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" @@ -465,8 +464,6 @@ func TestUpdateSecurityChecks(t *testing.T) { func TestCreateComment(t *testing.T) { t.Parallel() - l := logrus.WithField("component", "tests") - testCases := []struct { Name string Comment string @@ -502,7 +499,7 @@ func TestCreateComment(t *testing.T) { t.Run(tc.Name, func(t *testing.T) { t.Parallel() - assert.Equal(t, tc.Comment, createComment(l, tc.Checks)) + assert.Equal(t, tc.Comment, createComment(tc.Checks)) }) } } diff --git a/managed/services/utils.go b/managed/services/utils.go deleted file mode 100644 index c67ba0518f..0000000000 --- a/managed/services/utils.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2023 Percona LLC -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package services - -import ( - "github.com/percona-platform/saas/pkg/check" - "github.com/sirupsen/logrus" -) - -// GroupChecksByDB splits provided checks by database and returns three -// slices: for MySQL, for PostgreSQL and for MongoDB. -func GroupChecksByDB( - l *logrus.Entry, - checks map[string]check.Check, -) (map[string]check.Check, map[string]check.Check, map[string]check.Check) { - mySQLChecks := make(map[string]check.Check) - postgreSQLChecks := make(map[string]check.Check) - mongoDBChecks := make(map[string]check.Check) - for _, c := range checks { - switch c.Version { - case 1: - switch c.Type { - case check.MySQLSelect: - fallthrough - case check.MySQLShow: - mySQLChecks[c.Name] = c - - case check.PostgreSQLSelect: - fallthrough - case check.PostgreSQLShow: - postgreSQLChecks[c.Name] = c - - case check.MongoDBGetParameter: - fallthrough - case check.MongoDBBuildInfo: - fallthrough - case check.MongoDBGetCmdLineOpts: - fallthrough - case check.MongoDBReplSetGetStatus: - fallthrough - case check.MongoDBGetDiagnosticData: - mongoDBChecks[c.Name] = c - - default: - l.Warnf("Unknown check type %s, skip it.", c.Type) - } - case 2: - switch c.Family { - case check.MySQL: - mySQLChecks[c.Name] = c - case check.PostgreSQL: - postgreSQLChecks[c.Name] = c - case check.MongoDB: - mongoDBChecks[c.Name] = c - default: - l.Warnf("Unknown check family %s, skip it.", c.Family) - } - } - } - - return mySQLChecks, postgreSQLChecks, mongoDBChecks -} diff --git a/managed/services/utils_test.go b/managed/services/utils_test.go deleted file mode 100644 index a8d1623784..0000000000 --- a/managed/services/utils_test.go +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (C) 2017 Percona LLC -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package services - -import ( - "testing" - - "github.com/percona-platform/saas/pkg/check" - "github.com/sirupsen/logrus" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestGroupChecksByDB(t *testing.T) { - t.Parallel() - - checks := map[string]check.Check{ - "MySQLShow": {Name: "MySQLShow", Version: 1, Type: check.MySQLShow}, - "MySQLSelect": {Name: "MySQLSelect", Version: 1, Type: check.MySQLSelect}, - "PostgreSQLShow": {Name: "PostgreSQLShow", Version: 1, Type: check.PostgreSQLShow}, - "PostgreSQLSelect": {Name: "PostgreSQLSelect", Version: 1, Type: check.PostgreSQLSelect}, - "MongoDBGetParameter": {Name: "MongoDBGetParameter", Version: 1, Type: check.MongoDBGetParameter}, - "MongoDBBuildInfo": {Name: "MongoDBBuildInfo", Version: 1, Type: check.MongoDBBuildInfo}, - "MongoDBGetCmdLineOpts": {Name: "MongoDBGetCmdLineOpts", Version: 1, Type: check.MongoDBGetCmdLineOpts}, - "MongoDBReplSetGetStatus": {Name: "MongoDBReplSetGetStatus", Version: 1, Type: check.MongoDBReplSetGetStatus}, - "MongoDBGetDiagnosticData": {Name: "MongoDBGetDiagnosticData", Version: 1, Type: check.MongoDBGetDiagnosticData}, - "unsupported type": {Name: "unsupported type", Version: 1, Type: check.Type("RedisInfo")}, - "missing type": {Name: "missing type", Version: 1}, - "MySQL family V2": {Name: "MySQL family V2", Version: 2, Family: check.MySQL}, - "PostgreSQL family V2": {Name: "PostgreSQL family V2", Version: 2, Family: check.PostgreSQL}, - "MongoDB family V2": {Name: "MongoDB family V2", Version: 2, Family: check.MongoDB}, - "missing family": {Name: "missing family", Version: 2}, - } - - l := logrus.WithField("component", "tests") - mySQLChecks, postgreSQLChecks, mongoDBChecks := GroupChecksByDB(l, checks) - - require.Len(t, mySQLChecks, 3) - require.Len(t, postgreSQLChecks, 3) - require.Len(t, mongoDBChecks, 6) - - // V1 checks - assert.Equal(t, check.MySQLShow, mySQLChecks["MySQLShow"].Type) - assert.Equal(t, check.MySQLSelect, mySQLChecks["MySQLSelect"].Type) - - assert.Equal(t, check.PostgreSQLShow, postgreSQLChecks["PostgreSQLShow"].Type) - assert.Equal(t, check.PostgreSQLSelect, postgreSQLChecks["PostgreSQLSelect"].Type) - - assert.Equal(t, check.MongoDBGetParameter, mongoDBChecks["MongoDBGetParameter"].Type) - assert.Equal(t, check.MongoDBBuildInfo, mongoDBChecks["MongoDBBuildInfo"].Type) - assert.Equal(t, check.MongoDBGetCmdLineOpts, mongoDBChecks["MongoDBGetCmdLineOpts"].Type) - assert.Equal(t, check.MongoDBReplSetGetStatus, mongoDBChecks["MongoDBReplSetGetStatus"].Type) - assert.Equal(t, check.MongoDBGetDiagnosticData, mongoDBChecks["MongoDBGetDiagnosticData"].Type) - - // V2 checks - assert.Equal(t, check.MySQL, mySQLChecks["MySQL family V2"].Family) - assert.Equal(t, check.PostgreSQL, postgreSQLChecks["PostgreSQL family V2"].Family) - assert.Equal(t, check.MongoDB, mongoDBChecks["MongoDB family V2"].Family) -} From 1356060d74867e8f3c203dce4ac00ee5ce1077a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20=C4=8Ctvrtka?= <62988319+JiriCtvrtka@users.noreply.github.com> Date: Mon, 17 Jul 2023 09:34:51 +0200 Subject: [PATCH 113/123] PMM-6279 Allow show multiple metadata values. (#2324) * PMM-6279 Allow printout multiple metadata values. * PMM-6279 Typo. * PMM-6279 Refresh test data. * PMM-6279 Lint. * PMM-6279 Lint. * PMM-6279 Lint. * PMM-6279 Lint. * PMM-6279 Remove some metadata from table. * PMM-6279 Fix test after changes. * Update qan-api2/models/metrics.go Co-authored-by: Artem Gavrilov * PMM-6279 Required changes. * PMM-6279 Fix. * PMM-6279 Refactor and changes. * PMM-6279 Fix. * PMM-6279 Add sort, refresh test data. --------- Co-authored-by: Artem Gavrilov --- qan-api2/models/metrics.go | 91 ++++++++++++------- .../GetMetrics_group_by_queryid.json | 8 +- .../GetMetrics_sparklines_90_points.json | 8 +- qan-api2/test_data/GetMetrics_total.json | 8 +- 4 files changed, 68 insertions(+), 47 deletions(-) diff --git a/qan-api2/models/metrics.go b/qan-api2/models/metrics.go index 099465cc04..604cd06659 100644 --- a/qan-api2/models/metrics.go +++ b/qan-api2/models/metrics.go @@ -23,6 +23,7 @@ import ( "fmt" "log" "sort" + "strings" "text/template" "time" @@ -1033,18 +1034,16 @@ func (m *Metrics) ExplainFingerprintByQueryID(ctx context.Context, serviceID, qu } const selectedQueryMetadataTmpl = ` -SELECT any(service_name), - any(database), - any(schema), - any(username), - any(replication_set), - any(cluster), - any(service_type), - any(service_id), - any(environment), - any(node_id), - any(node_name), - any(node_type) +SELECT DISTINCT service_name, + database, + schema, + username, + replication_set, + cluster, + service_type, + environment, + node_name, + node_type FROM metrics WHERE period_start >= :period_start_from AND period_start <= :period_start_to {{ if not .Totals }} AND {{ .Group }} = '{{ .DimensionVal }}' @@ -1058,10 +1057,7 @@ WHERE period_start >= :period_start_from AND period_start <= :period_start_to AND ({{range $key, $vals := .Labels }}{{ $i = inc $i}} {{ if gt $i 1}} OR {{ end }} has(['{{ StringsJoin $vals "', '" }}'], labels.value[indexOf(labels.key, '{{ $key }}')]) {{ end }}) -{{ end }} -{{ if not .Totals }} GROUP BY {{ .Group }} {{ end }} -WITH TOTALS; ` // GetSelectedQueryMetadata returns metadata for given query ID. @@ -1120,26 +1116,57 @@ func (m *Metrics) GetSelectedQueryMetadata(ctx context.Context, periodStartFromS } defer rows.Close() + metadata := make(map[string]map[string]struct{}) + columnNames, err := rows.Columns() + if err != nil { + return nil, errors.Wrap(err, "failed to get column names") + } + for _, name := range columnNames { + metadata[name] = make(map[string]struct{}) + } + for rows.Next() { - err = rows.Scan( - &res.ServiceName, - &res.Database, - &res.Schema, - &res.Username, - &res.ReplicationSet, - &res.Cluster, - &res.ServiceType, - &res.ServiceId, - &res.Environment, - &res.NodeId, - &res.NodeName, - &res.NodeType) + row := make([]any, len(columnNames)) + for i := range columnNames { + row[i] = new(string) + } + + err = rows.Scan(row...) if err != nil { - return res, errors.Wrap(err, "failed to scan query") - } else { - return res, nil + if errors.Is(err, sql.ErrNoRows) { + return nil, errors.Wrap(err, "query_id doesnt exists") + } + return nil, errors.Wrap(err, "failed to scan query") + } + + for k, v := range row { + if value, ok := v.(*string); ok { + metadata[columnNames[k]][*value] = struct{}{} + } } } - return res, errors.New("query_id doesnt exists") + res.ServiceName = prepareMetadataProperty(metadata["service_name"]) + res.Database = prepareMetadataProperty(metadata["database"]) + res.Schema = prepareMetadataProperty(metadata["schema"]) + res.Username = prepareMetadataProperty(metadata["username"]) + res.ReplicationSet = prepareMetadataProperty(metadata["replication_set"]) + res.Cluster = prepareMetadataProperty(metadata["cluster"]) + res.ServiceType = prepareMetadataProperty(metadata["service_type"]) + res.Environment = prepareMetadataProperty(metadata["environment"]) + res.NodeName = prepareMetadataProperty(metadata["node_name"]) + res.NodeType = prepareMetadataProperty(metadata["node_type"]) + + return res, nil +} + +func prepareMetadataProperty(metadata map[string]struct{}) string { + res := []string{} + for k := range metadata { + res = append(res, k) + } + + sort.Strings(res) + + return strings.Join(res, ", ") } diff --git a/qan-api2/test_data/GetMetrics_group_by_queryid.json b/qan-api2/test_data/GetMetrics_group_by_queryid.json index d4e86c01e2..c383b330df 100644 --- a/qan-api2/test_data/GetMetrics_group_by_queryid.json +++ b/qan-api2/test_data/GetMetrics_group_by_queryid.json @@ -3435,15 +3435,13 @@ }, "fingerprint": "select @@global.slow_query_log_file", "metadata": { - "serviceName": "server0", - "schema": "schema29", - "username": "user8", + "serviceName": "server0, server1, server2, server3, server4, server5, server6, server7, server8, server9", + "schema": "schema0, schema1, schema10, schema13, schema14, schema20, schema21, schema23, schema27, schema28, schema29, schema3, schema30, schema31, schema33, schema35, schema37, schema40, schema42, schema44, schema46, schema47, schema48, schema51, schema52, schema53, schema56, schema58, schema59, schema60, schema61, schema65, schema68, schema69, schema70, schema72, schema74, schema75, schema76, schema77, schema80, schema81, schema82, schema84, schema88, schema89, schema94, schema96, schema97, schema99", + "username": "user1, user10, user14, user16, user24, user26, user27, user28, user30, user31, user32, user33, user34, user38, user40, user41, user44, user45, user46, user49, user55, user56, user6, user60, user61, user64, user67, user69, user70, user74, user76, user79, user8, user82, user84, user85, user86, user87, user89, user90, user91, user92, user95, user96, user97, user98, user99", "replicationSet": "replication_set1", "cluster": "cluster1", "serviceType": "service_type1", - "serviceId": "service_id1", "environment": "environment1", - "nodeId": "node_id1", "nodeName": "node_name1", "nodeType": "node_type1" } diff --git a/qan-api2/test_data/GetMetrics_sparklines_90_points.json b/qan-api2/test_data/GetMetrics_sparklines_90_points.json index 4b69df0d83..91cedf727d 100644 --- a/qan-api2/test_data/GetMetrics_sparklines_90_points.json +++ b/qan-api2/test_data/GetMetrics_sparklines_90_points.json @@ -1437,15 +1437,13 @@ }, "fingerprint": "select @@global.slow_query_log_file", "metadata": { - "serviceName": "server2", - "schema": "schema81", - "username": "user38", + "serviceName": "server2, server3, server4, server5, server6, server7, server8, server9", + "schema": "schema10, schema13, schema3, schema33, schema35, schema40, schema44, schema52, schema59, schema61, schema72, schema81, schema96", + "username": "user1, user26, user27, user28, user31, user38, user64, user82, user95, user96, user97, user98", "replicationSet": "replication_set1", "cluster": "cluster1", "serviceType": "service_type1", - "serviceId": "service_id1", "environment": "environment1", - "nodeId": "node_id1", "nodeName": "node_name1", "nodeType": "node_type1" } diff --git a/qan-api2/test_data/GetMetrics_total.json b/qan-api2/test_data/GetMetrics_total.json index 32978b0f56..d144f24dd5 100644 --- a/qan-api2/test_data/GetMetrics_total.json +++ b/qan-api2/test_data/GetMetrics_total.json @@ -6698,15 +6698,13 @@ } }, "metadata": { - "serviceName": "server0", - "schema": "schema12", - "username": "user19", + "serviceName": "server0, server1, server2, server3, server4, server5, server6, server7, server8, server9", + "schema": "schema0, schema1, schema10, schema11, schema12, schema13, schema14, schema15, schema16, schema17, schema18, schema19, schema2, schema20, schema21, schema22, schema23, schema24, schema25, schema26, schema27, schema28, schema29, schema3, schema30, schema31, schema32, schema33, schema34, schema35, schema36, schema37, schema38, schema39, schema4, schema40, schema41, schema42, schema43, schema44, schema45, schema46, schema47, schema48, schema49, schema5, schema50, schema51, schema52, schema53, schema54, schema55, schema56, schema57, schema58, schema59, schema6, schema60, schema61, schema62, schema63, schema64, schema65, schema66, schema67, schema68, schema69, schema7, schema70, schema71, schema72, schema73, schema74, schema75, schema76, schema77, schema78, schema79, schema8, schema80, schema81, schema82, schema83, schema84, schema85, schema86, schema87, schema88, schema89, schema9, schema90, schema91, schema92, schema93, schema94, schema95, schema96, schema97, schema98, schema99", + "username": "user0, user1, user10, user11, user12, user13, user14, user15, user16, user17, user18, user19, user2, user20, user21, user22, user23, user24, user25, user26, user27, user28, user29, user3, user30, user31, user32, user33, user34, user35, user36, user37, user38, user39, user4, user40, user41, user42, user43, user44, user45, user46, user47, user48, user49, user5, user50, user51, user52, user53, user54, user55, user56, user57, user58, user59, user6, user60, user61, user62, user63, user64, user65, user66, user67, user68, user69, user7, user70, user71, user72, user73, user74, user75, user76, user77, user78, user79, user8, user80, user81, user82, user83, user84, user85, user86, user87, user88, user89, user9, user90, user91, user92, user93, user94, user95, user96, user97, user98, user99", "replicationSet": "replication_set1", "cluster": "cluster1", "serviceType": "service_type1", - "serviceId": "service_id1", "environment": "environment1", - "nodeId": "node_id1", "nodeName": "node_name1", "nodeType": "node_type1" } From bfc97766c4dab804cfe6b06117a4ecb7b03b56c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 08:58:08 +0000 Subject: [PATCH 114/123] Bump github.com/bufbuild/buf from 1.23.0 to 1.24.0 in /tools (#2367) Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.23.0 to 1.24.0. - [Release notes](https://github.com/bufbuild/buf/releases) - [Changelog](https://github.com/bufbuild/buf/blob/main/CHANGELOG.md) - [Commits](https://github.com/bufbuild/buf/compare/v1.23.0...v1.24.0) --- updated-dependencies: - dependency-name: github.com/bufbuild/buf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 16 ++++++++-------- tools/go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index c3fbe128cd..8c14fb67fa 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -8,7 +8,7 @@ require ( github.com/BurntSushi/go-sumtype v0.0.0-20190304192233-fcb4a6205bdc github.com/Percona-Lab/swagger-order v0.0.0-20191002141859-166b3973d026 github.com/apache/skywalking-eyes v0.4.0 - github.com/bufbuild/buf v1.23.0 + github.com/bufbuild/buf v1.24.0 github.com/daixiang0/gci v0.10.1 github.com/envoyproxy/protoc-gen-validate v1.0.1 github.com/go-delve/delve v1.21.0 @@ -44,8 +44,8 @@ require ( github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/bmatcuk/doublestar/v2 v2.0.4 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 // indirect - github.com/bufbuild/connect-go v1.8.0 // indirect - github.com/bufbuild/connect-opentelemetry-go v0.3.0 // indirect + github.com/bufbuild/connect-go v1.9.0 // indirect + github.com/bufbuild/connect-opentelemetry-go v0.4.0 // indirect github.com/bufbuild/protocompile v0.5.1 // indirect github.com/chigopher/pathlib v0.15.0 // indirect github.com/cilium/ebpf v0.7.0 // indirect @@ -54,9 +54,9 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/denisenkom/go-mssqldb v0.9.0 // indirect github.com/derekparker/trie v0.0.0-20221213183930-4c74548207f4 // indirect - github.com/docker/cli v24.0.2+incompatible // indirect + github.com/docker/cli v24.0.4+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v24.0.2+incompatible // indirect + github.com/docker/docker v24.0.4+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -99,7 +99,7 @@ require ( github.com/google/go-github/v41 v41.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/licensecheck v0.3.1 // indirect - github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect + github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.7.1 // indirect @@ -121,7 +121,7 @@ require ( github.com/jinzhu/copier v0.3.5 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/kisielk/gotool v1.0.0 // indirect - github.com/klauspost/compress v1.16.6 // indirect + github.com/klauspost/compress v1.16.7 // indirect github.com/klauspost/pgzip v1.2.6 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect @@ -142,7 +142,7 @@ require ( github.com/morikuni/aec v1.0.0 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc3 // indirect + github.com/opencontainers/image-spec v1.1.0-rc4 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect diff --git a/tools/go.sum b/tools/go.sum index d265497fc9..be6c4fec71 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -103,12 +103,12 @@ github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 h1:tXKVfhE7FcSkhkv0UwkLvPDeZ4k github.com/bradleyfalzon/ghinstallation/v2 v2.0.4/go.mod h1:B40qPqJxWE0jDZgOR1JmaMy+4AY1eBP+IByOvqyAKp0= github.com/brianvoe/gofakeit v3.18.0+incompatible h1:wDOmHc9DLG4nRjUVVaxA+CEglKOW72Y5+4WNxUIkjM8= github.com/brianvoe/gofakeit v3.18.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= -github.com/bufbuild/buf v1.23.0 h1:QD6xCygtCVhN6qsQ4TtE2xGRK86xGkjI9lNHJ5jaj+M= -github.com/bufbuild/buf v1.23.0/go.mod h1:ERFRzJiIjAOzUSJ3vz1zoI7XfxlBnCwZEyL+NJm4pko= -github.com/bufbuild/connect-go v1.8.0 h1:srluNkFkZBfSfg9Qb6DrO+5nMaxix//h2ctrHZhMGKc= -github.com/bufbuild/connect-go v1.8.0/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= -github.com/bufbuild/connect-opentelemetry-go v0.3.0 h1:AuZi3asTDKmjGtd2aqpyP4p5QvBFG/YEaHopViLatnk= -github.com/bufbuild/connect-opentelemetry-go v0.3.0/go.mod h1:r1ppyTtu1EWeRodk4Q/JbyQhIWtO7eR3GoRDzjeEcNU= +github.com/bufbuild/buf v1.24.0 h1:36rVJMJX7BI9Z6nUPpirF+TUO9tVZ45u5VAfj5E7Bgw= +github.com/bufbuild/buf v1.24.0/go.mod h1:cacBvncWbYnUcNX580lqllR3qlEetMX/KVm27pUc4Kc= +github.com/bufbuild/connect-go v1.9.0 h1:JIgAeNuFpo+SUPfU19Yt5TcWlznsN5Bv10/gI/6Pjoc= +github.com/bufbuild/connect-go v1.9.0/go.mod h1:CAIePUgkDR5pAFaylSMtNK45ANQjp9JvpluG20rhpV8= +github.com/bufbuild/connect-opentelemetry-go v0.4.0 h1:6JAn10SNqlQ/URhvRNGrIlczKw1wEXknBUUtmWqOiak= +github.com/bufbuild/connect-opentelemetry-go v0.4.0/go.mod h1:nwPXYoDOoc2DGyKE/6pT1Q9MPSi2Et2e6BieMD0l6WU= github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -154,12 +154,12 @@ github.com/derekparker/trie v0.0.0-20221213183930-4c74548207f4 h1:atN94qKNhLpy+9 github.com/derekparker/trie v0.0.0-20221213183930-4c74548207f4/go.mod h1:C7Es+DLenIpPc9J6IYw4jrK0h7S9bKj4DNl8+KxGEXU= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/docker/cli v24.0.2+incompatible h1:QdqR7znue1mtkXIJ+ruQMGQhpw2JzMJLRXp6zpzF6tM= -github.com/docker/cli v24.0.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.4+incompatible h1:Y3bYF9ekNTm2VFz5U/0BlMdJy73D+Y1iAAZ8l63Ydzw= +github.com/docker/cli v24.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg= -github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.4+incompatible h1:s/LVDftw9hjblvqIeTiGYXBCD95nOEEl7qRsRrIOuQI= +github.com/docker/docker v24.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= @@ -385,8 +385,8 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 h1:hR7/MlvK23p6+lIw9SN1TigNLn9ZnF3W4SYRKq2gAHs= -github.com/google/pprof v0.0.0-20230602150820-91b7bce49751/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -492,8 +492,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= -github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -576,8 +576,8 @@ github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8= -github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0= +github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= From 46b7060b26346fdf8f795ffe9b5f2d17d86b3aa4 Mon Sep 17 00:00:00 2001 From: Alex Tymchuk Date: Mon, 17 Jul 2023 12:27:13 +0300 Subject: [PATCH 115/123] PMM-12231 set grafana as owner of the plugin dir (#2365) * PMM-12231 set grafana ownership of the plugin dir * PMM-12231 fix the spec's path to built plugins * PMM-12231 apply permissions on the whole directory --- .../rpm/server/SPECS/percona-dashboards.spec | 13 ++++++++----- .../tasks/roles/dashboards_upgrade/tasks/main.yml | 8 ++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/build/packages/rpm/server/SPECS/percona-dashboards.spec b/build/packages/rpm/server/SPECS/percona-dashboards.spec index 737465184c..d5b756cf24 100644 --- a/build/packages/rpm/server/SPECS/percona-dashboards.spec +++ b/build/packages/rpm/server/SPECS/percona-dashboards.spec @@ -7,7 +7,7 @@ %global commit ad4af6808bcd361284e8eb8cd1f36b1e98e32bce %global shortcommit %(c=%{commit}; echo ${c:0:7}) %define build_timestamp %(date -u +"%y%m%d%H%M") -%define release 19 +%define release 20 %define rpm_release %{release}.%{build_timestamp}.%{shortcommit}%{?dist} Name: percona-dashboards @@ -44,19 +44,22 @@ install -d %{buildroot}%{_datadir}/%{name} install -d %{buildroot}%{_datadir}/%{name}/panels/pmm-app install -d %{buildroot}%{_datadir}/%{name}/setup-page -cp -pa ./panels %{buildroot}%{_datadir}/%{name} -cp -pa ./pmm-app/dist %{buildroot}%{_datadir}/%{name}/panels/pmm-app -cp -rpa ./setup-page/build/* %{buildroot}%{_datadir}/%{name}/setup-page +cp -a ./panels %{buildroot}%{_datadir}/%{name} +cp -a ./pmm-app/dist %{buildroot}%{_datadir}/%{name}/panels/pmm-app +cp -ra ./setup-page/build/* %{buildroot}%{_datadir}/%{name}/setup-page echo %{version} > %{buildroot}%{_datadir}/%{name}/VERSION %files %license LICENSE %doc README.md LICENSE -%{_datadir}/%{name} +%attr(-,grafana,grafana) %{_datadir}/%{name} %changelog +* Wed Jul 12 2023 Alex Tymchuk - 2.39.0-20 +- PMM-12231 Set grafana user as owner of plugins directory + * Tue May 16 2023 Oleksii Kysil - 2.38.0-1 - PMM-12118 Skip stripping of plugin binaries diff --git a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml index 022621b028..7c5080cfa9 100644 --- a/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml +++ b/update/ansible/playbook/tasks/roles/dashboards_upgrade/tasks/main.yml @@ -50,6 +50,14 @@ src: /usr/share/percona-dashboards/panels/ dest: /srv/grafana/plugins/ +- name: Set permissions for the plugin directory + file: + path: "/srv/grafana/plugins" + state: directory + owner: grafana + group: grafana + mode: "0775" + - name: Check that the SQLite grafana database exists stat: path: /srv/grafana/grafana.db From 10884b3750063561c8e5e1353d0bd32edbc00bb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 14:28:18 +0000 Subject: [PATCH 116/123] Bump eslint-config-airbnb-typescript from 17.0.0 to 17.1.0 in /cli-tests (#2366) Bumps [eslint-config-airbnb-typescript](https://github.com/iamturns/eslint-config-airbnb-typescript) from 17.0.0 to 17.1.0. - [Release notes](https://github.com/iamturns/eslint-config-airbnb-typescript/releases) - [Changelog](https://github.com/iamturns/eslint-config-airbnb-typescript/blob/master/CHANGELOG.md) - [Commits](https://github.com/iamturns/eslint-config-airbnb-typescript/compare/v17.0.0...v17.1.0) --- updated-dependencies: - dependency-name: eslint-config-airbnb-typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 12 ++++++------ cli-tests/package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 67606383f0..490ccb8938 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -24,7 +24,7 @@ "@typescript-eslint/parser": "^5.62.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-airbnb-typescript": "^17.1.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-playwright": "^0.15.2" } @@ -1000,16 +1000,16 @@ } }, "node_modules/eslint-config-airbnb-typescript": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", - "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", "dev": true, "dependencies": { "eslint-config-airbnb-base": "^15.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.0.0", + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", "eslint": "^7.32.0 || ^8.2.0", "eslint-plugin-import": "^2.25.3" } diff --git a/cli-tests/package.json b/cli-tests/package.json index e8896be006..b9006c6321 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -28,7 +28,7 @@ "@typescript-eslint/parser": "^5.62.0", "eslint": "8.44", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-airbnb-typescript": "^17.1.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-playwright": "^0.15.2" } From 1d2feefe53b7d22570d0f416aef5a57bc8c37c38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 14:42:27 +0000 Subject: [PATCH 117/123] Bump eslint from 8.44.0 to 8.45.0 in /cli-tests (#2369) Bumps [eslint](https://github.com/eslint/eslint) from 8.44.0 to 8.45.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.44.0...v8.45.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- cli-tests/package-lock.json | 10 ++++------ cli-tests/package.json | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/cli-tests/package-lock.json b/cli-tests/package-lock.json index 490ccb8938..115fcb5f9f 100644 --- a/cli-tests/package-lock.json +++ b/cli-tests/package-lock.json @@ -22,7 +22,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.62.0", - "eslint": "8.44", + "eslint": "8.45", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-plugin-import": "^2.27.5", @@ -916,9 +916,9 @@ } }, "node_modules/eslint": { - "version": "8.44.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", - "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -946,7 +946,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -958,7 +957,6 @@ "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { diff --git a/cli-tests/package.json b/cli-tests/package.json index b9006c6321..8b11bd842b 100644 --- a/cli-tests/package.json +++ b/cli-tests/package.json @@ -26,7 +26,7 @@ "@types/shelljs": "^0.8.12", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.62.0", - "eslint": "8.44", + "eslint": "8.45", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-plugin-import": "^2.27.5", From 6e2fa17ab3e5001578b337ecab32976890a4c908 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 13:31:09 +0300 Subject: [PATCH 118/123] Bump github.com/quasilyte/go-consistent in /tools (#2371) Bumps [github.com/quasilyte/go-consistent](https://github.com/quasilyte/go-consistent) from 0.0.0-20200404105227-766526bf1e96 to 0.6.0. - [Release notes](https://github.com/quasilyte/go-consistent/releases) - [Commits](https://github.com/quasilyte/go-consistent/commits/v0.6.0) --- updated-dependencies: - dependency-name: github.com/quasilyte/go-consistent dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 2 +- tools/go.sum | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 8c14fb67fa..f5cc4f13c2 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -17,7 +17,7 @@ require ( github.com/go-swagger/go-swagger v0.29.0 github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 github.com/jstemmer/go-junit-report v1.0.0 - github.com/quasilyte/go-consistent v0.0.0-20200404105227-766526bf1e96 + github.com/quasilyte/go-consistent v0.6.0 github.com/reviewdog/reviewdog v0.14.1 github.com/vburenin/ifacemaker v1.2.1 github.com/vektra/mockery/v2 v2.32.0 diff --git a/tools/go.sum b/tools/go.sum index be6c4fec71..e0aef1e684 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -248,15 +248,12 @@ github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+W github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= github.com/go-toolsmith/astequal v1.0.1 h1:JbSszi42Jiqu36Gnf363HWS9MTEAz67vTQLponh3Moc= github.com/go-toolsmith/astequal v1.0.1/go.mod h1:4oGA3EZXTVItV/ipGiOx7NWkY5veFfcsOJVS2YxltLw= -github.com/go-toolsmith/astinfo v0.0.0-20180906194353-9809ff7efb21/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= github.com/go-toolsmith/astinfo v1.0.0 h1:rNuhpyhsnsze/Pe1l/GUHwxo1rmN7Dyb6oAnFcrXh+w= github.com/go-toolsmith/astinfo v1.0.0/go.mod h1:dDStQCHtmZpYOmjRP/8gHHnCCch3Zz3oEgCdZVdtweU= -github.com/go-toolsmith/pkgload v1.0.0/go.mod h1:5eFArkbO80v7Z0kdngIxsRXRMTaX4Ilcwuh3clNrQJc= github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5 h1:eD9POs68PHkwrx7hAB78z1cb6PfGq/jyWn3wJywsH1o= github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM= github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= -github.com/go-toolsmith/typep v1.0.0/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk= github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= @@ -608,8 +605,8 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/quasilyte/go-consistent v0.0.0-20200404105227-766526bf1e96 h1:6VBkISnfYpPtRvpE9wsVoxX+i0cDQFBPQPYzw259xWY= -github.com/quasilyte/go-consistent v0.0.0-20200404105227-766526bf1e96/go.mod h1:h5ob45vcE3sydtmo0lUDUmG3Y0HXudxMId1w+5G99VI= +github.com/quasilyte/go-consistent v0.6.0 h1:tY8DYfgM+7ADpOyr5X47i8hV/XbMNoucqnqZWVjI+rU= +github.com/quasilyte/go-consistent v0.6.0/go.mod h1:dKYK1JZl3150J1+Jh4cDYPCIu2MqybUBi0YVW2b2E6c= github.com/reva2/bitbucket-insights-api v1.0.0 h1:lpQ/Q7OmnG04w/EM77piOwZBxP41PeTlbytXxVrnplA= github.com/reva2/bitbucket-insights-api v1.0.0/go.mod h1:pLs+ki3MKUntrPryxaGIvpRLiEtBhwfJ/uvxQIMfqHU= github.com/reviewdog/errorformat v0.0.0-20220309155058-b075c45b6d9a h1:HIL+jTKsWmNT5WoTNwHQ0jUNJpFOmgeHLOsHMZInrF8= @@ -981,7 +978,6 @@ golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1020,7 +1016,6 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200406213809-066fd1390ee0/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= From 60c5767502f6691afa6e00a9e38a17e02649da3c Mon Sep 17 00:00:00 2001 From: Oleksii <39950859+0leksii@users.noreply.github.com> Date: Tue, 18 Jul 2023 15:10:21 +0300 Subject: [PATCH 119/123] PMM-11992 Accept database name in API call (#2057) Accept database name when adding RDS instance. Use it for PostgreSQL RDS instances. Co-authored-by: Przemyslaw Kadej Co-authored-by: Nurlan Moldomurov --- .../json/client/rds/add_rds_responses.go | 3 + api/managementpb/json/managementpb.json | 5 + api/managementpb/rds.pb.go | 168 ++++++++++-------- api/managementpb/rds.pb.validate.go | 2 + api/managementpb/rds.proto | 2 + api/swagger/swagger-dev.json | 5 + api/swagger/swagger.json | 5 + managed/services/management/rds.go | 1 + 8 files changed, 112 insertions(+), 79 deletions(-) diff --git a/api/managementpb/json/client/rds/add_rds_responses.go b/api/managementpb/json/client/rds/add_rds_responses.go index cb525e8b8c..0c5c17da70 100644 --- a/api/managementpb/json/client/rds/add_rds_responses.go +++ b/api/managementpb/json/client/rds/add_rds_responses.go @@ -216,6 +216,9 @@ type AddRDSBody struct { // Custom password for exporter endpoint /metrics. AgentPassword string `json:"agent_password,omitempty"` + + // Database name. + Database string `json:"database,omitempty"` } // Validate validates this add RDS body diff --git a/api/managementpb/json/managementpb.json b/api/managementpb/json/managementpb.json index b981b798d0..906290de9f 100644 --- a/api/managementpb/json/managementpb.json +++ b/api/managementpb/json/managementpb.json @@ -5063,6 +5063,11 @@ }, "x-order": 18 }, + "database": { + "description": "Database name.", + "type": "string", + "x-order": 29 + }, "disable_basic_metrics": { "description": "Disable basic metrics.", "type": "boolean", diff --git a/api/managementpb/rds.pb.go b/api/managementpb/rds.pb.go index 3f812cb835..8214ca2777 100644 --- a/api/managementpb/rds.pb.go +++ b/api/managementpb/rds.pb.go @@ -358,6 +358,8 @@ type AddRDSRequest struct { QanPostgresqlPgstatements bool `protobuf:"varint,28,opt,name=qan_postgresql_pgstatements,json=qanPostgresqlPgstatements,proto3" json:"qan_postgresql_pgstatements,omitempty"` // Custom password for exporter endpoint /metrics. AgentPassword string `protobuf:"bytes,29,opt,name=agent_password,json=agentPassword,proto3" json:"agent_password,omitempty"` + // Database name. + Database string `protobuf:"bytes,30,opt,name=database,proto3" json:"database,omitempty"` } func (x *AddRDSRequest) Reset() { @@ -595,6 +597,13 @@ func (x *AddRDSRequest) GetAgentPassword() string { return "" } +func (x *AddRDSRequest) GetDatabase() string { + if x != nil { + return x.Database + } + return "" +} + type AddRDSResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -754,7 +763,7 @@ var file_managementpb_rds_proto_rawDesc = []byte{ 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x72, 0x64, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x22, 0x90, 0x0a, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x52, 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, + 0x73, 0x22, 0xac, 0x0a, 0x0a, 0x0d, 0x41, 0x64, 0x64, 0x52, 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x61, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, @@ -831,84 +840,85 @@ var file_managementpb_rds_proto_rawDesc = []byte{ 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xda, 0x04, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x52, 0x44, 0x53, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x44, 0x53, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x52, 0x0b, 0x72, 0x64, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, - 0x12, 0x2d, 0x0a, 0x05, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, - 0x4c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x05, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x12, - 0x42, 0x0a, 0x0f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, - 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x12, 0x54, 0x0a, 0x14, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, - 0x5f, 0x70, 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, - 0x4e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x12, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, - 0x65, 0x72, 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x12, 0x4c, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x72, 0x52, 0x12, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x69, 0x0a, 0x1b, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, - 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, - 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x53, 0x51, 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x19, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x73, 0x71, 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x2a, 0x69, 0x0a, 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, - 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, - 0x45, 0x52, 0x5f, 0x52, 0x44, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x4e, - 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x49, 0x53, 0x43, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x52, 0x44, 0x53, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x01, 0x12, - 0x1b, 0x0a, 0x17, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x44, 0x53, 0x5f, - 0x50, 0x4f, 0x53, 0x54, 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x32, 0xae, 0x02, 0x0a, - 0x03, 0x52, 0x44, 0x53, 0x12, 0xa1, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, - 0x72, 0x52, 0x44, 0x53, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x92, 0x41, 0x28, 0x12, 0x0c, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x76, 0x65, 0x72, 0x20, 0x52, 0x44, 0x53, 0x1a, 0x18, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x73, 0x20, 0x52, 0x44, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, - 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x44, 0x53, 0x2f, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x12, 0x82, 0x01, 0x0a, 0x06, 0x41, 0x64, 0x64, - 0x52, 0x44, 0x53, 0x12, 0x19, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x41, 0x64, 0x64, 0x52, 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x52, - 0x44, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x92, 0x41, 0x1d, 0x12, - 0x07, 0x41, 0x64, 0x64, 0x20, 0x52, 0x44, 0x53, 0x1a, 0x12, 0x41, 0x64, 0x64, 0x73, 0x20, 0x52, - 0x44, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x44, 0x53, 0x2f, 0x41, 0x64, 0x64, 0x42, 0x8b, 0x01, - 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x42, 0x08, 0x52, 0x64, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 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, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x1a, + 0x3f, 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 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, 0xda, 0x04, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x52, 0x44, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x44, 0x53, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x52, 0x44, 0x53, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, + 0x0b, 0x72, 0x64, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x05, + 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x52, 0x05, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x12, 0x42, 0x0a, 0x0f, 0x6d, + 0x79, 0x73, 0x71, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, + 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x64, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x12, + 0x54, 0x0a, 0x14, 0x71, 0x61, 0x6e, 0x5f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x65, 0x72, + 0x66, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x4d, 0x79, 0x53, + 0x51, 0x4c, 0x50, 0x65, 0x72, 0x66, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x12, 0x71, 0x61, 0x6e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x50, 0x65, 0x72, 0x66, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x73, 0x71, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, + 0x4c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x73, 0x71, 0x6c, 0x12, 0x4c, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, + 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x12, + 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x12, 0x69, 0x0a, 0x1b, 0x71, 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x70, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x51, 0x41, 0x4e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, + 0x4c, 0x50, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x52, 0x19, 0x71, 0x61, 0x6e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, + 0x6c, 0x50, 0x67, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2a, 0x69, 0x0a, + 0x11, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x45, 0x6e, 0x67, 0x69, + 0x6e, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, + 0x44, 0x53, 0x5f, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, + 0x52, 0x44, 0x53, 0x5f, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, + 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x44, 0x53, 0x5f, 0x50, 0x4f, 0x53, 0x54, + 0x47, 0x52, 0x45, 0x53, 0x51, 0x4c, 0x10, 0x02, 0x32, 0xae, 0x02, 0x0a, 0x03, 0x52, 0x44, 0x53, + 0x12, 0xa1, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, + 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x52, 0x44, 0x53, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x51, 0x92, 0x41, 0x28, 0x12, 0x0c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x20, 0x52, 0x44, 0x53, 0x1a, 0x18, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x73, 0x20, + 0x52, 0x44, 0x53, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2e, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x52, 0x44, 0x53, 0x2f, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x12, 0x82, 0x01, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x52, 0x44, 0x53, 0x12, + 0x19, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, + 0x52, 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x44, 0x53, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x92, 0x41, 0x1d, 0x12, 0x07, 0x41, 0x64, 0x64, + 0x20, 0x52, 0x44, 0x53, 0x1a, 0x12, 0x41, 0x64, 0x64, 0x73, 0x20, 0x52, 0x44, 0x53, 0x20, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, + 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2f, 0x52, 0x44, 0x53, 0x2f, 0x41, 0x64, 0x64, 0x42, 0x8b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, + 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x08, 0x52, 0x64, + 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 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, 0x70, + 0x62, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/managementpb/rds.pb.validate.go b/api/managementpb/rds.pb.validate.go index 0954714d7d..b557aefb33 100644 --- a/api/managementpb/rds.pb.validate.go +++ b/api/managementpb/rds.pb.validate.go @@ -520,6 +520,8 @@ func (m *AddRDSRequest) validate(all bool) error { // no validation rules for AgentPassword + // no validation rules for Database + if len(errors) > 0 { return AddRDSRequestMultiError(errors) } diff --git a/api/managementpb/rds.proto b/api/managementpb/rds.proto index 9f7979559f..15c8218a5b 100644 --- a/api/managementpb/rds.proto +++ b/api/managementpb/rds.proto @@ -112,6 +112,8 @@ message AddRDSRequest { bool qan_postgresql_pgstatements = 28; // Custom password for exporter endpoint /metrics. string agent_password = 29; + // Database name. + string database = 30; } message AddRDSResponse { diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index 0dcc0b263b..be8c3f4c7c 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -28023,6 +28023,11 @@ "description": "Custom password for exporter endpoint /metrics.", "type": "string", "x-order": 28 + }, + "database": { + "description": "Database name.", + "type": "string", + "x-order": 29 } } } diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index 7d21baaf18..f91076ead0 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -19269,6 +19269,11 @@ "description": "Custom password for exporter endpoint /metrics.", "type": "string", "x-order": 28 + }, + "database": { + "description": "Database name.", + "type": "string", + "x-order": 29 } } } diff --git a/managed/services/management/rds.go b/managed/services/management/rds.go index ce79abf322..38daa0018c 100644 --- a/managed/services/management/rds.go +++ b/managed/services/management/rds.go @@ -387,6 +387,7 @@ func (s *RDSService) AddRDS(ctx context.Context, req *managementpb.AddRDSRequest CustomLabels: req.CustomLabels, Address: &req.Address, Port: pointer.ToUint16(uint16(req.Port)), + Database: req.Database, }) if err != nil { return err From 12fa7e32a1f6c4901d66066bcf82e7331c5b993f Mon Sep 17 00:00:00 2001 From: Artem Gavrilov Date: Tue, 18 Jul 2023 15:38:42 +0200 Subject: [PATCH 120/123] PMM-7 Update starlark dependency (#2373) --- go.mod | 2 +- go.sum | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f0791c9bfa..b72f50d70e 100644 --- a/go.mod +++ b/go.mod @@ -73,7 +73,7 @@ require ( github.com/stretchr/objx v0.5.0 github.com/stretchr/testify v1.8.4 go.mongodb.org/mongo-driver v1.12.0 - go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd + go.starlark.net v0.0.0-20230717150657-8a3343210976 golang.org/x/crypto v0.11.0 golang.org/x/sync v0.3.0 golang.org/x/sys v0.10.0 diff --git a/go.sum b/go.sum index 6a9e60c069..26ee0f7b04 100644 --- a/go.sum +++ b/go.sum @@ -826,8 +826,8 @@ go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvx go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd h1:Uo/x0Ir5vQJ+683GXB9Ug+4fcjsbp7z7Ul8UaZbhsRM= -go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= +go.starlark.net v0.0.0-20230717150657-8a3343210976 h1:7ljYNcZU84T2N0tZdDgvL7U3M4iFmglAUUU1gRFE/2Q= +go.starlark.net v0.0.0-20230717150657-8a3343210976/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= @@ -1006,6 +1006,7 @@ golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= From ab6b8143fefe69e06811c70e705eacabf1556534 Mon Sep 17 00:00:00 2001 From: Pavel Khripkov <94828791+PavelKhripkov@users.noreply.github.com> Date: Tue, 18 Jul 2023 19:43:32 +0300 Subject: [PATCH 121/123] PMM-10270 PMM-12191 restore-mongo-backup-on-new-service. (#2202) * PMM-10270 restore-mongo-backup-on-new-service. * PMM-10270 restore-mongo-backup-on-new-service. * PMM-10270 restore-mongo-backup-on-new-service. * Fix tests. * Minor changes. * Gen. * Linters. * Added tests. * Added tests. * Gen. * Fix tests. * Remove unnecessary parameter. * PMM-10270 Fix merge * PMM-10270 Lint fix --------- Co-authored-by: Artem Gavrilov --- agent/runner/jobs/errors.go | 3 + agent/runner/jobs/mongodb_backup_job.go | 2 +- agent/runner/jobs/mongodb_restore_job.go | 52 ++-- agent/runner/jobs/pbm_helpers.go | 53 ++-- managed/models/artifact_helpers.go | 9 + managed/models/artifact_helpers_test.go | 26 ++ managed/models/scheduled_tasks_helpers.go | 16 ++ managed/services/backup/backup_service.go | 4 + .../services/backup/backup_service_test.go | 12 +- .../services/backup/compatibility_helpers.go | 9 +- .../services/backup/compatibility_service.go | 22 +- .../backup/compatibility_service_test.go | 248 +++++++++++------- managed/services/backup/removal_service.go | 8 +- .../services/backup/removal_service_test.go | 2 +- managed/services/errors.go | 12 +- .../management/backup/backups_service.go | 117 +++------ managed/services/preconditions.go | 87 +++++- managed/services/preconditions_test.go | 124 +++++++++ managed/services/scheduler/scheduler.go | 28 +- managed/services/scheduler/scheduler_test.go | 65 +++-- 20 files changed, 612 insertions(+), 287 deletions(-) diff --git a/agent/runner/jobs/errors.go b/agent/runner/jobs/errors.go index 21a320008a..0010e58982 100644 --- a/agent/runner/jobs/errors.go +++ b/agent/runner/jobs/errors.go @@ -18,3 +18,6 @@ import "github.com/pkg/errors" // ErrNotFound returned when backup record is not found by backup tool. var ErrNotFound = errors.New("backup record not found by backup tool") + +// ErrPBMArtifactProblem returned when PBM reports artifact error. +var ErrPBMArtifactProblem = errors.New("pbm artifact problem") diff --git a/agent/runner/jobs/mongodb_backup_job.go b/agent/runner/jobs/mongodb_backup_job.go index 5320fa8eab..12f4d51620 100644 --- a/agent/runner/jobs/mongodb_backup_job.go +++ b/agent/runner/jobs/mongodb_backup_job.go @@ -158,7 +158,7 @@ func (j *MongoDBBackupJob) Run(ctx context.Context, send Send) error { return err } - backupTimestamp, err := pbmGetSnapshotTimestamp(ctx, j.dbURL, pbmBackupOut.Name) + backupTimestamp, err := pbmGetSnapshotTimestamp(ctx, j.l, j.dbURL, pbmBackupOut.Name) if err != nil { return err } diff --git a/agent/runner/jobs/mongodb_restore_job.go b/agent/runner/jobs/mongodb_restore_job.go index cc6edbd636..a95f8e856f 100644 --- a/agent/runner/jobs/mongodb_restore_job.go +++ b/agent/runner/jobs/mongodb_restore_job.go @@ -134,12 +134,17 @@ func (j *MongoDBRestoreJob) Run(ctx context.Context, send Send) error { } cancel() - snapshot, err := j.findSnapshot(ctx, j.pbmBackupName) + snapshot, err := j.findCurrentSnapshot(ctx, j.pbmBackupName) if err != nil { j.jobLogger.sendLog(send, err.Error(), false) return errors.WithStack(err) } + if snapshot.Status == "error" { //nolint:goconst + j.jobLogger.sendLog(send, snapshot.Error, false) + return errors.Wrap(ErrPBMArtifactProblem, snapshot.Error) + } + defer j.agentsRestarter.RestartAgents() restoreOut, err := j.startRestore(ctx, snapshot.Name) if err != nil { @@ -172,44 +177,25 @@ func (j *MongoDBRestoreJob) Run(ctx context.Context, send Send) error { return nil } -func (j *MongoDBRestoreJob) findSnapshot(ctx context.Context, snapshotName string) (*pbmSnapshot, error) { +func (j *MongoDBRestoreJob) findCurrentSnapshot(ctx context.Context, snapshotName string) (*pbmSnapshot, error) { j.l.Info("Finding backup entity name.") - var list pbmList - ticker := time.NewTicker(listCheckInterval) - defer ticker.Stop() - - checks := 0 - for { - select { - case <-ticker.C: - checks++ - if err := execPBMCommand(ctx, j.dbURL, &list, "list"); err != nil { - return nil, err - } - - if len(list.Snapshots) == 0 { - j.l.Debugf("Try number %d of getting list of artifacts from PBM is failed.", checks) - if checks > maxListChecks { - return nil, errors.Wrap(ErrNotFound, "got no one snapshot") - } - continue - } + snapshots, err := getSnapshots(ctx, j.l, j.dbURL) + if err != nil { + return nil, err + } - // Old artifacts don't contain pbm backup name. - if snapshotName == "" { - return &list.Snapshots[len(list.Snapshots)-1], nil - } + // Old artifacts don't contain pbm backup name. + if snapshotName == "" { + return &snapshots[0], nil + } - for _, s := range list.Snapshots { - if s.Name == snapshotName { - return &s, nil - } - } - case <-ctx.Done(): - return nil, ctx.Err() + for _, s := range snapshots { + if s.Name == snapshotName { + return &s, nil } } + return nil, errors.WithStack(ErrNotFound) } func (j *MongoDBRestoreJob) startRestore(ctx context.Context, backupName string) (*pbmRestore, error) { diff --git a/agent/runner/jobs/pbm_helpers.go b/agent/runner/jobs/pbm_helpers.go index 241cccf2f9..c1afcd5505 100644 --- a/agent/runner/jobs/pbm_helpers.go +++ b/agent/runner/jobs/pbm_helpers.go @@ -120,14 +120,7 @@ type pbmSnapshot struct { RestoreTo int64 `json:"restoreTo"` PbmVersion string `json:"pbmVersion"` Type string `json:"type"` -} - -type pbmList struct { - Snapshots []pbmSnapshot `json:"snapshots"` - Pitr struct { - On bool `json:"on"` - Ranges interface{} `json:"ranges"` - } `json:"pitr"` + Error string `json:"error"` } type pbmListRestore struct { @@ -556,17 +549,13 @@ func groupPartlyDoneErrors(info describeInfo) error { } // pbmGetSnapshotTimestamp returns time the backup restores target db to. -func pbmGetSnapshotTimestamp(ctx context.Context, dbURL *string, backupName string) (*time.Time, error) { - var list pbmList - if err := execPBMCommand(ctx, dbURL, &list, "list"); err != nil { +func pbmGetSnapshotTimestamp(ctx context.Context, l logrus.FieldLogger, dbURL *string, backupName string) (*time.Time, error) { + snapshots, err := getSnapshots(ctx, l, dbURL) + if err != nil { return nil, err } - if len(list.Snapshots) == 0 { - return nil, errors.Wrapf(ErrNotFound, "got no one snapshot") - } - - for _, snapshot := range list.Snapshots { + for _, snapshot := range snapshots { if snapshot.Name == backupName { return pointer.ToTime(time.Unix(snapshot.RestoreTo, 0)), nil } @@ -574,3 +563,35 @@ func pbmGetSnapshotTimestamp(ctx context.Context, dbURL *string, backupName stri return nil, errors.Wrap(ErrNotFound, "couldn't find required snapshot") } + +// getSnapshots returns all PBM snapshots found in configured location. +func getSnapshots(ctx context.Context, l logrus.FieldLogger, dbURL *string) ([]pbmSnapshot, error) { + // Sometimes PBM returns empty list of snapshots, that's why we're trying to get them several times. + ticker := time.NewTicker(listCheckInterval) + defer ticker.Stop() + + checks := 0 + for { + select { + case <-ticker.C: + checks++ + status, err := getPBMStatus(ctx, dbURL) + if err != nil { + return nil, err + } + + if len(status.Backups.Snapshot) == 0 { + l.Debugf("Attempt %d to get a list of PBM artifacts has failed.", checks) + if checks > maxListChecks { + return nil, errors.Wrap(ErrNotFound, "got no one snapshot") + } + continue + } + + return status.Backups.Snapshot, nil + + case <-ctx.Done(): + return nil, ctx.Err() + } + } +} diff --git a/managed/models/artifact_helpers.go b/managed/models/artifact_helpers.go index 382d153bf0..e518845e61 100644 --- a/managed/models/artifact_helpers.go +++ b/managed/models/artifact_helpers.go @@ -36,6 +36,8 @@ type ArtifactFilters struct { ScheduleID string // Return only artifacts by specified status. Status BackupStatus + // Filters by folder. + Folder *string } // FindArtifacts returns artifact list sorted by creation time in DESCENDING order. @@ -67,6 +69,13 @@ func FindArtifacts(q *reform.Querier, filters ArtifactFilters) ([]*Artifact, err if filters.Status != "" { conditions = append(conditions, fmt.Sprintf("status = %s", q.Placeholder(idx))) args = append(args, filters.Status) + idx++ + } + + if filters.Folder != nil { + conditions = append(conditions, fmt.Sprintf("folder = %s", q.Placeholder(idx))) + args = append(args, *filters.Folder) + // idx++ } var whereClause string diff --git a/managed/models/artifact_helpers_test.go b/managed/models/artifact_helpers_test.go index e459e7c6a7..a7ba3b423f 100644 --- a/managed/models/artifact_helpers_test.go +++ b/managed/models/artifact_helpers_test.go @@ -167,10 +167,23 @@ func TestArtifacts(t *testing.T) { Mode: models.Snapshot, } + params3 := models.CreateArtifactParams{ + Name: "backup_name_3", + Vendor: "mongodb", + LocationID: locationID2, + ServiceID: serviceID2, + DataModel: models.LogicalDataModel, + Status: models.SuccessBackupStatus, + Mode: models.Snapshot, + Folder: "some_folder", + } + a1, err := models.CreateArtifact(q, params1) require.NoError(t, err) a2, err := models.CreateArtifact(q, params2) require.NoError(t, err) + a3, err := models.CreateArtifact(q, params3) + require.NoError(t, err) actual, err := models.FindArtifacts(q, models.ArtifactFilters{}) require.NoError(t, err) @@ -188,6 +201,19 @@ func TestArtifacts(t *testing.T) { assert.Condition(t, found(a1.ID), "The first artifact not found") assert.Condition(t, found(a2.ID), "The second artifact not found") + + // Check artifacts can be found by folder. + actual2, err := models.FindArtifacts(q, models.ArtifactFilters{Folder: &a3.Folder}) + require.NoError(t, err) + assert.Equal(t, []*models.Artifact{a3}, actual2) + + actual3, err := models.FindArtifacts(q, models.ArtifactFilters{}) + require.NoError(t, err) + require.Equal(t, 3, len(actual3)) + + for _, a := range actual3 { + assert.Contains(t, []models.Artifact{*a1, *a2, *a3}, *a) + } }) t.Run("remove", func(t *testing.T) { diff --git a/managed/models/scheduled_tasks_helpers.go b/managed/models/scheduled_tasks_helpers.go index f7c5f51bf0..d639387542 100644 --- a/managed/models/scheduled_tasks_helpers.go +++ b/managed/models/scheduled_tasks_helpers.go @@ -55,6 +55,7 @@ type ScheduledTasksFilter struct { LocationID string Mode BackupMode Name string + Folder *string } // FindScheduledTasks returns all scheduled tasks satisfying filter. @@ -110,6 +111,12 @@ func FindScheduledTasks(q *reform.Querier, filters ScheduledTasksFilter) ([]*Sch crossJoin = true andConds = append(andConds, "value ->> 'name' = "+q.Placeholder(idx)) args = append(args, filters.Name) + idx++ + } + if filters.Folder != nil { + crossJoin = true + andConds = append(andConds, "value ->> 'folder' = "+q.Placeholder(idx)) + args = append(args, *filters.Folder) // idx++ } @@ -367,6 +374,15 @@ func (s *ScheduledTask) LocationID() (string, error) { return data.LocationID, nil } +// ServiceID returns task service ID. +func (s *ScheduledTask) ServiceID() (string, error) { + data, err := s.CommonBackupData() + if err != nil { + return "", err + } + return data.ServiceID, nil +} + func (s *ScheduledTask) CommonBackupData() (*CommonBackupTaskData, error) { if s.Data != nil { switch s.Type { diff --git a/managed/services/backup/backup_service.go b/managed/services/backup/backup_service.go index 07a59a37ae..9847b32173 100644 --- a/managed/services/backup/backup_service.go +++ b/managed/services/backup/backup_service.go @@ -93,6 +93,10 @@ func (s *Service) PerformBackup(ctx context.Context, params PerformBackupParams) errTX = s.db.InTransactionContext(ctx, &sql.TxOptions{Isolation: sql.LevelSerializable}, func(tx *reform.TX) error { var err error + if err = services.CheckArtifactOverlapping(tx.Querier, params.ServiceID, params.LocationID, params.Folder); err != nil { + return err + } + svc, err = models.FindServiceByID(tx.Querier, params.ServiceID) if err != nil { return err diff --git a/managed/services/backup/backup_service_test.go b/managed/services/backup/backup_service_test.go index 0afeff434e..e599b7c12b 100644 --- a/managed/services/backup/backup_service_test.go +++ b/managed/services/backup/backup_service_test.go @@ -81,8 +81,6 @@ func TestPerformBackup(t *testing.T) { mockedCompatibilityService := &mockCompatibilityService{} backupService := NewService(db, mockedJobsService, mockedAgentService, mockedCompatibilityService, nil) - artifactFolder := "artifact_folder" - s3Location, err := models.CreateBackupLocation(db.Querier, models.CreateBackupLocationParams{ Name: "Test s3 location", Description: "Test s3 description", @@ -164,7 +162,7 @@ func TestPerformBackup(t *testing.T) { S3Config: tc.locationModel.S3Config, } mockedJobsService.On("StartMySQLBackupJob", mock.Anything, pointer.GetString(agent.PMMAgentID), time.Duration(0), - mock.Anything, mock.Anything, locationConfig, artifactFolder).Return(nil).Once() + mock.Anything, mock.Anything, locationConfig, "artifact_folder").Return(nil).Once() } artifactID, err := backupService.PerformBackup(ctx, PerformBackupParams{ @@ -173,7 +171,7 @@ func TestPerformBackup(t *testing.T) { Name: tc.name + "_" + "test_backup", DataModel: tc.dataModel, Mode: models.Snapshot, - Folder: artifactFolder, + Folder: "artifact_folder", }) if tc.expectedError != nil { @@ -204,7 +202,7 @@ func TestPerformBackup(t *testing.T) { Name: "test_backup", DataModel: models.PhysicalDataModel, Mode: models.PITR, - Folder: artifactFolder, + Folder: "artifact_folder_2", }) assert.ErrorIs(t, err, ErrIncompatibleDataModel) assert.Empty(t, artifactID) @@ -218,7 +216,7 @@ func TestPerformBackup(t *testing.T) { Name: "test_backup", DataModel: models.PhysicalDataModel, Mode: models.PITR, - Folder: artifactFolder, + Folder: "artifact_folder_3", }) assert.ErrorContains(t, err, "Empty Service ID") assert.Empty(t, artifactID) @@ -233,7 +231,7 @@ func TestPerformBackup(t *testing.T) { Name: "test_backup", DataModel: models.PhysicalDataModel, Mode: models.Incremental, - Folder: artifactFolder, + Folder: "artifact_folder_4", }) assert.ErrorContains(t, err, "the only supported backups mode for mongoDB is snapshot and PITR") assert.Empty(t, artifactID) diff --git a/managed/services/backup/compatibility_helpers.go b/managed/services/backup/compatibility_helpers.go index 299a4c68e7..d82a2a2d46 100644 --- a/managed/services/backup/compatibility_helpers.go +++ b/managed/services/backup/compatibility_helpers.go @@ -221,10 +221,7 @@ func mongoDBBackupSoftwareInstalledAndCompatible(svm map[models.SoftwareName]str } // isOnlySameService checks if restore is only available to the same service. -func isOnlySameService(artifactDBVersion string, serviceType models.ServiceType) bool { - // allow restore to the same service if db version is unknown or service type is MongoDB. - if artifactDBVersion == "" || serviceType == models.MongoDBServiceType { - return true - } - return false +func isOnlySameService(artifactDBVersion string) bool { + // allow restore only to the same service if db version is unknown. + return artifactDBVersion == "" } diff --git a/managed/services/backup/compatibility_service.go b/managed/services/backup/compatibility_service.go index af2536634d..9d2372afdb 100644 --- a/managed/services/backup/compatibility_service.go +++ b/managed/services/backup/compatibility_service.go @@ -96,13 +96,29 @@ func (s *CompatibilityService) findCompatibleServiceIDs(artifactModel *models.Ar compatibleServiceIDs := make([]string, 0, len(svs)) for _, sv := range svs { svm := softwareVersionsToMap(sv.SoftwareVersions) + var ( + serviceDBVersion string + err error + ) - if err := mySQLBackupSoftwareInstalledAndCompatible(svm); err != nil { + switch artifactModel.Vendor { + case "mysql": + serviceDBVersion = svm[models.MysqldSoftwareName] + err = mySQLBackupSoftwareInstalledAndCompatible(svm) + + case "mongodb": + serviceDBVersion = svm[models.MongoDBSoftwareName] + err = mongoDBBackupSoftwareInstalledAndCompatible(svm) + + default: + return nil + } + + if err != nil { s.l.WithError(err).Debugf("skip incompatible service id %q", sv.ServiceID) continue } - serviceDBVersion := svm[models.MysqldSoftwareName] if artifactModel.DBVersion != serviceDBVersion { s.l.Debugf("skip incompatible service id %q: artifact version %q != db version %q\"", sv.ServiceID, artifactModel.DBVersion, serviceDBVersion) @@ -174,7 +190,7 @@ func (s *CompatibilityService) FindArtifactCompatibleServices( return err } - onlySameService := isOnlySameService(artifactModel.DBVersion, serviceType) + onlySameService := isOnlySameService(artifactModel.DBVersion) if onlySameService { service, err := models.FindServiceByID(tx.Querier, artifactModel.ServiceID) diff --git a/managed/services/backup/compatibility_service_test.go b/managed/services/backup/compatibility_service_test.go index eb3724dba8..eaf777e5fe 100644 --- a/managed/services/backup/compatibility_service_test.go +++ b/managed/services/backup/compatibility_service_test.go @@ -212,100 +212,162 @@ func TestFindCompatibleServiceIDs(t *testing.T) { t.Parallel() cSvc := NewCompatibilityService(nil, nil) - testSet := []*models.ServiceSoftwareVersions{ - { - ServiceID: "1", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: ""}, - {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, - {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, - {Name: models.QpressSoftwareName, Version: "1.1"}, + t.Run("mysql", func(t *testing.T) { + testSet := []*models.ServiceSoftwareVersions{ + { + ServiceID: "1", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: ""}, + {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, + {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, + {Name: models.QpressSoftwareName, Version: "1.1"}, + }, }, - }, - { - ServiceID: "2", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: "8.0.25"}, - {Name: models.XtrabackupSoftwareName, Version: "8.0.24"}, - {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, - {Name: models.QpressSoftwareName, Version: "1.1"}, + { + ServiceID: "2", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: "8.0.25"}, + {Name: models.XtrabackupSoftwareName, Version: "8.0.24"}, + {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, + {Name: models.QpressSoftwareName, Version: "1.1"}, + }, }, - }, - { - ServiceID: "3", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: "8.0.25"}, - {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, - {Name: models.XbcloudSoftwareName, Version: "8.0.24"}, - {Name: models.QpressSoftwareName, Version: "1.1"}, + { + ServiceID: "3", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: "8.0.25"}, + {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, + {Name: models.XbcloudSoftwareName, Version: "8.0.24"}, + {Name: models.QpressSoftwareName, Version: "1.1"}, + }, }, - }, - { - ServiceID: "4", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: "8.0.25"}, - {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, - {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, - {Name: models.QpressSoftwareName, Version: ""}, + { + ServiceID: "4", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: "8.0.25"}, + {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, + {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, + {Name: models.QpressSoftwareName, Version: ""}, + }, }, - }, - { - ServiceID: "5", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: "8.0.25"}, - {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, - {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, - {Name: models.QpressSoftwareName, Version: "1.1"}, + { + ServiceID: "5", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: "8.0.25"}, + {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, + {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, + {Name: models.QpressSoftwareName, Version: "1.1"}, + }, }, - }, - { - ServiceID: "6", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: "8.0.25"}, - {Name: models.XtrabackupSoftwareName, Version: ""}, - {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, - {Name: models.QpressSoftwareName, Version: "1.1"}, + { + ServiceID: "6", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: "8.0.25"}, + {Name: models.XtrabackupSoftwareName, Version: ""}, + {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, + {Name: models.QpressSoftwareName, Version: "1.1"}, + }, }, - }, - { - ServiceID: "7", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: "8.0.24"}, - {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, - {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, - {Name: models.QpressSoftwareName, Version: "1.1"}, + { + ServiceID: "7", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: "8.0.24"}, + {Name: models.XtrabackupSoftwareName, Version: "8.0.25"}, + {Name: models.XbcloudSoftwareName, Version: "8.0.25"}, + {Name: models.QpressSoftwareName, Version: "1.1"}, + }, }, - }, - { - ServiceID: "8", - SoftwareVersions: models.SoftwareVersions{ - {Name: models.MysqldSoftwareName, Version: "8.0.25"}, - {Name: models.XtrabackupSoftwareName, Version: "8.0.26"}, - {Name: models.XbcloudSoftwareName, Version: "8.0.26"}, - {Name: models.QpressSoftwareName, Version: "1.1"}, + { + ServiceID: "8", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MysqldSoftwareName, Version: "8.0.25"}, + {Name: models.XtrabackupSoftwareName, Version: "8.0.26"}, + {Name: models.XbcloudSoftwareName, Version: "8.0.26"}, + {Name: models.QpressSoftwareName, Version: "1.1"}, + }, }, - }, - } + } - t.Run("empty db version", func(t *testing.T) { - t.Parallel() - res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: ""}, testSet) - assert.Equal(t, 0, len(res)) - }) - t.Run("matches several", func(t *testing.T) { - t.Parallel() - res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: "8.0.25"}, testSet) - assert.ElementsMatch(t, []string{"5", "8"}, res) - }) - t.Run("matches one", func(t *testing.T) { - t.Parallel() - res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: "8.0.24"}, testSet) - assert.ElementsMatch(t, []string{"7"}, res) + t.Run("empty db version", func(t *testing.T) { + t.Parallel() + res := cSvc.findCompatibleServiceIDs(&models.Artifact{Vendor: "mysql", DBVersion: ""}, testSet) + assert.Equal(t, 0, len(res)) + }) + t.Run("matches several", func(t *testing.T) { + t.Parallel() + res := cSvc.findCompatibleServiceIDs(&models.Artifact{Vendor: "mysql", DBVersion: "8.0.25"}, testSet) + assert.ElementsMatch(t, []string{"5", "8"}, res) + }) + t.Run("matches one", func(t *testing.T) { + t.Parallel() + res := cSvc.findCompatibleServiceIDs(&models.Artifact{Vendor: "mysql", DBVersion: "8.0.24"}, testSet) + assert.ElementsMatch(t, []string{"7"}, res) + }) + t.Run("artifact version greater then existing services", func(t *testing.T) { + t.Parallel() + res := cSvc.findCompatibleServiceIDs(&models.Artifact{Vendor: "mysql", DBVersion: "8.0.30"}, testSet) + assert.Equal(t, 0, len(res)) + }) }) - t.Run("artifact version greater then existing services", func(t *testing.T) { - t.Parallel() - res := cSvc.findCompatibleServiceIDs(&models.Artifact{DBVersion: "8.0.30"}, testSet) - assert.Equal(t, 0, len(res)) + + t.Run("mongo", func(t *testing.T) { + testSet := []*models.ServiceSoftwareVersions{ + { + ServiceID: "1", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MongoDBSoftwareName, Version: ""}, + {Name: models.PBMSoftwareName, Version: "2.0.1"}, + }, + }, + { + ServiceID: "2", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MongoDBSoftwareName, Version: "6.0.5"}, + {Name: models.PBMSoftwareName, Version: "2.0.0"}, + }, + }, + { + ServiceID: "3", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MongoDBSoftwareName, Version: "6.0.5"}, + {Name: models.PBMSoftwareName, Version: ""}, + }, + }, + { + ServiceID: "4", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MongoDBSoftwareName, Version: "6.0.5"}, + {Name: models.PBMSoftwareName, Version: "2.0.1"}, + }, + }, + { + ServiceID: "5", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MongoDBSoftwareName, Version: "5.0.5"}, + {Name: models.PBMSoftwareName, Version: "2.0.5"}, + }, + }, + { + ServiceID: "6", + SoftwareVersions: models.SoftwareVersions{ + {Name: models.MongoDBSoftwareName, Version: "5.0.5"}, + {Name: models.PBMSoftwareName, Version: "2.0.5"}, + }, + }, + } + + t.Run("empty db version", func(t *testing.T) { + res := cSvc.findCompatibleServiceIDs(&models.Artifact{Vendor: "mongodb", DBVersion: ""}, testSet) + assert.Equal(t, 0, len(res)) + }) + t.Run("matches several", func(t *testing.T) { + res := cSvc.findCompatibleServiceIDs(&models.Artifact{Vendor: "mongodb", DBVersion: "5.0.5"}, testSet) + assert.ElementsMatch(t, []string{"5", "6"}, res) + }) + t.Run("matches one", func(t *testing.T) { + res := cSvc.findCompatibleServiceIDs(&models.Artifact{Vendor: "mongodb", DBVersion: "6.0.5"}, testSet) + assert.ElementsMatch(t, []string{"4"}, res) + }) }) } @@ -376,24 +438,6 @@ func TestFindArtifactCompatibleServices(t *testing.T) { errString: "", expectEmptyResult: false, }, - { - name: "non-mysql db vendor", - artifactIDToSearch: "test_artifact_id", - artifact: models.Artifact{ - ID: "test_artifact_id", - Name: " ", - Vendor: "mongodb", - DBVersion: "8.0.25", - LocationID: "test_location_id", - ServiceID: "test_service_id", - DataModel: " ", - Mode: " ", - Status: " ", - Type: " ", - }, - errString: "", - expectEmptyResult: false, - }, { name: "no software versions data for mysql", artifactIDToSearch: "test_artifact_id", diff --git a/managed/services/backup/removal_service.go b/managed/services/backup/removal_service.go index ae0733acdf..50e4e7ab01 100644 --- a/managed/services/backup/removal_service.go +++ b/managed/services/backup/removal_service.go @@ -91,18 +91,12 @@ func (s *RemovalService) DeleteArtifact(storage Storage, artifactID string, remo return } - service, err := models.FindServiceByID(s.db.Querier, artifact.ServiceID) - if err != nil { - s.l.WithError(err).Error("couldn't get service") - return - } - if err = s.deleteArtifactFiles(context.Background(), storage, location, artifact, len(artifact.MetadataList)); err != nil { s.l.WithError(err).Error("couldn't delete artifact files") return } - if service.ServiceType == models.MongoDBServiceType && artifact.Mode == models.PITR { + if artifact.Vendor == string(models.MongoDBServiceType) && artifact.Mode == models.PITR { if err = s.deleteArtifactPITRChunks(context.Background(), storage, location, artifact, nil); err != nil { s.l.WithError(err).Error("couldn't delete artifact PITR chunks") return diff --git a/managed/services/backup/removal_service_test.go b/managed/services/backup/removal_service_test.go index d88b35cb9e..5afb9691b9 100644 --- a/managed/services/backup/removal_service_test.go +++ b/managed/services/backup/removal_service_test.go @@ -185,7 +185,7 @@ func TestDeleteArtifact(t *testing.T) { artifact, err := models.CreateArtifact(db.Querier, models.CreateArtifactParams{ Name: "artifact_name", - Vendor: "MongoDB", + Vendor: "mongodb", LocationID: locationRes.ID, ServiceID: *agent.ServiceID, DataModel: models.LogicalDataModel, diff --git a/managed/services/errors.go b/managed/services/errors.go index ce8573b631..a58d0eff19 100644 --- a/managed/services/errors.go +++ b/managed/services/errors.go @@ -17,8 +17,12 @@ package services import "github.com/pkg/errors" -// ErrAdvisorsDisabled means that advisors checks are disabled and can't be executed. -var ErrAdvisorsDisabled = errors.New("Advisor checks are disabled") +var ( + // ErrAdvisorsDisabled means that advisors checks are disabled and can't be executed. + ErrAdvisorsDisabled = errors.New("Advisor checks are disabled") + // ErrLocationFolderPairAlreadyUsed returned when location-folder pair already in use and cannot be used for backup. + ErrLocationFolderPairAlreadyUsed = errors.New("location-folder pair already used") -// ErrAlertingDisabled means Integrated Alerting is disabled and IA APIs can't be executed. -var ErrAlertingDisabled = errors.New("Alerting is disabled") + // ErrAlertingDisabled means Integrated Alerting is disabled and IA APIs can't be executed. + ErrAlertingDisabled = errors.New("Alerting is disabled") // TODO Looks like this error is unused. +) diff --git a/managed/services/management/backup/backups_service.go b/managed/services/management/backup/backups_service.go index d8fc1ea025..7d7d02d02d 100644 --- a/managed/services/management/backup/backups_service.go +++ b/managed/services/management/backup/backups_service.go @@ -124,7 +124,7 @@ func (s *BackupsService) StartBackup(ctx context.Context, req *backuppb.StartBac Folder: req.Folder, }) if err != nil { - return nil, convertBackupError(err) + return nil, convertError(err) } return &backuppb.StartBackupResponse{ @@ -154,7 +154,7 @@ func (s *BackupsService) RestoreBackup( id, err := s.backupService.RestoreBackup(ctx, req.ServiceId, req.ArtifactId, req.PitrTimestamp.AsTime()) if err != nil { - return nil, convertRestoreBackupError(err) + return nil, convertError(err) } return &backuppb.RestoreBackupResponse{ @@ -253,7 +253,7 @@ func (s *BackupsService) ScheduleBackup(ctx context.Context, req *backuppb.Sched StartAt: t, }) if err != nil { - return convertModelError(err) + return convertError(err) } id = scheduledTask.ID @@ -328,7 +328,7 @@ func (s *BackupsService) ChangeScheduledBackup(ctx context.Context, req *backupp errTx := s.db.InTransactionContext(ctx, nil, func(tx *reform.TX) error { scheduledTask, err := models.FindScheduledTaskByID(tx.Querier, req.ScheduledBackupId) if err != nil { - return convertModelError(err) + return convertError(err) } var data *models.CommonBackupTaskData @@ -381,7 +381,7 @@ func (s *BackupsService) ChangeScheduledBackup(ctx context.Context, req *backupp err = s.scheduleService.Update(req.ScheduledBackupId, params) - return convertModelError(err) + return convertError(err) }) if errTx != nil { return nil, errTx @@ -647,112 +647,59 @@ func convertModelToBackupModel(dataModel backuppb.DataModel) (models.DataModel, } } -func convertBackupError(backupErr error) error { - if backupErr == nil { +// convertError converts error from Go to API. +func convertError(e error) error { + if e == nil { return nil } var unsupportedAgentErr *agents.AgentNotSupportedError - if errors.As(backupErr, &unsupportedAgentErr) { - return status.Error(codes.FailedPrecondition, backupErr.Error()) + if errors.As(e, &unsupportedAgentErr) { + return status.Error(codes.FailedPrecondition, e.Error()) } var code backuppb.ErrorCode switch { - case errors.Is(backupErr, backup.ErrIncompatibleService): - return status.Error(codes.FailedPrecondition, backupErr.Error()) - case errors.Is(backupErr, backup.ErrXtrabackupNotInstalled): - code = backuppb.ErrorCode_ERROR_CODE_XTRABACKUP_NOT_INSTALLED - case errors.Is(backupErr, backup.ErrInvalidXtrabackup): - code = backuppb.ErrorCode_ERROR_CODE_INVALID_XTRABACKUP - case errors.Is(backupErr, backup.ErrIncompatibleXtrabackup): - code = backuppb.ErrorCode_ERROR_CODE_INCOMPATIBLE_XTRABACKUP - case errors.Is(backupErr, backup.ErrIncompatibleLocationType): - return status.Error(codes.FailedPrecondition, backupErr.Error()) - case errors.Is(backupErr, backup.ErrIncompatiblePBM): - return status.Error(codes.FailedPrecondition, backupErr.Error()) - - default: - return backupErr - } - - st, err := status.New(codes.FailedPrecondition, backupErr.Error()).WithDetails(&backuppb.Error{ - Code: code, - }) - if err != nil { - return fmt.Errorf("failed to construct status error: %w, restore error: %w", err, backupErr) - } - - return st.Err() -} -func convertRestoreBackupError(restoreError error) error { - if restoreError == nil { - return nil - } - - var unsupportedAgentErr *agents.AgentNotSupportedError - if errors.As(restoreError, &unsupportedAgentErr) { - return status.Error(codes.FailedPrecondition, restoreError.Error()) - } - - var code backuppb.ErrorCode - switch { - case errors.Is(restoreError, backup.ErrIncompatibleService): - return status.Error(codes.FailedPrecondition, restoreError.Error()) - case errors.Is(restoreError, backup.ErrXtrabackupNotInstalled): + case errors.Is(e, backup.ErrXtrabackupNotInstalled): code = backuppb.ErrorCode_ERROR_CODE_XTRABACKUP_NOT_INSTALLED - case errors.Is(restoreError, backup.ErrInvalidXtrabackup): + case errors.Is(e, backup.ErrInvalidXtrabackup): code = backuppb.ErrorCode_ERROR_CODE_INVALID_XTRABACKUP - case errors.Is(restoreError, backup.ErrIncompatibleXtrabackup): + case errors.Is(e, backup.ErrIncompatibleXtrabackup): code = backuppb.ErrorCode_ERROR_CODE_INCOMPATIBLE_XTRABACKUP - case errors.Is(restoreError, backup.ErrIncompatibleTargetMySQL): + case errors.Is(e, backup.ErrIncompatibleTargetMySQL): code = backuppb.ErrorCode_ERROR_CODE_INCOMPATIBLE_TARGET_MYSQL - case errors.Is(restoreError, backup.ErrIncompatibleTargetMongoDB): + case errors.Is(e, backup.ErrIncompatibleTargetMongoDB): code = backuppb.ErrorCode_ERROR_CODE_INCOMPATIBLE_TARGET_MONGODB - case errors.Is(restoreError, backup.ErrTimestampOutOfRange): - return status.Error(codes.OutOfRange, restoreError.Error()) - case errors.Is(restoreError, backup.ErrIncompatibleArtifactMode): - return status.Error(codes.FailedPrecondition, restoreError.Error()) - case errors.Is(restoreError, models.ErrNotFound): - return status.Error(codes.NotFound, restoreError.Error()) - case errors.Is(restoreError, backup.ErrAnotherOperationInProgress): - return status.Error(codes.FailedPrecondition, restoreError.Error()) - case errors.Is(restoreError, backup.ErrArtifactNotReady): - return status.Error(codes.FailedPrecondition, restoreError.Error()) - case errors.Is(restoreError, backup.ErrIncompatiblePBM): - return status.Error(codes.FailedPrecondition, restoreError.Error()) + case errors.Is(e, backup.ErrTimestampOutOfRange): + return status.Error(codes.OutOfRange, e.Error()) + case errors.Is(e, models.ErrNotFound): + return status.Error(codes.NotFound, e.Error()) + case errors.Is(e, models.ErrAlreadyExists): + return status.Error(codes.AlreadyExists, e.Error()) + case errors.Is(e, backup.ErrAnotherOperationInProgress), + errors.Is(e, backup.ErrArtifactNotReady), + errors.Is(e, backup.ErrIncompatiblePBM), + errors.Is(e, backup.ErrIncompatibleLocationType), + errors.Is(e, backup.ErrIncompatibleService), + errors.Is(e, backup.ErrIncompatibleArtifactMode), + errors.Is(e, services.ErrLocationFolderPairAlreadyUsed): + return status.Error(codes.FailedPrecondition, e.Error()) default: - return restoreError + return e } - st, err := status.New(codes.FailedPrecondition, restoreError.Error()).WithDetails(&backuppb.Error{ + st, err := status.New(codes.FailedPrecondition, e.Error()).WithDetails(&backuppb.Error{ Code: code, }) if err != nil { - return fmt.Errorf("failed to construct status error: %w, restore error: %w", err, restoreError) + return fmt.Errorf("failed to construct status error: %w, original error: %w", err, e) } return st.Err() } -func convertModelError(modelError error) error { - if modelError == nil { - return nil - } - - switch { - case errors.Is(modelError, models.ErrNotFound): - return status.Error(codes.NotFound, modelError.Error()) - case errors.Is(modelError, models.ErrAlreadyExists): - return status.Error(codes.AlreadyExists, modelError.Error()) - - default: - return modelError - } -} - // isFolderSafe checks if specified path is safe against traversal attacks. func isFolderSafe(path string) error { if path == "" { diff --git a/managed/services/preconditions.go b/managed/services/preconditions.go index 6f2f40293c..41e06cf179 100644 --- a/managed/services/preconditions.go +++ b/managed/services/preconditions.go @@ -17,6 +17,7 @@ package services import ( "github.com/AlekSi/pointer" + "github.com/pkg/errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "gopkg.in/reform.v1" @@ -25,7 +26,8 @@ import ( ) // CheckMongoDBBackupPreconditions checks compatibility of different types of scheduled backups and on-demand backups for MongoDB. -// WARNING: This function valid only when executed as part of transaction with serializable isolation level. +// +// WARNING: This function is valid only when executed as part of transaction with serializable isolation level. func CheckMongoDBBackupPreconditions(q *reform.Querier, mode models.BackupMode, clusterName, serviceID, scheduleID string) error { filter := models.ScheduledTasksFilter{ Disabled: pointer.ToBool(false), @@ -87,3 +89,86 @@ func CheckMongoDBBackupPreconditions(q *reform.Querier, mode models.BackupMode, return nil } + +// CheckArtifactOverlapping checks if there are other artifacts or scheduled tasks pointing to the same location and folder. +// Placing MySQL and MongoDB artifacts in the same folder is not desirable, while placing MongoDB artifacts of different clusters +// in the same folder may cause data inconsistency. +// +// WARNING: This function is valid only when executed as part of transaction with serializable isolation level. +func CheckArtifactOverlapping(q *reform.Querier, serviceID, locationID, folder string) error { + // TODO This doesn't work for all cases. For example, there may exist more than one storage locations pointing to the same place. + + const ( + usedByArtifactMsg = "Same location and folder already used for artifact %s of other service: %s" + usedByScheduledTaskMsg = "Same location and folder already used for scheduled task %s of other service: %s" + ) + + service, err := models.FindServiceByID(q, serviceID) + if err != nil { + return err + } + + artifacts, err := models.FindArtifacts(q, models.ArtifactFilters{ + LocationID: locationID, + Folder: &folder, + }) + if err != nil { + return err + } + + for _, artifact := range artifacts { + if artifact.ServiceID != serviceID { + svc, err := models.FindServiceByID(q, artifact.ServiceID) + if err != nil { + return err + } + + if service.ServiceType == models.MySQLServiceType && svc.ServiceType == models.MySQLServiceType { + continue + } + + if service.ServiceType == models.MongoDBServiceType && svc.ServiceType == models.MongoDBServiceType { + if svc.Cluster != service.Cluster { + return errors.Wrapf(ErrLocationFolderPairAlreadyUsed, usedByArtifactMsg, artifact.ID, serviceID) + } + continue + } + + return errors.Wrapf(ErrLocationFolderPairAlreadyUsed, usedByArtifactMsg, artifact.ID, serviceID) + } + } + + tasks, err := models.FindScheduledTasks(q, models.ScheduledTasksFilter{ + LocationID: locationID, + Folder: &folder, + }) + if err != nil { + return err + } + + var svcID string + + for _, task := range tasks { + svcID, err = task.ServiceID() + if err != nil { + return err + } + + if svcID != serviceID { + if service.ServiceType == models.MySQLServiceType && task.Type == models.ScheduledMySQLBackupTask { + continue + } + + if service.ServiceType == models.MongoDBServiceType && task.Type == models.ScheduledMongoDBBackupTask { + if task.Data.MongoDBBackupTask.ClusterName != service.Cluster { + return errors.Wrapf(ErrLocationFolderPairAlreadyUsed, usedByScheduledTaskMsg, task.ID, serviceID) + } + continue + } + + return errors.Wrapf(ErrLocationFolderPairAlreadyUsed, usedByScheduledTaskMsg, task.ID, serviceID) + } + } + + return nil +} diff --git a/managed/services/preconditions_test.go b/managed/services/preconditions_test.go index 323da39472..ba73f4e597 100644 --- a/managed/services/preconditions_test.go +++ b/managed/services/preconditions_test.go @@ -19,7 +19,10 @@ import ( "context" "database/sql" "testing" + "time" + "github.com/AlekSi/pointer" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -144,3 +147,124 @@ func TestCheckMongoDBBackupPreconditions(t *testing.T) { tests.AssertGRPCError(t, status.New(codes.InvalidArgument, "Incremental backups unsupported for MongoDB"), err) }) } + +func TestCheckArtifactOverlapping(t *testing.T) { + sqlDB := testdb.Open(t, models.SkipFixtures, nil) + db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) + t.Cleanup(func() { + require.NoError(t, sqlDB.Close()) + }) + + folder1, folder2 := "folder1", "folder2" + + node, err := models.CreateNode(db.Querier, models.GenericNodeType, &models.CreateNodeParams{ + NodeName: "test-node", + }) + require.NoError(t, err) + + mongoSvc1, err := models.AddNewService(db.Querier, models.MongoDBServiceType, &models.AddDBMSServiceParams{ + ServiceName: "mongodb1", + NodeID: node.NodeID, + Address: pointer.ToString("127.0.0.1"), + Port: pointer.ToUint16(60000), + Cluster: "cluster1", + }) + require.NoError(t, err) + + mongoSvc2, err := models.AddNewService(db.Querier, models.MongoDBServiceType, &models.AddDBMSServiceParams{ + ServiceName: "mongodb2", + NodeID: node.NodeID, + Address: pointer.ToString("127.0.0.1"), + Port: pointer.ToUint16(60000), + Cluster: "cluster1", + }) + require.NoError(t, err) + + mongoSvc3, err := models.AddNewService(db.Querier, models.MongoDBServiceType, &models.AddDBMSServiceParams{ + ServiceName: "mongodb3", + NodeID: node.NodeID, + Address: pointer.ToString("127.0.0.1"), + Port: pointer.ToUint16(60000), + Cluster: "cluster2", + }) + require.NoError(t, err) + + mysqlSvc1, err := models.AddNewService(db.Querier, models.MySQLServiceType, &models.AddDBMSServiceParams{ + ServiceName: "mysql1", + NodeID: node.NodeID, + Address: pointer.ToString("127.0.0.1"), + Port: pointer.ToUint16(60000), + Cluster: "mysql_cluster_1", + }) + require.NoError(t, err) + + mysqlSvc2, err := models.AddNewService(db.Querier, models.MySQLServiceType, &models.AddDBMSServiceParams{ + ServiceName: "mysql2", + NodeID: node.NodeID, + Address: pointer.ToString("127.0.0.1"), + Port: pointer.ToUint16(60000), + Cluster: "mysql_cluster_2", + }) + require.NoError(t, err) + + location, err := models.CreateBackupLocation(db.Querier, models.CreateBackupLocationParams{ + Name: "test_location", + BackupLocationConfig: models.BackupLocationConfig{ + FilesystemConfig: &models.FilesystemLocationConfig{ + Path: "/tmp", + }, + }, + }) + require.NoError(t, err) + + _, err = models.CreateScheduledTask(db.Querier, models.CreateScheduledTaskParams{ + CronExpression: "* * * * *", + StartAt: time.Now().Truncate(time.Second).UTC(), + Type: models.ScheduledMongoDBBackupTask, + Data: &models.ScheduledTaskData{ + MongoDBBackupTask: &models.MongoBackupTaskData{ + CommonBackupTaskData: models.CommonBackupTaskData{ + ServiceID: mongoSvc1.ServiceID, + LocationID: location.ID, + Name: "test", + Description: "test backup task", + DataModel: models.LogicalDataModel, + Mode: models.Snapshot, + Retention: 7, + Retries: 3, + RetryInterval: 5 * time.Second, + ClusterName: "cluster1", + Folder: folder1, + }, + }, + }, + }) + require.NoError(t, err) + + _, err = models.CreateArtifact(db.Querier, models.CreateArtifactParams{ + Name: "test_artifact", + Vendor: "mysql", + LocationID: location.ID, + ServiceID: mysqlSvc1.ServiceID, + DataModel: models.LogicalDataModel, + Mode: models.Snapshot, + Status: models.SuccessBackupStatus, + Folder: folder2, + }) + require.NoError(t, err) + + err = CheckArtifactOverlapping(db.Querier, mongoSvc2.ServiceID, location.ID, folder1) + assert.NoError(t, err) + + err = CheckArtifactOverlapping(db.Querier, mongoSvc3.ServiceID, location.ID, folder1) + assert.ErrorIs(t, err, ErrLocationFolderPairAlreadyUsed) + + err = CheckArtifactOverlapping(db.Querier, mysqlSvc1.ServiceID, location.ID, folder1) + assert.ErrorIs(t, err, ErrLocationFolderPairAlreadyUsed) + + err = CheckArtifactOverlapping(db.Querier, mysqlSvc2.ServiceID, location.ID, folder2) + assert.NoError(t, err) + + err = CheckArtifactOverlapping(db.Querier, mongoSvc1.ServiceID, location.ID, folder2) + assert.ErrorIs(t, err, ErrLocationFolderPairAlreadyUsed) +} diff --git a/managed/services/scheduler/scheduler.go b/managed/services/scheduler/scheduler.go index 40b3d854c3..127416d724 100644 --- a/managed/services/scheduler/scheduler.go +++ b/managed/services/scheduler/scheduler.go @@ -87,7 +87,7 @@ func (s *Service) Add(task Task, params AddParams) (*models.ScheduledTask, error // This transaction is valid only with serializable isolation level. On lower isolation levels it can produce anomalies. errTx := s.db.InTransactionContext(s.db.Querier.Context(), &sql.TxOptions{Isolation: sql.LevelSerializable}, func(tx *reform.TX) error { var err error - if err = checkPreconditions(tx.Querier, task.Data(), !params.Disabled, ""); err != nil { + if err = checkAddPreconditions(tx.Querier, task.Data(), !params.Disabled, ""); err != nil { return err } scheduledTask, err = models.CreateScheduledTask(tx.Querier, models.CreateScheduledTaskParams{ @@ -158,7 +158,7 @@ func (s *Service) Remove(id string) error { // Update changes scheduled task in DB and re-add it to scheduler. func (s *Service) Update(id string, params models.ChangeScheduledTaskParams) error { return s.db.InTransactionContext(s.db.Querier.Context(), &sql.TxOptions{Isolation: sql.LevelSerializable}, func(tx *reform.TX) error { - if err := checkPreconditions(tx.Querier, params.Data, !pointer.GetBool(params.Disable), id); err != nil { + if err := checkUpdatePreconditions(tx.Querier, params.Data, !pointer.GetBool(params.Disable), id); err != nil { return err } @@ -352,7 +352,29 @@ func (s *Service) convertDBTask(dbTask *models.ScheduledTask) (Task, error) { // return task, nil } -func checkPreconditions(q *reform.Querier, data *models.ScheduledTaskData, enabled bool, scheduledTaskID string) error { +func checkAddPreconditions(q *reform.Querier, data *models.ScheduledTaskData, enabled bool, scheduledTaskID string) error { + switch { + case data.MySQLBackupTask != nil: + if err := services.CheckArtifactOverlapping(q, data.MySQLBackupTask.ServiceID, data.MySQLBackupTask.LocationID, data.MySQLBackupTask.Folder); err != nil { + return err + } + case data.MongoDBBackupTask != nil: + if err := services.CheckArtifactOverlapping(q, data.MongoDBBackupTask.ServiceID, data.MongoDBBackupTask.LocationID, data.MongoDBBackupTask.Folder); err != nil { + return err + } + if enabled { + return services.CheckMongoDBBackupPreconditions( + q, + data.MongoDBBackupTask.Mode, + data.MongoDBBackupTask.ClusterName, + data.MongoDBBackupTask.ServiceID, + scheduledTaskID) + } + } + return nil +} + +func checkUpdatePreconditions(q *reform.Querier, data *models.ScheduledTaskData, enabled bool, scheduledTaskID string) error { switch { case data.MySQLBackupTask != nil: case data.MongoDBBackupTask != nil: diff --git a/managed/services/scheduler/scheduler_test.go b/managed/services/scheduler/scheduler_test.go index ae011f6525..d71eb2ad35 100644 --- a/managed/services/scheduler/scheduler_test.go +++ b/managed/services/scheduler/scheduler_test.go @@ -20,6 +20,7 @@ import ( "testing" "time" + "github.com/AlekSi/pointer" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "google.golang.org/grpc/codes" @@ -33,30 +34,58 @@ import ( ) func TestService(t *testing.T) { - setup := func(t *testing.T, ctx context.Context) *Service { + setup := func(t *testing.T, ctx context.Context, serviceType models.ServiceType, serviceName string) (*Service, *models.Service, *models.BackupLocation) { t.Helper() sqlDB := testdb.Open(t, models.SkipFixtures, nil) + t.Cleanup(func() { + require.NoError(t, sqlDB.Close()) + }) + db := reform.NewDB(sqlDB, postgresql.Dialect, reform.NewPrintfLogger(t.Logf)) + + node, err := models.CreateNode(db.Querier, models.GenericNodeType, &models.CreateNodeParams{ + NodeName: "test-node-" + t.Name(), + }) + require.NoError(t, err) + + service, err := models.AddNewService(db.Querier, serviceType, &models.AddDBMSServiceParams{ + ServiceName: serviceName, + NodeID: node.NodeID, + Address: pointer.ToString("127.0.0.1"), + Port: pointer.ToUint16(60000), + }) + require.NoError(t, err) + + location, err := models.CreateBackupLocation(db.Querier, models.CreateBackupLocationParams{ + Name: "test_location", + BackupLocationConfig: models.BackupLocationConfig{ + FilesystemConfig: &models.FilesystemLocationConfig{ + Path: "/tmp", + }, + }, + }) + require.NoError(t, err) + backupService := &mockBackupService{} - svc := New(db, backupService) + schedulerSvc := New(db, backupService) - go svc.Run(ctx) - for !svc.scheduler.IsRunning() { + go schedulerSvc.Run(ctx) + for !schedulerSvc.scheduler.IsRunning() { // Wait a while, so scheduler is running time.Sleep(time.Millisecond * 10) } - return svc + return schedulerSvc, service, location } t.Run("invalid cron expression", func(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - svc := setup(t, ctx) + scheduler, service, location := setup(t, ctx, models.MongoDBServiceType, "mongo_service") task, err := NewMongoDBBackupTask(&BackupTaskParams{ - ServiceID: "/service/test", - LocationID: "/location/test", + ServiceID: service.ServiceID, + LocationID: location.ID, Name: "test", Description: "test backup task", DataModel: models.LogicalDataModel, @@ -69,7 +98,7 @@ func TestService(t *testing.T) { cronExpr := "invalid * cron * expression" startAt := time.Now().Truncate(time.Second).UTC() - _, err = svc.Add(task, AddParams{ + _, err = scheduler.Add(task, AddParams{ CronExpression: cronExpr, StartAt: startAt, }) @@ -79,11 +108,11 @@ func TestService(t *testing.T) { t.Run("normal", func(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - svc := setup(t, ctx) + scheduler, service, location := setup(t, ctx, models.MongoDBServiceType, "mongo_service") task, err := NewMongoDBBackupTask(&BackupTaskParams{ - ServiceID: "/service/test", - LocationID: "/location/test", + ServiceID: service.ServiceID, + LocationID: location.ID, Name: "test", Description: "test backup task", DataModel: models.LogicalDataModel, @@ -96,25 +125,25 @@ func TestService(t *testing.T) { cronExpr := "* * * * *" startAt := time.Now().Truncate(time.Second).UTC() - dbTask, err := svc.Add(task, AddParams{ + dbTask, err := scheduler.Add(task, AddParams{ CronExpression: cronExpr, StartAt: startAt, }) require.NoError(t, err) - assert.Len(t, svc.scheduler.Jobs(), 1) + assert.Len(t, scheduler.scheduler.Jobs(), 1) - findJob, err := models.FindScheduledTaskByID(svc.db.Querier, dbTask.ID) + findJob, err := models.FindScheduledTaskByID(scheduler.db.Querier, dbTask.ID) require.NoError(t, err) assert.Equal(t, startAt, dbTask.StartAt) assert.Equal(t, cronExpr, findJob.CronExpression) assert.Truef(t, dbTask.NextRun.After(startAt), "next run %s is before startAt %s", dbTask.NextRun, startAt) - err = svc.Remove(dbTask.ID) + err = scheduler.Remove(dbTask.ID) require.NoError(t, err) - assert.Len(t, svc.scheduler.Jobs(), 0) + assert.Len(t, scheduler.scheduler.Jobs(), 0) - _, err = models.FindScheduledTaskByID(svc.db.Querier, dbTask.ID) + _, err = models.FindScheduledTaskByID(scheduler.db.Querier, dbTask.ID) assert.ErrorIs(t, err, models.ErrNotFound) }) } From dd4f9cdd9ec8b3717e15adecb99d0fd2fc2a479a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 11:40:41 +0300 Subject: [PATCH 122/123] Bump github.com/bufbuild/buf from 1.24.0 to 1.25.0 in /tools (#2375) Bumps [github.com/bufbuild/buf](https://github.com/bufbuild/buf) from 1.24.0 to 1.25.0. - [Release notes](https://github.com/bufbuild/buf/releases) - [Changelog](https://github.com/bufbuild/buf/blob/main/CHANGELOG.md) - [Commits](https://github.com/bufbuild/buf/compare/v1.24.0...v1.25.0) --- updated-dependencies: - dependency-name: github.com/bufbuild/buf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- tools/go.mod | 8 ++++---- tools/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index f5cc4f13c2..060dd70031 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -8,7 +8,7 @@ require ( github.com/BurntSushi/go-sumtype v0.0.0-20190304192233-fcb4a6205bdc github.com/Percona-Lab/swagger-order v0.0.0-20191002141859-166b3973d026 github.com/apache/skywalking-eyes v0.4.0 - github.com/bufbuild/buf v1.24.0 + github.com/bufbuild/buf v1.25.0 github.com/daixiang0/gci v0.10.1 github.com/envoyproxy/protoc-gen-validate v1.0.1 github.com/go-delve/delve v1.21.0 @@ -57,13 +57,13 @@ require ( github.com/docker/cli v24.0.4+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker v24.0.4+incompatible // indirect - github.com/docker/docker-credential-helpers v0.7.0 // indirect + github.com/docker/docker-credential-helpers v0.8.0 // indirect github.com/docker/go-connections v0.4.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/go-chi/chi/v5 v5.0.8 // indirect + github.com/go-chi/chi/v5 v5.0.10 // indirect github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -165,7 +165,7 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.15.0 // indirect github.com/subosito/gotenv v1.4.2 // indirect - github.com/tetratelabs/wazero v1.2.1 // indirect + github.com/tetratelabs/wazero v1.3.0 // indirect github.com/toqueteos/webbrowser v1.2.0 // indirect github.com/vbatts/tar-split v0.11.3 // indirect github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc // indirect diff --git a/tools/go.sum b/tools/go.sum index e0aef1e684..e0d214b5ec 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -103,8 +103,8 @@ github.com/bradleyfalzon/ghinstallation/v2 v2.0.4 h1:tXKVfhE7FcSkhkv0UwkLvPDeZ4k github.com/bradleyfalzon/ghinstallation/v2 v2.0.4/go.mod h1:B40qPqJxWE0jDZgOR1JmaMy+4AY1eBP+IByOvqyAKp0= github.com/brianvoe/gofakeit v3.18.0+incompatible h1:wDOmHc9DLG4nRjUVVaxA+CEglKOW72Y5+4WNxUIkjM8= github.com/brianvoe/gofakeit v3.18.0+incompatible/go.mod h1:kfwdRA90vvNhPutZWfH7WPaDzUjz+CZFqG+rPkOjGOc= -github.com/bufbuild/buf v1.24.0 h1:36rVJMJX7BI9Z6nUPpirF+TUO9tVZ45u5VAfj5E7Bgw= -github.com/bufbuild/buf v1.24.0/go.mod h1:cacBvncWbYnUcNX580lqllR3qlEetMX/KVm27pUc4Kc= +github.com/bufbuild/buf v1.25.0 h1:HFxKrR8wFcZwrBInN50K/oJX/WOtPVq24rHb/ArjfBA= +github.com/bufbuild/buf v1.25.0/go.mod h1:GCKZ5bAP6Ht4MF7KcfaGVgBEXGumwAz2hXjjLVxx8ZU= github.com/bufbuild/connect-go v1.9.0 h1:JIgAeNuFpo+SUPfU19Yt5TcWlznsN5Bv10/gI/6Pjoc= github.com/bufbuild/connect-go v1.9.0/go.mod h1:CAIePUgkDR5pAFaylSMtNK45ANQjp9JvpluG20rhpV8= github.com/bufbuild/connect-opentelemetry-go v0.4.0 h1:6JAn10SNqlQ/URhvRNGrIlczKw1wEXknBUUtmWqOiak= @@ -160,8 +160,8 @@ github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m3 github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v24.0.4+incompatible h1:s/LVDftw9hjblvqIeTiGYXBCD95nOEEl7qRsRrIOuQI= github.com/docker/docker v24.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= -github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= +github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= +github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -189,8 +189,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= -github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.0.10 h1:rLz5avzKpjqxrYwXNfmjkrYYXOyLJd37pz53UFHC6vk= +github.com/go-chi/chi/v5 v5.0.10/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-delve/delve v1.21.0 h1:npcc8TZhdVxaMSJon+zqcE3bXM/ck8SSOOWw/id13jI= github.com/go-delve/delve v1.21.0/go.mod h1:U+OAdfhewudkHsVs/AwhfpSBu7t/NgIXH3+my4T5q78= github.com/go-delve/liner v1.2.3-0.20220127212407-d32d89dd2a5d h1:pxjSLshkZJGLVm0wv20f/H0oTWiq/egkoJQ2ja6LEvo= @@ -690,8 +690,8 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69 github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/tetratelabs/wazero v1.2.1 h1:J4X2hrGzJvt+wqltuvcSjHQ7ujQxA9gb6PeMs4qlUWs= -github.com/tetratelabs/wazero v1.2.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= +github.com/tetratelabs/wazero v1.3.0 h1:nqw7zCldxE06B8zSZAY0ACrR9OH5QCcPwYmYlwtcwtE= +github.com/tetratelabs/wazero v1.3.0/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= From e92400f7a82956cf537827ee0c609c14e21f614e Mon Sep 17 00:00:00 2001 From: Nurlan Moldomurov Date: Fri, 21 Jul 2023 13:40:25 +0300 Subject: [PATCH 123/123] PMM-7 Fix starlark test. (#2377) --- managed/Makefile | 4 ++++ managed/cmd/pmm-managed-starlark/main_test.go | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/managed/Makefile b/managed/Makefile index 9412255408..5c3722002d 100644 --- a/managed/Makefile +++ b/managed/Makefile @@ -36,6 +36,10 @@ release: ## Build pmm-managed release binaries env CGO_ENABLED=0 go build -v $(PMM_LD_FLAGS) -o $(PMM_RELEASE_PATH)/ ./cmd/... $(PMM_RELEASE_PATH)/pmm-managed --version +release-starlark: + env CGO_ENABLED=0 go build -v $(PMM_LD_FLAGS) -o $(PMM_RELEASE_PATH)/ ./cmd/pmm-managed-starlark/... + $(PMM_RELEASE_PATH)/pmm-managed-starlark --version + ARCH=$(shell uname -m) release-dev: ## Build pmm-managed binaries for development if [ $(ARCH) = "aarch64" ]; then \ diff --git a/managed/cmd/pmm-managed-starlark/main_test.go b/managed/cmd/pmm-managed-starlark/main_test.go index f52f76ce86..1eaa23d17b 100644 --- a/managed/cmd/pmm-managed-starlark/main_test.go +++ b/managed/cmd/pmm-managed-starlark/main_test.go @@ -17,10 +17,12 @@ package main import ( "bytes" + "context" "encoding/json" "os" "os/exec" "testing" + "time" "github.com/percona-platform/saas/pkg/check" "github.com/stretchr/testify/assert" @@ -103,8 +105,13 @@ func TestStarlarkSandbox(t *testing.T) { //nolint:tparallel }, } + ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second) + t.Cleanup(cancel) // since we run the binary as a child process to test it we need to build it first. - err := exec.Command("make", "-C", "../..", "release").Run() + command := exec.CommandContext(ctx, "make", "-C", "../..", "release-starlark") + command.Stdout = os.Stdout + command.Stderr = os.Stderr + err := command.Run() require.NoError(t, err) for _, tc := range testCases {